メインコンテンツへスキップ

概要

OneSignalは、サイトでWeb SDKがアクティブな場合、ブラウザの開発者ツールコンソールで詳細なエラーメッセージを提供します。 トラブルシューティングの前に、Web SDKセットアップを再確認して次を確認してください:
  • OneSignal JavaScriptスニペットがサイトの<head>に配置されています。
  • Service WorkerファイルがルートディレクトリHTTPS経由でアクセス可能です。
以下の手順に従って、一般的な問題をデバッグし、統合が正しく機能していることを確認してください。

初期トラブルシューティング手順

1

クリーンなブラウザプロファイルでテスト

新しいブラウザプロファイルでWebサイトを開きます。
  • ChromeまたはFirefoxの最新バージョンを使用します。
  • プッシュはシークレット/プライベート/ゲストモードでは機能しません
  • サポートされているブラウザリストを確認してください。
2

ブラウザ開発者ツールを開く

F12を押すか、右クリックして「検証」を選択するか、表示 > 開発者 > JavaScriptコンソールに移動して、開発者コンソールを起動します。
3

サブスクライブを試みてエラーを観察

サイトへのサブスクライブを試み、コンソールでエラーを確認します。次に、以下のリストに対してエラーを照合してガイダンスを得ます。

ブラウザの開発者ツールを開いてエラーを検証


一般的なエラーメッセージと解決策

Service Workerエラー(403、404)

