繁体   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