我可以使用 @nuxtjs/firebase 模块访问 subscribeToTopic 吗?

Can I access subscribeToTopic using @nuxtjs/firebase module?

我在 nuxt 项目中使用@nuxtjs/firebase。消息传递有效,我可以通过 fcm 将邮递员的消息发送到我的网站。我看不到有关如何访问 subscribeToTopic 的任何文档。

在我的 nuxt.config.js 我有:

[
  '@nuxtjs/firebase',
  {
    config: {
      apiKey: "myapiKey",
      authDomain: "myDomain",
      projectId: "myProjectId",
      storageBucket: "myStorageBucker",
      messagingSenderId: "mySenderId",
      appId: "myAppId",
      measurementId: "myMeasurementId"
    },
    services: {
      auth: {
        persistence: 'local',
        initialize: {
          onAuthStateChangedAction: 'onAuthStateChangedAction',
          subscribeManually: false
        },
        ssr: false
      },
      messaging: {
        createServiceWorker: true,
          fcmPublicVapidKey: 'myVapidKey',
          inject: fs.readFileSync('./serviceWorker.js')
      },
      firestore: true
    }
  }
]

serviceWorker.js 有:

self.addEventListener('push', function (e) {
    const data = e.data.json();
    const options = {
        body: data.notification.body,
        icon: data.notification.icon,
        vibrate: [100, 50, 100],
        data: {
            dateOfArrival: Date.now(),
            primaryKey: '2'
        },
    };
})

在异步安装中我有:

const currentToken = await this.$fire.messaging.getToken()
console.log("token", currentToken)
this.$fire.messaging.onMessage((payload) => {
  console.info('Message received. ', payload)
  this.$toast.success(payload.data.text + "</br>" + payload.data.additionalInfo, { icon: payload.data.icon });
})
this.$fire.messaging.onTokenRefresh(async () => {
  const refreshToken = await this.$fire.messaging.getToken()
  console.log('Token Refreshed', refreshToken)
})

这一切都按预期工作。

显然我应该可以订阅主题,在 firebase 中可以使用如下内容:

FirebaseMessaging.getInstance().subscribeToTopic("all")
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {
                    //Successfully Subscribed to Notification Service
                }else{
                //Subscription  Notification Service failed
                }
            }

但是,我不知道如何使用@nuxtjs/firebase 模块来做到这一点。

JavaScript SDK 中没有用于订阅主题的客户端API。您需要使用(服务器端)Admin SDK 来完成此操作。

比如你所指的subscribeToTopic方法存在于Node.jsSDK和JavaSDK中,但不存在于JavaScript/Web或[=22中=] SDKs.

我建议进一步研究 subscribing a web client to a topic 上的文档。

一旦您从服务器订阅客户端到一个主题,您已有的现有客户端代码也应该开始接收该主题的消息。