TWA でネイティブ通知を機能させようとしていますが、Digital Asset Link の検証で非常に奇妙な「ソフトフェイル」が発生しています。
以下に正確な症状を示します。
-
アプリが起動し、URL バーなしでフルスクリーンで実行されます。これはアセットリンクが部分的に機能していることを示唆しています。
-
ただし、起動するたびに**「Chrome で実行中」というトーストメッセージが表示されます**。
-
最も重要なのは、PWA が通知の許可を求めると、ネイティブ Android ダイアログではなく、ブラウザスタイルのプロンプトが表示されることです。これはネイティブ API の委任が失敗していることを証明しています。
この動作は、すべてのテストデバイス (Android 12 および 13) および Bubblewrap と Microsoft の PWABuilder の両方で生成された APK で一貫しています。
広範なデバッグの結果、クライアントサイドと公開されているサーバー構成全体が完璧であることが確認されました。問題は、Android 検証ツールにのみ影響する微妙なサーバーサイドの問題のようです。
すでに確認したこと:
-
署名キーと
assetlinks.json:android.keystoreの SHA-256 フィンガープリントは、ライブ/.well-known/assetlinks.jsonファイルのフィンガープリントと完全に一致しています。 -
サーバー応答: サーバーは、標準の Web ツールで確認したところ、
200 OKステータス、正しいapplication/jsonContent-Type、およびブロックする CORS ヘッダーなしでassetlinks.jsonURL を提供します。 -
Android アプリの構成: 生成された
AndroidManifest.xmlは正しく、標準のcom.google.browserhelper.trusted.DelegationServiceが含まれています。 -
Discourse 管理者設定:
cors originsおよびAllowed crawler user agentsの管理者セキュリティ設定は両方とも空です。
この特定の「ソフトフェイル」動作を考慮すると、私の質問は次のとおりです。
デフォルトの Discourse セルフホスト設定に、Android 検証ツールが「部分的な信頼」を付与する (フルスクリーン UI を許可する) が、ネイティブ API 委任に必要なより高いレベルの信頼を拒否するような、既知の Nginx ルール、ファイアウォール設定、または微妙なサーバー応答の問題 (わずかな遅延や非標準ヘッダーなど) はありますか?
クライアントサイドから診断できることは限界に達しました。サーバーの深い構成に関する洞察をいただけると幸いです。