ServiceWorker.js ファイルの制限事項
- serviceworker.js ファイルはルートディレクトリに配置されている必要があります。そうでない場合、Web Push はすべてのページで機能しません。
- Service Worker ファイルの名前が正確に serviceworker.js であることを確認してください。そうでない場合は、serviceworker の名前変更セクションを参照してください。
オプション 1: serviceworker.js ファイルを作成する
serviceworker.js という名前のファイルを作成し、ルートディレクトリに配置します。ダッシュボードのホストに応じて CDN リンクをコピーします。
次に、serviceworker.js ファイルに以下の内容を追加します。二重引用符内の文字列を、コピーしたリンクに置き換えてください。
NPM を使用している場合は、package.json ファイルにある @moengage/web-sdk 依存関係のバージョン番号を使用してください。例: @moengage/web-sdk のバージョン番号が 2.55.2 で、ダッシュボードホストが dashboard-03.moengage.com の場合、serviceworker ファイルの内容は次のようになります-
importScripts("https://cdn.moengage.com/release/dc_3/versions/2.55.2/serviceworker_cdn.min.latest.js");オプション 2: GTM(Google Tag Manager)統合の場合のみ
右クリックしてダウンロードし、ファイルをルートディレクトリに保存します。ルートディレクトリに配置しない場合は、それに応じて Serviceworker のカスタムパスや Serviceworker のスコープを指定してください。オプション 3: NPM の初期化設定で useLatest: true フラグを渡している場合
右クリックしてダウンロードし、ファイルをルートディレクトリに保存します。ルートディレクトリに配置しない場合は、それに応じて swPath や swScope を指定してください。Service Worker のカスタムファイル名の変更
ブラウザや環境に応じて serviceworker.js のファイル名を変更したい場合は、次の初期化ブロックを使用します。Service Worker のスコープ
Service Worker のスコープは、Service Worker が制御するファイル、つまり Service Worker がどのパスからのリクエストをインターセプトするかを決定します。デフォルトのスコープは Service Worker ファイルの場所であり、その配下のすべてのディレクトリに及びます。そのため、serviceworker.js がルートディレクトリにある場合、Service Worker はこのドメイン内のすべてのファイルからのリクエストを制御します。 初期化時に追加のパラメーターswScope を渡すことで、任意のスコープを設定することもできます。
例:
/a/ に設定しています。つまり、Service Worker は /a/、/a/lower/、/a/lower/lower などのページからのリクエストを制御しますが、それより上位の /a や / などのページからのリクエストは制御しません。
serviceworker スコープの回避
serviceworker.js ファイルをアプリのルートに配置できないものの、アプリ全体で利用できるようにしたい場合は、初期化時に次のスニペットのように*swScope* を渡す必要があります。
WebPush の無効化
デフォルトでは、Web Push モジュールはすべてのユーザーに対して有効になっています。使用しない場合は、明示的に無効にする必要があります。 Web プッシュ通知モジュールを無効にするには、初期化設定にdisable_web_push: true を渡します。
トラブルシューティング
登録エラー
Error in Subscription: DOMException: Registration failed - storage error というエラーが表示される場合は、コードのどこかで serviceworker.js の登録を解除しています。コードベースでunregister() を検索し、削除してください。
プッシュ通知または serviceworker.js が機能しない
次の手順に従ってください。- MoEngage の serviceworker コードを serviceworker.js ファイルに追加してください。
- MoEngage スクリプトの初期化時に、serviceworker.js ファイルのパスを指定した
swPathを追加してください。
Mac で Chrome のプッシュ通知を受信できません。
Mac OS で Chrome がフルスクリーン表示になっている場合、Chrome のプッシュ通知は表示されません。これは Mac OS での Chrome のフルスクリーン表示に関する既知の問題であり、Chrome/Apple によって修正され次第お知らせします。ユーザーが Web プッシュ通知を確認できません。
Web プッシュ通知を正しく受信して表示するには、OS の設定でブラウザの通知が有効になっている必要があります。OS レベルでブロックされている可能性があります。有効になっていることを確認してください。この場合、ブラウザは通知を表示しようとするため、イベントとインプレッションはトラッキングされます。しかし、OS によってブロックされます。次の画像を参照してください。
Web プッシュ通知をテストするにはどうすればよいですか?
Web Push キャンペーンを作成する前に、プッシュメッセージがどのように表示されるかを確認したい場合がよくあります。テストを行うには、キャンペーン作成 -> Scheduling & Goals タブ -> Test Campaign セクションで Device Push Token を使用します。Chrome ブラウザで Web サイトの Device Push Token を確認するには、次の手順に従います。- プッシュ権限を付与した Web サイトにアクセスします。
- 右クリック —> 検証
- Application タブをクリックします。
- 左ペインの Storage で、Local Storage をクリックします。
- Local Storage で、HTTPS Web サイトの URL、または HTTP Web サイトの場合は HTTPS サブドメイン(https://yourwebsite.moengage.com)をクリックします。
- MOE_DATA というキーがあります。
PUSH_TOKENフィールドを探します。対応する値をコピーし、Test Campaign セクション -> Device Push Token に貼り付けます。
Web プッシュ通知のバッジアイコンが表示されず、白い四角形としてのみ表示されます。
Android のドキュメントには、「色を含むアセットを更新または削除してください。システムは、アクションアイコンとメインの通知アイコンのアルファ以外のチャネルをすべて無視します。これらのアイコンはアルファのみであると想定してください。システムは通知アイコンを白で、アクションアイコンを濃いグレーで描画します。」と記載されています。アイコンを Android 互換の形式に変換するには-
- 任意の画像エディターで通知アイコンを開きます。
- 表示したくない画像の部分をすべて透明なピクセルに変換します。すべての色と透明でないピクセルは白で表示されます。そのため、アルファチャネル(白黒)の画像のみがサポートされ、RGB 画像はサポートされません。
- 画像の解像度は 72x72 以上である必要があります。
- 画像は次のいずれかのファイル形式でのみ保存してください- png、gif、webp、ico、cur、bmp