![](/img/trans.png)
[英]Using Firebase Cloud Messaging + React and firebase.messaging().getToken() is different each refresh
[英]Firebase Cloud Messaging - Error calling firebase.messaging()
從html頁面(不是服務工作者)調用firebase.messaging()
時出現錯誤,這沒有任何意義。
消息傳遞:請確保在傳遞給firebase.initializeApp()的選項中正確設置了“ messagingSenderId”。 (消息/壞發送者ID)。
應用程序是用正確的初始化messagingSenderId
在一個<script>
進一步向上在<head>
默認應用程序顯示在控制台日志中:
function deviceRegistration() {
console.log('in deviceRegistration()');
console.log("firebase.apps:", firebase.apps);
console.log("firebase.apps.length: ", firebase.apps.length);
if (firebase.apps.length == 0) {
// firebase.initializeApp({{ fcm_config.messagingSenderId }});
firebase.initializeApp({"messagingSenderId": "1234567890"});
}
console.log("after initializeApp"); // prints to console
var messaging = firebase.messaging(); // error happens here
console.log("after firebase.messaging()"); // doesn't print to console
如果在firebase.apps
中沒有應用程序,我之所以只調用firebase.initializeApp
,是因為當我在不首先執行此檢查的情況下調用firebase.initializeApp
時,出現以下錯誤:
Firebase:名為“ [DEFAULT]”的Firebase應用已存在(應用/重復應用)。
我以為我應該能夠(在每個頁面上)重復調用initializeApp
並且如果需要的話,它將注冊服務工作者。
有人可以幫我弄清楚發生了什么嗎?
噢,愚蠢的我...
我用(django)模板標記和錯誤引用的上下文變量填充config變量。 我這樣做:
var config = {
apiKey: "{{ fcm_config.apiKey }}",
authDomain: "{{ fcm_config.authDomain }}",
databaseURL: "{{ fcm_config.databaseURL }}",
projectId: "{{ fcm_config.projectId }}",
storageBucket: "{{ fcm_config.storageBucket }}",
messagingSenderId: "{{ fcm_config.messagingSenderId }}"
};
firebase.initializeApp(config);
當我打算這樣做時:
var config = {
apiKey: "{{ fcm_config.config.apiKey }}",
authDomain: "{{ fcm_config.config.authDomain }}",
databaseURL: "{{ fcm_config.config.databaseURL }}",
projectId: "{{ fcm_config.config.projectId }}",
storageBucket: "{{ fcm_config.config.storageBucket }}",
messagingSenderId: "{{ fcm_config.config.messagingSenderId }}"
};
firebase.initializeApp(config);
因此,firebase抱怨發件人ID錯誤是正確的,因為我傳入的對象等同於:
firebase.initializeApp({
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: ""
});
現在這部分工作了,我繼續下一個錯誤!
(如果您想知道為什么將這些變量放在fcm_config.config.*
,這似乎是多余的,那是因為我還存儲了fcm_config.VAPID
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.