私が携わるプロジェクトで、タイトルの通りアプリが突然削除されました。
時系列に沿って、備忘録として書き記します。
どなたかのお役に立てると幸いです。

本当にビビった……
削除から復旧までの流れ
発覚
こんな連絡がありました。

GooglePlayストアでアプリを検索しても表示されないんだけど?
実際にURLを叩いても、検索してもダメでした。
そして GooglePlayConsole で確認すると、アプリが削除された旨が記載されていました。

ヤベェ……!
Googleからのメッセージ
Google曰く、「onReceivedSslError
の実装に脆弱性がある」という記載がありました。

この脆弱性が原因で、アプリが危険だと判断されて削除されたようです。
【補足】onReceivedSslError とは
この onReceivedSslError
は、間違ったSSL証明書が使われている時にハンドリングするエラー処理です。
一般的な例でいうと、HTTPプロトコルのページをWebViewで開こうとすると「あ、このサイトHTTP通信だ!危ない!」とハンドリングする処理です。
このエラー処理では「SSL証明書が間違ったサイトにアクセスしようとしていますが、よろしいですか」などユーザに判断させる方法があります。
しかし、Googleとしては「ユーザにその判断は難しいので推奨していない」そうです。
そしてこのハンドリング処理を実装していない場合、自動的にキャンセル処理が実行されるので、実質この実装は必要ないのが現状です。
そもそも、HTTP通信は許可すべきでは無いです。
HTTPS通信がデファクトスタンダードになっているので、そもそもHTTPアクセスする必要ないだろうという考えに基づいています。
調査・確認
実際にアプリのソースコード、ライブラリ(SDK)の開発元に連絡を取り、確認しました。
アプリのソースコードはもちろん対応済み。
SDK側も「昨年に対応済みです」との回答をもらいました。
つまり 「どこにも脆弱性のある処理がないのに削除された」 という結論に至ります。
次のアクション
こうなったら、実際にGoogleに問い合わせるしかありません!
下記のリンクの一番下「メール」から問い合わせを行いました。
内容は下記のような感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
○月○日(○) に、弊社の ○○アプリが GooglePlay ストアから削除されました。 その対策として下記の記事を参照いたしました。 https://support.google.com/faqs/answer/7071387 『1つ以上のアプリに onReceivedSslError ハンドラの安全でない実装が含まれているため…』という記載がございましたが、該当アプリのソースコードには『onReceivedSslError ハンドラ』の実装はしておりませんでした。 この『onReceivedSslError ハンドラ』の実装が無いことが問題となっているのでしょうか。 これまで何度かアプリをリリースしておりましたが、特に問題なくリリース出来ておりました。 お手数ですが、ご確認のほどよろしくお願い致します。 |
年末年始ということもあり、3営業日ほど見込んでいましたが、翌日の早朝には回答が来ました!
…ですが、回答は定型文で結局具体的な対応策はわかりませんでした。
Googleからの回答にあったヒント
よくよく読み返してみると、以下のような文言がありました。
製品版リリースに加えてテストや品質保証チェックに使用する他のリリースタイプ(内部テスト版、クローズドテスト版、オープンテスト版など)があれば、当該トラックも必ず更新してください。
つまり、再申請するときは、製品版の対応だけでなく他のテスト用のアプリも更新しろってことです。
めんどくさいなーと思って確認したところ、内部テストに 1年以上前のアプリが居座っていました……!

これが原因だとすると、
1年以上前だから対応されてないアプリだ!!
これが原因であると判断しました。
対応
1年以上前のアプリとなると、ソースコードもライブラリももちろん異なります。
内部テストは削除することができないので、新しいリリースバージョンをダミーで作成し、蓋閉じするイメージで対応しました。
これで、バイナリ(アプリケーション)が空になっているリリースバージョンになります。
この状態で再申請したところ、無事復旧することができました。
今回の反省点
管理者メールの受信者を、お客様個人にしていました。
お客様が、逐一メール確認するのは非現実的です。
他のメールに埋もれて、削除された警告メールにも気付けません。
→メーリングリストを設定して、関係者各位にGoogleからのメールが届くようにしました。
これでGoogleからの通知をいち早く知ることができます。
今回の疑問点
事前の警告もなしに削除されていました。
通常であれば、GooglePlayConsoleに警告メッセージがあらかじめ表示されます。
しかしその警告もなしに突然削除されていました。
謎です。Consoleを定期的に開いて確認するのが安全そうですね。
まとめ
Androidは、アプリの削除理由が明確に示されません。
Googleとしては「削除された理由は教えないけど、こういうの試したらどうかな?」というスタンスです。
したがって、根本原因を見つけるのに時間がかかる上にお門違いな対応をしてしまうリスクがあります。
それに対してiOSは、少しでもポリシーに反するとリジェクトされたりするので原因特定が容易です。
Androidは知見の蓄積をするしかないというわけですね。
皆様もお気をつけて!👋