设置 Firebase 消息传递问题 messaging/only-available-in-sw

Set firebase messaging issue messaging/only-available-in-sw

我正在尝试在我的 angularJS 项目中设置 firebase 以使用后台通知和应用程序通知。

我做了什么:

即:

const messaging = firebase.messaging();

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

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

这就是我所做的,我没有在应用通知中配置,只是在后台配置。我在控制台中遇到错误:

Uncaught code: "messaging/only-available-in-sw"

message: "Messaging: This method is available in a service worker context (messaging/only-available-in-sw)."

stack: "FirebaseError: Messaging: This method is available in a service worker context. (messaging/only-available-in-sw)

什么是service-worker?它只是客户端吗?我正在从 index.html 执行此脚本,所以我很困惑。

您目前正在使用默认的 firebase 库。相反,将它与 angularfire 库一起使用,它将处理与 firebase 相关的大部分事情。 以下是使用 firebase 和 angularfire 的基本教程:

  1. 初始化步骤没问题。
  2. 在你的 index.html 中注入 angularfire。
    <!-- AngularFire --> <script src="https://cdn.firebase.com/libs/angularfire/2.3.0/angularfire.min.js"></script>.
  3. 在应用程序中将 firebase 注册为一个模块。
    var app = angular.module("sampleApp", ["firebase"])
  4. 现在你可以开始了。

请按照以下参考资料了解有关如何将 angularfire 与 firebase 结合使用的更多信息。