【解決】AndroidでWebアプリ(PWA)をホームに追加してもインストール(WebAPK登録)されずChromeショートカットになる問題と対策

記事の周囲、または記事中に【広告】が含まれます。

問題

開発したWebアプリ(PWA)を複数のAndroid端末に展開しようとしたところ、特定の端末だけ「アプリ」としてインストールされず、Chromeのショートカットとして追加されてしまう現象が発生した。

正常な端末と問題のある端末を並べると、以下の状況だった。

  • 機種:同じ
  • Androidバージョン:どちらも15
  • ChromeバージョンもPlay開発者サービスもWebViewも最新
  • アクセスするURLも同じ(同じQRコードから読み取り)
  • 正常端末はGoogleアカウントでログイン済み
  • 問題端末はGoogleアカウント未ログイン(新品のまま)

症状

  1. 「ホーム画面に追加」→「インストール」を押すと、アイコンにChromeマークが付いたショートカットになる。
  2. chrome://webapks を確認すると、正常端末には登録済みのWebAPKが表示されるが、問題端末では空のまま。
  3. ただし、フルスクリーン(standalone)での起動はされる。オフライン動作も正常。Service Workerも動いている。
  4. 他の有名PWA(Squooshなど)で試しても、同じくショートカットにしかならない。

切り分け

上記の症状3と4がポイントだった。

フルスクリーン起動できているということは、ChromeはPWAとして認識できている。manifest.jsonもService Workerも問題ない。Squooshでも同じ現象ということは、自分のアプリ固有の問題でもない。

つまり、

  • PWAとして認識する → できている
  • WebAPK(Androidアプリとして登録する)→ できていない

という状態だと判断できた。

残る有意な差分は「Googleアカウントにログインしているかどうか」だけだった。

原因

AndroidにGoogleアカウントが登録されていない状態では、WebAPKが生成されない。(ズコー)

補足すると、AndroidのChromeでPWAをインストールする際、内部では「WebAPK」という仕組みが動いている。ChromeがGoogleのサーバーにmanifest.jsonの情報を送り、一時的なAndroidアプリのパッケージを自動生成してもらう仕組みだ。この工程に、Googleアカウント(≒Google Playのシステム)が関わっている模様。

Googleは公式に「WebAPK生成にはGoogleアカウントが必須」とは案内していないが、少なくとも現在のAndroid 15・最新Chrome環境では、未ログイン状態だとWebAPK生成だけが静かに失敗し、ショートカットにフォールバックする挙動になるようだ。

対策

AndroidにGoogleアカウントを追加してからPWAをインストールすると、WebAPKとして正常に登録された。

さらに追加検証として、WebAPK化が完了した後にGoogleアカウントを端末から削除しても、WebAPKはそのまま残ることも確認できた。

つまり、Googleアカウントなしで運用したい端末でも、以下の手順を踏めばWebAPKとして展開できる。

  1. AndroidにGoogleアカウントを追加する
  2. Playストアを起動して数分待つ
  3. PWAをインストールする(WebAPK化を確認)
  4. Googleアカウントを端末から削除する

注意点

WebAPKはmanifest.jsonの内容が変更されたとき、Googleのサーバーで再生成が走る。Googleアカウントを削除した状態でこの再生成が走ると、失敗する可能性がある。アプリを大幅に更新してmanifestを変更した際は、同じ手順を再度実施する必要があるかもしれない。

まとめ

「同じ機種・同じAndroid・同じChromeなのになぜPWAにならないのか」と長時間悩んだが、原因はアプリのコードではなくGoogleアカウントの有無だった。

PWA自体は問題なく動いているのに、WebAPK化だけが静かに失敗するという挙動が厄介で、エラーメッセージも何も出ないため原因の特定に時間がかかった。同じ現象で困っている人の参考になれば嬉しい。

ちなみに、Chromeショートカット状態でもフルスクリーン起動・オフライン動作・カメラ利用などは問題なく動く。「アイコンにChromeマークが付く」「設定のアプリ一覧に出てこない」という見た目と管理上の違いはあるが、実用上は大きな支障はない、ということも付け加えておく。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA