OneSignalSDKWorker.js)は、ウェブプッシュ通知に必要な、サーバーでホストされる JavaScript ファイルです。ユーザーがページを離れている場合でも、サイトが通知を受信・表示できるようにします。

WordPress プラグインをご使用の場合、service worker は自動的に追加されます。このガイドをスキップして WordPress セットアップに戻ってください。
Service worker のセットアップ
以下の手順で、OneSignal プッシュ通知専用のOneSignalSDKWorker.js ファイルを作成します。これが推奨のセットアップです。サイトに既に service worker があり、単一ファイルを使用したい場合は、代わりに複数の service worker の結合をご参照ください。
ステップ 1:OneSignalSDKWorker.js をダウンロードまたは作成する
Web SDK セットアップ中に OneSignal ダッシュボードからファイルをダウンロードするか、GitHub からダウンロードしてください。 または、OneSignalSDKWorker.js という名前のファイルを作成し、以下の 1 行のコードを記述します:
必要に応じてファイルを名前変更できます(例:
onesignalsdkworker.js)。その場合、このガイド内の OneSignalSDKWorker.js をご自身のファイル名に置き換えてください。ステップ 2:Web サーバーにアップロードする
OneSignalSDKWorker.js をサーバーに配置し、HTTPS で公開アクセスできるようにします。ファイルへのアクセスに認証やログインが必要であってはなりません。
推奨: ページを提供しない専用のサブディレクトリ(例:/push/onesignal/)にファイルをホストします。これにより、サイト上の他の service worker(PWA や AMP の service worker など)との競合を避け、URL パスを安定させることができます。
- 例:
https://yoursite.com/push/onesignal/OneSignalSDKWorker.js
https://yoursite.com/OneSignalSDKWorker.js)でファイルを検索します。ルートディレクトリにファイルをアップロードできますが、ルートスコープを必要とする他の service worker と競合する可能性があります。例えば、PWA を使用している場合は、OneSignalSDKWorker.js をサブディレクトリに配置してください。
ステップ 3:ファイルにアクセスできることを確認する
ブラウザでファイルの URL に移動します(例:https://yoursite.com/push/onesignal/OneSignalSDKWorker.js)。
ステップ 1 の importScripts 行が表示されるはずです:

ステップ 4:SDK パスを設定する(サブディレクトリのみ)
ファイルをサイトルートに配置した場合、追加の設定は不要です——ステップ 5 にスキップしてください。 ファイルをサブディレクトリに配置した場合、SDK にその場所を伝えます:一般的なサイト設定
- OneSignal ダッシュボードで、設定 > Push & In-App > Web 設定に移動します。
- 高度なプッシュ設定で、service worker のパスとファイル名をカスタマイズを有効にします。

| フィールド | 説明 | 例 |
|---|---|---|
| Path to service worker files | OneSignalSDKWorker.js がホストされているディレクトリ。 | /push/onesignal/ |
| Service worker filename | .js ファイルの名前。 | OneSignalSDKWorker.js |
| Service worker registration scope | service worker が制御する URL パス。ファイルがホストされているディレクトリ以下でなければなりません。ユーザー向けページを提供しないパスを使用してください。 | /push/onesignal/ |
カスタムコードセットアップ
OneSignal.init() 呼び出しで serviceWorkerPath と serviceWorkerParam を渡します:
HTML
| パラメータ | 説明 | 例 |
|---|---|---|
serviceWorkerPath | サイトルートから .js ファイルへの相対パス(先頭のスラッシュなし)。 | "push/onesignal/OneSignalSDKWorker.js" |
serviceWorkerParam.scope | service worker が制御する URL パス。ファイルがホストされているディレクトリ以下でなければなりません。ユーザー向けページを提供しないパスを使用してください。 | "/push/onesignal/" |
ステップ 5:service worker の要件を確認する
OneSignalSDKWorker.js ファイルは以下のすべての要件を満たす必要があります。いずれかが満たされない場合、プッシュ通知は機能しません。
| 要件 | 詳細 |
|---|---|
| 公開アクセス可能 | ブラウザでファイルの URL に移動し、JavaScript コードが表示されることを確認してください。 |
| 正しいコンテンツタイプ | サーバーは Content-Type: application/javascript; charset=utf-8 を返す必要があります。 |
| 同一オリジン | ファイルはサイトと同じドメインでホストされる必要があります。CDN とサブドメインは使用できません。MDN:ワーカーの登録をご参照ください。 |
| HTTPS | Service worker はセキュアなコンテキストを必要とします。開発中は localhost のみが例外です。 |
Service worker のセットアップが完了しました。次のステップについては Web SDK セットアップガイドに戻ってください。
複数の service worker の結合
サイト上の各 service worker ファイルはスコープ(どのページを制御するかを決める URL パス)に登録されます。特定のスコープでアクティブにできる service worker は 1 つだけです。既に service worker(例:PWA やキャッシュワーカー)があり、OneSignal が同じファイルを共有するようにしたい場合は、結合できます。 結合するには、OneSignal のimportScripts 行を既存の service worker ファイルに追加します:
移行ガイド
このセクションは、service worker ファイルのパス、ファイル名、またはスコープを変更する必要がある既存の OneSignal ユーザー向けです。現在の設定を変更する特定の理由がない限り、これらの手順に従わないでください。service worker を移行する時期と方法
service worker を移行する時期と方法
移行の理由:ステップ 4:SDK パスの設定の説明に従い、ダッシュボードまたは オプション 2:ファイル名またはファイルの場所を変更するファイル名やディレクトリの変更はより複雑です。ブラウザは元々登録された URL から service worker を取得するためです。サイトを再訪していないサブスクライバーは古い URL を参照し続けます。ファイルに OneSignal コードのみが含まれる場合ファイルに OneSignal + その他のコードが含まれる場合上記のオプション 1:スコープのみを変更するの手順に従ってください。プロセスは同じです。
- ルートスコープの OneSignal service worker がプログレッシブウェブアプリ(PWA)と競合している
- Service worker が AMP または別のキャッシュ service worker と競合している
- セキュリティポリシーによりルートスコープでのサードパーティ service worker コードが禁止されている
OneSignalSDKWorker.js に以下のみが含まれることを確認します:serviceWorkerParam を使用してスコープを更新します。他の変更は不要です。ファイルに OneSignal + その他のコードが含まれる場合Service worker に追加の importScripts 呼び出しが含まれている可能性があります(例:複数の service worker の結合ガイドに従った場合)。現在のセットアップが正常に機能している場合は、そのままにしてください——マージされた service worker の分割には 2 段階のロールアウトが必要です。分離が必要な場合:新しい専用 OneSignal service worker を作成する
サブディレクトリ(例:
/push/onesignal/)に、以下のみを含む OneSignalSDKWorker.js を作成します:OneSignal の設定を更新する
ステップ 4:SDK パスの設定の説明に従い、ダッシュボードまたは
OneSignal.init() を使用して新しいパスとスコープを設定します。クリーンアップ
選択した保持期間より古い非アクティブユーザーを削除し、元の service worker ファイルから OneSignal
importScripts 行を削除します。OneSignal の設定を更新する
ステップ 4:SDK パスの設定の説明に従い、新しいパス、ファイル名、スコープを設定します。
クリーンアップ
保持期間より古い非アクティブユーザーを削除し、古いファイルを削除します。
よくある問題
service worker が 404 を返すのはなぜですか? SDK が期待する URL にファイルがありません。ブラウザで完全なファイル URL に移動して、アクセスできることを確認してください。ファイルをサブディレクトリに配置した場合は、serviceWorkerPath(カスタムコード)またはダッシュボードのパス設定が、ディレクトリとファイル名を含む実際のファイルの場所と一致していることを確認してください。
service worker ファイルを移動した後、通知が表示されないのはなぜですか?
既存のサブスクライバーは古い service worker URL を参照し続けています。ブラウザはプッシュが到着するたびに登録済みの URL を取得します(最大 24 時間キャッシュ)。古い URL が 404 を返す場合、それらのサブスクライバーは通知を受け取れません。サブスクライバーがサイトを再訪することで自然に移行するまで、少なくとも 1 年間古いファイルのホスティングを続けてください。移行ガイドとウェブプッシュ通知が表示されないガイドをご参照ください。
CDN またはサブドメインで service worker をホストできますか?
いいえ。ブラウザは service worker がそれを登録するページと同じオリジンから提供されることを要求します。ファイルはプライマリドメインに存在する必要があります——CDN、サブドメイン、または別のドメインは使用できません。
PWA が OneSignal service worker と競合するのはなぜですか?
両方がルートスコープ(/)に登録されている可能性があり、特定のスコープに登録できる service worker は 1 つだけです。OneSignal service worker をサブディレクトリスコープ(例:/push/onesignal/)に移動して PWA がルートスコープを保持できるようにするか、複数の service worker の結合の説明に従って service worker を結合してください。
OneSignalSDKWorker.js ファイルの名前を変更できますか?
はい。サーバーが特定の命名規則(例:すべて小文字)を要求する場合、ファイルを onesignalsdkworker.js のような名前に変更できます。その場合、OneSignal の設定でファイル名を更新してください——ダッシュボードの Service worker filename フィールド、または OneSignal.init() 呼び出しの serviceWorkerPath パラメータのいずれかで。詳細はステップ 4をご参照ください。
service worker ファイルに対してサーバーが返すべきコンテンツタイプは何ですか?
サーバーは Content-Type: application/javascript; charset=utf-8 を返す必要があります。一部のサーバーまたは CDN の設定では誤った MIME タイプが返される場合があり、ブラウザが service worker の登録を拒否する原因となります。