我正在尝试实施FCM推送通知。我的Firefox版本是63.0。
下面是我的代码,
var config = {
apiKey: "${model.apiKey}",
authDomain: "${model.authDomain}",
databaseURL: "${model.databaseURL}",
projectId: "${model.projectId}",
storageBucket: "${model.storageBucket}",
messagingSenderId: "${model.messagingSenderId}"
};
firebase.initializeApp(config)
const messaging = firebase.messaging();
messaging.requestPermission().then(function () {
console.log("Notification permission granted.");
// get the token in the form of promise
return messaging.getToken()
}).then(function(token) {
$('#devicekey').val(token);
}).catch(function (err) {
console.log("Unable to get permission to notify.", err);
});
已授予通知权限
显示在控制台中。但是显示错误
FirebaseError:消息传递:此浏览器不支持API的 需要使用Firebase SDK。 (邮件/浏览器不支持)。
我无法获得令牌。为什么会这样?请注意,我的应用程序是通过“ http”运行的。
答案 0 :(得分:2)
FCM SDK仅在通过HTTPS服务的页面中受支持。这是由于使用了服务工作者,仅在HTTPS站点上可用。需要提供者? Firebase托管是一种在您自己的域上获取免费HTTPS托管的简便方法。
在Firefox 63中,当我尝试通过http打开具有Firebase初始化的页面时,看到了类似您的消息。 在这种情况下,我的Chrome会写更具体的警告:
[不推荐使用]从不安全的来源可能不再使用Notification API。您应该考虑将应用程序切换到安全来源,例如HTTPS。
当我通过https在Firefox 60中工作时,我也看到了类似您的消息。原因是“服务人员” disabled on Firefox 60 ESR(但可以重新启用)。此消息在Firefox中太笼统了。