2017-04-10 7 views
0

firebaseメッセージを実装していますが、Chromeでコンソールにエラーが表示されています。スクリプトリソースがリダイレクトの背後にあり、許可されていません

スクリプトリソースはリダイレクトの背後にありますが、これは許可されていません。 /firebase-messaging-sw.jsは、リソースの読み込みに失敗しました:ネット:: ERR_UNSAFE_REDIRECT

ファイル/firebase-messaging-sw.jsは、パブリックフォルダ内にあると私は、このhttps://github.com/firebase/quickstart-js/tree/master/messaging

ようFCMのインストールを使用しています

しかし、リンクはhttps://09029e3f.ngrok.io/admin/pt/settings/notificationsのようなリンクです。 が、メインのWebサイトサービスワーカースクリプト(firebaseメッセージング-sw.js)がアプリケーションの絶対パスになることが期待されてmain.domain.com

答えて

1

Firebase答え、その作業

でありますデフォルトではクイックスタートプロジェクトを使用すると、場所はhttp://localhost:5000/firebase-messaging-sw.jsになります。

スタティックファイルストレージに別のサーバーを使用しているため、サービスワーカースクリプトの場所が同じではない可能性があります。これで、サービスワーカー登録コードの実装を更新し、サービスワーカースクリプトを別の場所から呼び出す必要があります。

サービスワーカースクリプトの静的ロケーションを検索します。私のケースでは、それはhttp://localhost:5000/sw/firebase-messaging.sw.jsです。サービスワーカースクリプトの場所をswフォルダの中に移動したからです。アクセス可能であることを確認するには、ブラウザのアドレスバーにURLを入力して、サービスワーカースクリプトコードを表示する必要があります。 通知を表示する必要があるWebページ上>「https://www.gstatic.com/firebasejs/ /firebase.jsからローカルfirebase.jsスクリプトをダウンロードし、/firebase.jsそれを呼び出す。

firebase-messaging.jsスクリプトを更新します。キーワードを検索firebaseメッセージング・sw.jsと、その後プレフィックスとしてパスを追加します。私の場合、それはhttp://localhost:5000/sw/firebase-messaging-sw.jshttp://localhost:5000/sw/firebase-cloud-messaging-push-scopeです。

感謝firebase

0

あなたは、サービス労働者を使用して手動でfirebase-messaging-sw.jsをロードしていることを修正することができます。
ファイルが2つあるとします:index.htmlfirebase-message-sw.js。彼らは同じ場所にいます。 index.html 1.In

は、あなたがfirebase.jsをロードし、あなたのfirebaseアプリの初期化:

<script src="https://www.gstatic.com/firebasejs/4.3.1/firebase.js"></script> 
<script> 
    var var config = { 
     apiKey: YOUR_API_KEY, 
     messagingSenderId: YOUR_SENDER_ID 
    }; 
    firebase.initializeApp(config); 
    navigator.serviceWorker.register('/firebase-messaging-sw.js') 
     .then(function (registration) { 
      messaging = firebase.messaging(); 

     //request permission for Push Message. 
      messaging.requestPermission().then(function() { 
       console.log('grant'); 

       messaging.getToken().then(function (currentToken) { 
       console.log('current token', currentToken); 
      }); 
      }).catch(function(error) { 
       console.log('Push Message is disallowed'); 
      }) 
     }) 
</script> 

2.を完了firebase-messaing-sw.js

importScripts('https://www.gstatic.com/firebasejs/4.3.1/firebase-app.js'); 
importScripts('https://www.gstatic.com/firebasejs/4.3.1/firebase-messaging.js'); 
var config = { 
    messagingSenderId: YOUR_SENDER_ID 
}; 
firebase.initializeApp(config); 
const messaging = firebase.messaging(); 

messaging.setBackgroundMessageHandler(function (payload) { 
    console.log('[firebase-messaging-sw.js] Received background message ', payload); 
    // Customize notification here 
    const notificationTitle = 'Background Message Title'; 
    const notificationOptions = { 
     body: 'Background Message body.', 
     icon: '/firebase-logo.png' 
    }; 

    return self.registration.showNotification(notificationTitle, 
     notificationOptions); 
}); 

を実装します!

関連する問題