[Service Worker Installation] Installing service worker failed TypeError: Failed to register a ServiceWorker for scope (‘https://www.yoursite.com/’) with script (‘https://www.yoursite.com/...’): A bad HTTP response code (403) was received when fetching the script.

Service Workerインストールエラーの例

403または404 Service Workerエラーが表示された場合、Service Workerファイルがブロックされているか、リダイレクトされているか、欠落している可能性があります。
  • ファイルの可用性を確認
    • ブラウザでService WorkerファイルのURLにアクセスします。OneSignalダッシュボードのSettings > Push & In-app > Webでパスを確認できます。
    • パスの例:
      • https://yoursite.com/OneSignalSDKWorker.js
      • https://yoursite.com/push/onesignal/OneSignalSDKWorker.js
    • WordPressを使用している場合、パスは:
    • https://yoursite.com/wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/OneSignalSDKWorker.js
  • これらが403/404を返すかリダイレクトする場合、プッシュセットアップは機能しません。
  • ファイル名は大文字と小文字が区別され、公開アクセス可能である必要があります。
正しいセットアップを確認するには、Service Workerセットアップガイドを参照してください。

サポートされていないMIMEタイプ

  • Service Workerはapplication/javascriptとして提供する必要があります。
  • 別のMIMEタイプ(たとえば、text/html)でファイルを提供すると、登録が失敗します。

Service WorkerのMIMEタイプエラー

リダイレクトは許可されていません

  • OneSignal SDKファイルはリダイレクトしてはいけません。
  • サイトと同じオリジンでホストする必要があります(CDNまたはプロキシドメインは不可)。

コンソールのリダイレクトエラー

Web Push設定は正しいサイトオリジンでのみ使用できます

  • 現在のドメインがOneSignalダッシュボードで設定されたサイトURLと一致しません。
  • プロトコル、ドメイン、サブドメインが完全に一致する必要があります。

サイトオリジンの不一致エラー

OneSignalはすでに定義されています

  • SDKが複数回初期化されています。これは、WordPressプラグインのセットアップと手動コードを組み合わせることが原因であることがよくあります。

重複するSDK初期化エラー


モバイルウェブプッシュのトラブルシューティング

iOS - 要件については、iOSのSafari Web Pushを参照してください。 Android - ウェブプッシュは、サポートされているブラウザを使用して、Androidモバイルデバイスで自動的に機能します。
  1. モバイルでテストする前に、まずデスクトップでサイトが動作することを確認してください。
  2. Android Webで既にサブスクライブしている可能性がありますが、ダッシュボードではモバイルWebサブスクライバーとデスクトップWebサブスクライバーを区別しません。Android Webサブスクライバーは、「Subscriptions」ページのDeviceカラムにLinux armv8lとして表示されます。
  3. ブラウザアプリで通知が有効になっているかを確認します。たとえば、ChromeのAndroid Settings > Application Manager > Chromeで、「通知を表示」がチェックされていることを確認します。
  4. キャッシュをクリアします。モバイルでブラウザキャッシュがいっぱいになっている場合、さらなるプロンプトまたはサブスクリプションが許可されない可能性があります。
  5. 一部のユーザーは、ブラウザアプリをアンインストールして再インストールすることで、プロンプトが表示されない問題が修正されたと報告しています。

Safariトラブルシューティング

  1. Safari Configで設定されたサイトURLは、サイトにアクセスしたときに表示されるものと完全に一致する必要があります。たとえば、ブラウザにhttps://www.yoursite.comと表示されている場合、これをセットアップフィールドに追加する必要があります。wwwありとwwwなしのサイトは異なるオリジンです。
  2. Safari 12.1+は、ユーザーがプロンプトを表示される前にサイトで何らかのアクションを実行する必要があるという新しいルールを作成しました
Safariではスライドプロンプトを使用する必要があります。これが、Typical Setupを使用すると、スライドプロンプトが常にネイティブの前に表示される理由です。 ネイティブブラウザプロンプトのみを使用する場合は、ユーザーアクションを検出するための独自のトリガーを設定する必要があります。次に、Web SDKメソッドを呼び出してプロンプトをトリガーします。
  1. 最後に、キャッシュをクリアしてプッシュ権限をリセットして、初めてのユーザーとしてサイトを表示し、再度サブスクライブしてみてください。

Safariアイコンまたはサイト名が変更されない

SafariのカスタムWebプッシュ実装により、サイト名とアイコン画像は、ユーザーのコンピューターにダウンロードされてローカルに保存される静的リソースとして扱われます。新しいサイト名と新しい画像は更新またはダウンロードされません。 残念ながら、これらの古いリソースでサブスクライブしている人は、キャッシュをクリアしてプッシュ権限をリセットし、サイトに戻って再サブスクライブする必要があります。

キャッシュをクリアしてプッシュ権限をリセット

詳細については、キャッシュをクリアしてプッシュ権限をリセットを参照してください。

ブラウザ開発者ツールを使用したデバッグ

ブラウザの開発者ツールを使用して、Webページ上のWeb SDKと対話し、ロギングを有効にしたり、自分自身にテスト通知を簡単に送信したりできます。
1

ブラウザ開発者ツールコンソールにアクセス

開発者コンソールへのアクセス

デスクトップデバッグ:
  • Chrome:ページを右クリックし、検証をクリックし、開いたポップアップウィンドウのコンソールタブをクリックします。
  • Firefox:ページを右クリックし、要素を調査をクリックし、開いたポップアップウィンドウのコンソールタブをクリックします。
  • SafariSafari → 環境設定 → 詳細に移動し、メニューバーに開発メニューを表示がチェックされていることを確認します。次に、Webページで右クリックし、要素を調査をクリックし、開いたポップアップウィンドウのコンソールタブをクリックします。
Androidデバッグ:
  • Android上のChromeUSBデバッグを有効にする、デバイスをコンピューターに接続し、デスクトップChromeブラウザでchrome://inspect#devicesを使用してDev Toolsにアクセスします。
  • Android上のFirefoxUSBデバッグを有効にする、デバイスをコンピューターに接続し、デスクトップFirefoxブラウザでabout:debuggingを使用してDev Toolsにアクセスします。
2

Web SDKロギングを有効化

開発者ツールコンソールでコマンドを実行できるようになります。次のコードを実行します:
OneSignal.Debug.setLogLevel('trace');
結果としてundefinedが表示されるはずです。次のように表示された場合:
Uncaught ReferenceError: OneSignal is not defined(…) ReferenceError: OneSignal is not defined
OneSignalがWebページでアクティブではないか、topフレームコンテキストに切り替える必要があります(上のスクリーンショットを参照)。これで、Web SDKのデバッグロギングが有効になったので、タブを閉じて同じページの新しいタブを開いてください(SDKイベントの一部をトリガーするには、ページを更新するだけでは不十分です)。コンソールに多くの出力が表示されるはずです。

詳細なSDKログを含むコンソール

次のコードを入力することで、この追加ロギングをいつでも無効にできます:
OneSignal.Debug.setLogLevel('warn');
3

サブスクライブしているかを確認

コンソールで実行:
function getUserInfo() {
	console.log('getUserInfo()');
	Promise.all([
		OneSignal.Notifications.permission,
		OneSignal.User.PushSubscription.id,
		OneSignal.User.PushSubscription.token,
		OneSignal.User.PushSubscription.optedIn,
		OneSignal.context.serviceWorkerManager.getActiveState(),
	])
		.then(
			([
				isSubscribed,
				subscriptionId,
				pushToken,
        optedIn,
				serviceWorkerActive,
			]) => {
        console.log('What is the current URL of this page?', location.href);
         console.log(
					"Is a service worker registered and active? (should be false on Safari, otherwise should be 'OneSignal Worker')?",
					serviceWorkerActive
				);
        console.log('')
        console.log('Are you subscribed, in the browser?', isSubscribed)
        console.log('Are you opted-in, in OneSignal?' , optedIn);
				console.log('');
				console.log('What is your OneSignal Subscription ID?', subscriptionId);
				console.log('What is your Push Token?', pushToken);

			}
		)
		.catch(e => {
			console.error('Issue determining whether push is enabled:', e);
		});
}
getUserInfo();
サブスクライブしているかどうかによって、以下のような表示が表示されます:
What is the current URL of this page? http://localhost:8080/
Is a service worker registered and active? (should be false on Safari, otherwise should be 'OneSignal Worker')? OneSignal Worker

Are you subscribed, in the browser? true
Are you opted-in, in OneSignal? true

What is your OneSignal Subscription ID? 22ff6b0d-60e1-469d-b667-005274204322
What is your Push Token? https://fcm.googleapis.com/fcm/send/drKvxiBc9Eo:APA91bFoa88bzkuudYFmuyNb8uIA60dI44SnBbXi0_4GAYa2Ln07XzrOs1-k5KVxrwKf8oVxBvzIXVN-44bamCRkaQ6cFODy7-8slGgnV3i2OqS3EgYrzU6VcO1KZaBHacsZhqvWqIRv
4

テスト通知を自分自身に送信

サブスクライブしている場合のみ(上記のセクションを参照)、テスト通知を自分自身に送信できます。詳細については、テストサブスクリプションの検索と設定を参照してください。
  • オペレーティングシステムレベルで通知をブロックしていないことを確認してください。
  • 通知が表示されない:Web Pushを参照してください。

Chrome通知を受信しないことのデバッグ

注: これらの手順を順番に完了してください。
1

上記の手順1〜4に従ってテスト通知の受信を試みる

  • 手順#3の場合、サブスクライブしていますか? そうでない場合は、ここで停止し、これらの特定の指示に従ってサイトデータを完全にクリアしてから、通知を受信するためにサイトに再サブスクライブします。実際にサブスクライブしていることを確認するために、後で手順#3を再度実行します。サイトデータをクリアする指示に従うときは、サイトへのすべてのタブを閉じるか、ブラウザを再起動することを忘れないでください。Chromeは、サイトへの既存のタブがすべて閉じられるまで、サイトのストレージへのアクセスを防ぎます。
  • 手順#4の場合、テスト通知を受信しましたか? 受信した場合、完了です!
2

OneSignalダッシュボードの配信ページを確認

サブスクライブしているのにテスト通知を受信しなかった場合は、OneSignalダッシュボードの配信ページにアクセスして、自分自身に送信したテスト通知が上部に表示されているかどうかを確認してください。
3

chrome://gcm-internalsを使用してメッセージ配信を確認

サブスクライブしており、テスト通知を受信しなかったが、メッセージが配信された(緑色)ことがわかる場合は、Chromeでchrome://gcm-internalsを開いてください。左上の「Start Recording」ボタンをクリックします。「Connection State: CONNECTED」と表示されることを確認してください。これを開いたままにして、プッシュを自分自身に送信します(上記の手順#4に従ってテスト通知を自分自身に送信します)。受信した場合、「Receive Message Log」に何かが表示されるはずです。

GCM内部ロギング

  • 「Data msg received」が表示されない場合、Chromeブラウザは通知をまったく受信していません。これについてサポートにお知らせください。
  • 「Data msg received」が表示されているのに通知を受信しなかった場合は、手順#4に進みます。
4

chrome://serviceworker-internalsを使用してService Workerをデバッグ

chrome://serviceworker-internalsにアクセスします。Scope: https://your-site.comを検索します。以下のように、Inspect、または_Start -> Inspect_をクリックします。Chrome Developer Toolsポップアップが表示されます。

Service Workerの検証

Service WorkerへのChrome Developer Toolsポップアップで、_Console_タブをクリックし、OneSignalWorker.log.trace();を実行します。undefinedを返すはずです。Service Workerからのすべてのメッセージがこのポップアップに表示されるようになります。
5

コンソール出力をキャプチャしてサポートに連絡

Service WorkerのDev Toolsポップアップからメインページの開発者ツールコンソール(手順2で使用したものと同じ)に切り替えます。 別のテスト通知を自分自身に送信します。それでも通知が表示されない場合は、コンソール出力で新しいエラーまたはメッセージを確認してください。 この情報をサポートと共有するには:
  • コンソール内を右クリックします。
  • 名前を付けて保存…を選択して、ログファイルをエクスポートします。
  • このファイルを添付し、チャットサポートに連絡して追加のサポートを受けてください。
サポートが必要ですか?サポートチームとチャットするか、support@onesignal.comにメールしてください以下を含めてください:
  • 発生している問題の詳細と再現手順(利用可能な場合)
  • OneSignal App ID
  • 該当する場合は、External IDまたはSubscription ID
  • 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
  • 関連するログまたはエラーメッセージ
お気軽にお問い合わせください!