iframe経由でサービスワーカーを登録できます。「pushManager.subscribe」を実行しようとすると、次のようになります。
DOMException: Registration failed - permission denied
この問題は、iframe 経由の Chrome でのみ発生します。Firefoxでうまく機能します。Chromeでiframeがなくてもうまく機能します
iframe経由でサービスワーカーを登録できます。「pushManager.subscribe」を実行しようとすると、次のようになります。
DOMException: Registration failed - permission denied
この問題は、iframe 経由の Chrome でのみ発生します。Firefoxでうまく機能します。Chromeでiframeがなくてもうまく機能します
iframe は使用できません。許可されていません。
アクセス許可要求は、トップ レベル ウィンドウから実行する必要があります。
唯一の代替手段 (たとえば、Pushpad Express で使用したもの) は、リダイレクトして iframe から新しいウィンドウを開き、最上位のウィンドウから許可を求め、最後に元に戻すことです。
これは、どの Web サイトがプッシュ通知の許可を求めているかをユーザーに明確にするためのものです。そうしないと、たとえば広告にプッシュ通知のプロンプトが表示され、誤解を招く恐れがあります。
sandbox
ところで、プッシュ通知のプロンプトを許可するために s の属性に新しい値を追加することも提案しましたiframe
が、現在の仕様ではサポートされていません。
要するに、あなたはできません!Service Worker を登録するパスは、Service Worker を登録するために開かれている (最上位ドメインである) 必要があります。これを実現する 1 つの方法は次のとおりです。
iframe が次のようになっているとします。
<iframe src="https://example.com"></iframe>
postMessage を使用して iframe と通信し、許可を求めてwindow.open("https://example.com/")
から、サービスワーカーを登録してトークンを取得します。
お役に立てれば :)
Chrome では、トップ レベル ドメインからのプッシュをサブスクライブする必要があります。サブスクライブしないと、ユーザーがプッシュを許可している発信元が明確でないためです。