shige8
@shige8

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

OneSignalのServiceWorker再登録

解決したいこと

Railsで服薬習慣SNSをつくっています。初質問です。
通知機能をOneSignalで実装していたのですが、
下記のエラーが出て再登録できなくなってしまいました。

OneSignalの仕様か、ServiceWorkerへの理解不足かは分かりませんが、
ヒントをいただけると幸いです。

発生している問題・エラー

Service Worker Installation] Installing service worker failed TypeError: Failed to register a ServiceWorker for scope ('https://www.ucmsapp.com/') with script ('https://www.ucmsapp.com/OneSignalSDKWorker.js?appId=(OneSignalで取得したID)?sdkVersion=151512'): A bad HTTP response code (404) was received when fetching the script.
GET https://www.ucmsapp.com/OneSignalSDKWorker.js?appId=(OneSignalで取得したID)?sdkVersion=151512 404
OneSignalError.js:18 Uncaught (in promise) rt: Registration of a Service Worker failed.
    at Lt.<anonymous> (https://cdn.onesignal.com/sdks/OneSignalPageSDKES6.js?v=151512:1:177120)
    at Generator.next (<anonymous>)
    at r (https://cdn.onesignal.com/sdks/OneSignalPageSDKES6.js?v=151512:1:716)

自分で試したこと

chromeで登録されているServiceWorkerが見られるということで確認しました。
chrome://serviceworker-internals/

上のふたつのエラーが出る前に、他の通知方法を試そうと思い、OneSignalに関連するServiceWorkerを削除した可能性があります。

Service Worker Installation] Installing service worker failed TypeError: Failed to register a ServiceWorker for scope ('https://www.ucmsapp.com/') with script ('https://www.ucmsapp.com/OneSignalSDKWorker.js?appId=(OneSignalで取得したID)?sdkVersion=151512'): A bad HTTP response code (404) was received when fetching the script.
GET https://www.ucmsapp.com/OneSignalSDKWorker.js?appId=(OneSignalで取得したID)?sdkVersion=151512 404

その時はまだ前の登録が生きていたのか、通知は届いていました。

その後、chrome://serviceworker-internals/で不要そうなServiceWorkerを全て削除してからOneSignalを登録しようとすると、

OneSignalError.js:18 Uncaught (in promise) rt: Registration of a Service Worker failed.
    at Lt.<anonymous> (https://cdn.onesignal.com/sdks/OneSignalPageSDKES6.js?v=151512:1:177120)
    at Generator.next (<anonymous>)
    at r (https://cdn.onesignal.com/sdks/OneSignalPageSDKES6.js?v=151512:1:716)

上記最後のエラーが出て登録できなくなりました。

また、SafariやFirefoxでも試しましたが、同様のエラーが出ます。

Androidでも試しましたが、下のエラーが出てから試したので、こちらも登録ができないのか、通知が届きません。

Service Worker Installation] Installing service worker failed TypeError: Failed to register a ServiceWorker for scope ('https://www.ucmsapp.com/') with script ('https://www.ucmsapp.com/OneSignalSDKWorker.js?appId=(OneSignalで取得したID)?sdkVersion=151512'): A bad HTTP response code (404) was received when fetching the script.
GET https://www.ucmsapp.com/OneSignalSDKWorker.js?appId=(OneSignalで取得したID)?sdkVersion=151512 404

下記公式サイトのトラブルシューティングも試しました。

また、下記には

  1. Upload .js files to your server
    You can place these .js files in your site's root or in a subdirectory path you will never link users to.
    If you place these files in a subdirectory path, they will not conflict with any other Service Workers you have now or may add in the future.
    Example subdirectory path: https://mysite.com/push/onesignal/
    These files should be put in a permanent location path that will never change! Once a ServiceWorker is registered with the browser, it is difficult to change.

と記載があり、最後の文面から、ServiceWorkerは一度ブラウザに登録されると変更は難しいとありますが、やはり困難なのでしょうか?

Service worker を始めるための設定
多くの Service worker の機能は、それらに対応しているブラウザーの最新版ではじめから利用できるようになっています。もしデモコードがあなたの環境で動作しない場合は、以下のいずれかの設定を行い、有効化してください。
Firefox Nightly: about:config の画面で dom.serviceWorkers.enabled を true に設定し、ブラウザーを再起動してください。
Chrome Canary: chrome://flags の画面で experimental-web-platform-features を有効にし、ブラウザーを再起動してください(現在いくつかの機能はChromeでははじめから有効になっています)。

この設定も有効にしてあります。

よろしくお願い致します。

0

No Answers yet.

Your answer might help someone💌