【发布时间】:2018-06-17 08:59:56
【问题描述】:
我正在尝试使用 FCM 向所有主题订阅者发送通知。首先,我需要为用户订阅一个主题。我在做什么(我正在使用 JavaScript Firebase Cloud Messaging 进行网络推送通知):
1) 获取 FCM 实例
var messaging = firebase.messaging();
2) 获取令牌
messaging.getToken();
3) 通过ajax发送token到服务器
4) 客户端从服务器订阅主题
https://iid.googleapis.com/iid/v1/IID_TOKEN/rel/topics/TOPIC_NAME
所以,我的 js 代码是这样的:
var messaging = firebase.messaging();
messaging.useServiceWorker(reg);
messaging.requestPermission()
.then(function () {
messaging.getToken()
.then(function (currentToken) {
if (currentToken) {
$.ajax({
type : 'POST',
url : URL_TO_SERVER_METHOD
data : {
token : currentToken
}
});
}
})
})
然后,如果我使用所有必要参数向https://fcm.googleapis.com/fcm/send 发出请求,我会在浏览器中收到通知。 一切正常,但我从 fcm 文档中了解到令牌有时会由 fcm 应用程序刷新。这意味着如果令牌被刷新,但用户没有重新订阅该新令牌,他将不会收到通知。
- 问题 #1:
如何确保我的订阅者始终收到通知?
- 问题 #2:
我已经看到一些关于 onTokenRefresh 方法的内容,但是当浏览器关闭或计算机关闭时会调用它(我确定,不会)?以及如何模拟令牌刷新动作?
- 问题 #3:
我只能订阅一次(下次不需要使用相同的令牌),但我不知道我的令牌是否旧,我必须重新订阅当前用户。这种情况该怎么办(和前面的问题有关)?
【问题讨论】:
-
对问题有什么结论吗?想到了同样的问题。
标签: javascript push-notification firebase-cloud-messaging