簡體   English   中英

Firebase雲消息傳遞-調用firebase.messaging()時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM