Your app (iOS) status is Removed From Saleメールの対処法と学び
スマホがうんうんと何度も唸っていたのでメールボックスを開いてみたら、「Your app (iOS) status is Removed From Sale」というタイトルのiTunes Storeからのメールに蹂躙されていた。
Contents
削除予告メール受信から30日以内にアプリを修正・提出しないとApp Storeから削除される
以前低品質又は名前が長いiOS,iPhone,iPadアプリがApp Storeから削除されるというところに書いたように、3年くらい前程度の古い時期にリリースしたアプリは機械的にこうやって削除対象に選定されてしまうので、それにしたがって改めてアプリを作り直して提出する必要がある。
で、今までこういうメールがアップルのreview teamから来た際はちゃんと修正して提出し、合格をもらっていたので全く削除されることはなかったのだけど、今回は5件ほど選定されて全部放置してたら、メール受信の32日後に本当に削除された。
30日後ちょうどではなかったのは、30日のその日が土曜日という休日だったからだと思われる。
削除されると、標記のようなタイトルのメールが来る。
さらにメールボックスをよく見ると、駄目押しのように「Your app, **, has been removed from the App Store.」というメールが直後に来ていることもわかった。
最初の「Your app (iOS) status is Removed From Sale」というメールだけでも、ああ削除されてしまったんだな、と用件が十分に理解できるほど明快なメールなはずなのに、確認するように「Your app, **, has been removed from the App Store.」というメールが送られて来る。
1件目で「アプリは削除されたからね」と言っておいて、すぐまた2件目で「アプリは削除されたから」と念押しをして来るあたり、非常に丁寧である。
その丁寧さが逆に、私という人間がダメ、ということを2回言われているようで2倍凹む。
これが合計5つ分のアプリに対して送られて来るので、10件の「removed」というテンションを下げるメールがメールボックスを蹂躙して来るものだから、テンションは10倍がた落ちである。
そして実際にiTunes Connectに行くと、こういう風に「ストアから削除済み」というステータスに変わっている。
まあこうなったからと言って全然焦る必要はなく、その対処法は単純にバージョンアップさせたバイナリを提出すればいいだけであるので、別に30日以内に慌てて修正しなくてもいいと思う。
アプリだけで生計を立てている人は焦るだろうけど。
修正と言っても別に新しい機能を追加しなきゃいけないとか高いハードルを課されているわけではなくて、単にバージョンを1.0から1.0.1に上げて全くソースコードを変更していないアプリを提出すれば普通に合格するし、審査のスピードも、通常の新規アプリよりもずっと早い。
修正版を提出してから次の日には合格して並ぶ。
じゃあなぜ今回は修正を行わなかったか。
アプリを作った際のソースコード、バイナリ、プロジェクトは保存しておいた方がいい
まさにこれで、要するに3年前のプロジェクトをなくしていた。
今まではちゃんと保存していたのだけど丁度この時期に作っていたアプリに関してはどうもゴミ箱に捨ててしまったらしく、どこにも見当たらない。
「まあ合格してしまえば当分手直ししないだろうし、手直しする際も1からプログラムを書き直せばプログラミングの復習になるじゃん」とか前向きに考えて捨てたのだろうけど、実際手直ししなければならない時になって1から書き直すとか面倒くさい。
まあ保存していたとしても、swift使ってるとobjective-cのことなんか忘れてるし、同じswiftであっても1年周期くらいでバージョンアップされてしまうから、昔のコード読むのとか面倒なんだけど。
xcode自体の仕様も変わってしまうし。
しかしやっぱりたたき台があった方が捗るし修正するモチベーションも上がるので、やっぱ保存しておいた方がいい。管理は重要。
解決策として、iTunes Connectから提出済みのバイナリをダウンロードしてローカルで修正できたらいいのになとは思う。
Command /usr/bin/codesign failed with exit code 1の解決法
そして過去のプロジェクトが残っていたとしても「Command /usr/bin/codesign failed with exit code 1」が我々を苦しめる。
実は5件中1件だけ過去のプロジェクトファイルが残っていたので、それを元に修正を試みたところ、やっぱり古いファイルにありがちなこのエラーが出てしまう。
これ、Provisioning Profileが合ってないとか証明書が古いとかキーチェーンアクセスがどうこうとかでネット上に日本語英語問わずたくさん情報があるので色々試したのだけど全く解決できない。
というわけで結局、新規で同じbundle nameのプロジェクトを作って、ソースコードとか画像とか全てのファイルをそのまま古いのから新しいプロジェクトにコピペして解決した。
そういうわけで全てエラーなく修正して提出したのだけど、運が悪いと次のエラーに遭遇して二進も三進もいかなくなる。
Your app crashed on iPad and iPhone running iOS 10.*.* connected to an IPv6 network.にハマると終わる
さあ運が悪いとこれで終了。
詳しくはIPv6に接続したiOSでクラッシュする理由でアプリリジェクト(Xcode)で書いた通りであり、こうなるともはや手の打ちようがない。
一部のボタンを押すとクラッシュするみたいなリジェクト理由を審査官にもらった場合にはその機能だけを落とすとかすれば審査に通るけど、具体的にどの機能が原因でアプリが落ちるかどうかを教えてもらえない場合にはもはや手の打ちようがなかった。
自分の環境では普通に動作してるし。
なんとなく審査官ごとの裁量によって通るか通らないか差があるような気がしていて、厳しい人に当たると運が悪く拒絶されるというような感触も否めない。
こうなったら時間をおいてまた新しいバイナリを提出してみると、別の人が審査してくれて合格するのではないかとか考えたりするのだけど、面倒臭いのでまだ試したことはない。