代替方法: OneSignal Web SDK はデフォルトでサイトルート(https://yoursite.com/OneSignalSDKWorker.js)でファイルを検索します。ルートディレクトリにファイルをアップロードできますが、ルートスコープを必要とする他の service worker と競合する可能性があります。例えば、PWA を使用している場合は、OneSignalSDKWorker.js をサブディレクトリに配置してください。
永続的な URL パスを選択してください。ブラウザが特定の URL に service worker を登録した後、その URL を変更するには移行が必要です。
サイト上の各 service worker ファイルはスコープ(どのページを制御するかを決める URL パス)に登録されます。特定のスコープでアクティブにできる service worker は 1 つだけです。既に service worker(例:PWA やキャッシュワーカー)があり、OneSignal が同じファイルを共有するようにしたい場合は、結合できます。
service worker を別々のスコープを持つ別々のファイルに保持する方が、保守が容易で競合を回避できます。セットアップで単一の service worker ファイルが必要な場合にのみ結合してください。
結合するには、OneSignal の importScripts 行を既存の service worker ファイルに追加します:
ファイルに OneSignal + その他のコードが含まれる場合Service worker に追加の importScripts 呼び出しが含まれている可能性があります(例:複数の service worker の結合ガイドに従った場合)。現在のセットアップが正常に機能している場合は、そのままにしてください——マージされた service worker の分割には 2 段階のロールアウトが必要です。分離が必要な場合:
1
既存のファイルに保持コメントを追加する
現在の service worker 内の OneSignal importScripts 行の上に追加します:
// KEEP until YYYY-MM-DD: Required for push delivery to subscribers who have not revisited.importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
新規訪問者と再訪問者は自動的に新しい service worker に登録されます。既存のサブスクライバーの大部分がサイトを再訪するまで、少なくとも 1 年待ちます。
5
クリーンアップ
選択した保持期間より古い非アクティブユーザーを削除し、元の service worker ファイルから OneSignal importScripts 行を削除します。
オプション 2:ファイル名またはファイルの場所を変更するファイル名やディレクトリの変更はより複雑です。ブラウザは元々登録された URL から service worker を取得するためです。サイトを再訪していないサブスクライバーは古い URL を参照し続けます。
元のファイルを古い URL で少なくとも 1 年間ホストし続ける必要があります。削除すると、ブラウザが service worker を更新しようとする際に 404 エラーが発生し、影響を受けたサブスクライバーは通知を受け取れなくなります。
ファイルに OneSignal コードのみが含まれる場合
1
古いファイルに保持コメントを追加する
// KEEP until YYYY-MM-DD: Required for push delivery to subscribers still on the old service worker URL.importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
両方がルートスコープ(/)に登録されている可能性があり、特定のスコープに登録できる service worker は 1 つだけです。OneSignal service worker をサブディレクトリスコープ(例:/push/onesignal/)に移動して PWA がルートスコープを保持できるようにするか、複数の service worker の結合の説明に従って service worker を結合してください。