我可以使用 @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 上的文档。
一旦您从服务器订阅客户端到一个主题,您已有的现有客户端代码也应该开始接收该主题的消息。
我在 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 上的文档。
一旦您从服务器订阅客户端到一个主题,您已有的现有客户端代码也应该开始接收该主题的消息。