GooglePlayストアからアプリが突然削除された時の対処法

解析中のPC Android開発

私が携わるプロジェクトで、タイトルの通りアプリが突然削除されました。

時系列に沿って、備忘録として書き記します。

どなたかのお役に立てると幸いです。

僕

本当にビビった……

削除から復旧までの流れ

発覚

こんな連絡がありました。

とある会社員
お客さま

GooglePlayストアでアプリを検索しても表示されないんだけど?

実際にURLを叩いても、検索してもダメでした。

そして GooglePlayConsole で確認すると、アプリが削除された旨が記載されていました。

僕

ヤベェ……!

Googleからのメッセージ

Google曰く、onReceivedSslErrorの実装に脆弱性がある」という記載がありました。

WebViewClient  |  Android Developers

この脆弱性が原因で、アプリが危険だと判断されて削除されたようです。

【補足】onReceivedSslError とは

この onReceivedSslError は、間違ったSSL証明書が使われている時にハンドリングするエラー処理です。

一般的な例でいうと、HTTPプロトコルのページをWebViewで開こうとすると「あ、このサイトHTTP通信だ!危ない!」とハンドリングする処理です。

このエラー処理では「SSL証明書が間違ったサイトにアクセスしようとしていますが、よろしいですか」などユーザに判断させる方法があります。

しかし、Googleとしては「ユーザにその判断は難しいので推奨していない」そうです。

そしてこのハンドリング処理を実装していない場合、自動的にキャンセル処理が実行されるので、実質この実装は必要ないのが現状です。

そもそも、HTTP通信は許可すべきでは無いです。

HTTPS通信がデファクトスタンダードになっているので、そもそもHTTPアクセスする必要ないだろうという考えに基づいています。

調査・確認

実際にアプリのソースコード、ライブラリ(SDK)の開発元に連絡を取り、確認しました。

アプリのソースコードはもちろん対応済み。

SDK側も「昨年に対応済みです」との回答をもらいました。

つまり 「どこにも脆弱性のある処理がないのに削除された」 という結論に至ります。

次のアクション

こうなったら、実際にGoogleに問い合わせるしかありません!

下記のリンクの一番下「メール」から問い合わせを行いました。

ログイン - Google アカウント

内容は下記のような感じです。

年末年始ということもあり、3営業日ほど見込んでいましたが、翌日の早朝には回答が来ました!

…ですが、回答は定型文で結局具体的な対応策はわかりませんでした。

Googleからの回答にあったヒント

よくよく読み返してみると、以下のような文言がありました。

製品版リリースに加えてテストや品質保証チェックに使用する他のリリースタイプ(内部テスト版、クローズドテスト版、オープンテスト版など)があれば、当該トラックも必ず更新してください。

つまり、再申請するときは、製品版の対応だけでなく他のテスト用のアプリも更新しろってことです。

めんどくさいなーと思って確認したところ、内部テストに 1年以上前のアプリが居座っていました……!

僕

これが原因だとすると、

1年以上前だから対応されてないアプリだ!!

これが原因であると判断しました。

対応

1年以上前のアプリとなると、ソースコードもライブラリももちろん異なります。

内部テストは削除することができないので、新しいリリースバージョンをダミーで作成し、蓋閉じするイメージで対応しました。

これで、バイナリ(アプリケーション)が空になっているリリースバージョンになります。

この状態で再申請したところ、無事復旧することができました。

今回の反省点

管理者メールの受信者を、お客様個人にしていました。

お客様が、逐一メール確認するのは非現実的です。

他のメールに埋もれて、削除された警告メールにも気付けません。

→メーリングリストを設定して、関係者各位にGoogleからのメールが届くようにしました。

これでGoogleからの通知をいち早く知ることができます。

今回の疑問点

事前の警告もなしに削除されていました。

通常であれば、GooglePlayConsoleに警告メッセージがあらかじめ表示されます。

しかしその警告もなしに突然削除されていました。

謎です。Consoleを定期的に開いて確認するのが安全そうですね。

まとめ

Androidは、アプリの削除理由が明確に示されません。

Googleとしては「削除された理由は教えないけど、こういうの試したらどうかな?」というスタンスです。

したがって、根本原因を見つけるのに時間がかかる上にお門違いな対応をしてしまうリスクがあります。

それに対してiOSは、少しでもポリシーに反するとリジェクトされたりするので原因特定が容易です。

Androidは知見の蓄積をするしかないというわけですね。

皆様もお気をつけて!👋

タイトルとURLをコピーしました