OneSignalのServiceWorker再登録
Q&A
Closed
解決したいこと
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
下記公式サイトのトラブルシューティングも試しました。
また、下記には
- 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でははじめから有効になっています)。
この設定も有効にしてあります。
よろしくお願い致します。