【发布时间】:2018-08-30 20:01:51
【问题描述】:
我的问题是: 当我为用户订阅聊天时,假设聊天的 id 为“xDs50Yss70”,用户保持订阅状态,而用户的 Firebase uid 没有更改。 但是,当用户的 Firebase uid 发生变化时,例如当用户删除应用并再次下载时,用户将不再订阅聊天以及他/她可能拥有的其他订阅。
我在第一次创建聊天时使用此功能为用户订阅聊天
function subscribeUserToATopic(registrationTokens, chatId) {
return admin.messaging().subscribeToTopic(registrationTokens, chatId)
}
如我们所见,我们使用注册令牌为用户订阅chatId,我使用从这段代码中获得的注册令牌(在客户端):
@Override
public void onNewToken(String newToken) {
super.onNewToken(newToken);
// Send the new token to Firestore
sendTokenToDatabase(newToken);
}
我使用sendTokenToDatabase() 将令牌发送到 Firestore 数据库,但是当用户删除应用程序并重新安装它时,令牌会更改...而且我不再可以使用此代码发送推送通知,因为用户的令牌已更改:
admin.messaging().sendToTopic(chatId, payload, options).then(() => {
console.log(`Push notification sent to the user(s) subscribed to the ${chatId}`)
}).
【问题讨论】:
-
您使用什么类型的身份验证?对于电子邮件/密码和通过社交提供商进行的身份验证,即使用户重新安装应用,Firebase UID 仍将保持不变。
-
我只使用 Google 和 Facebook 身份验证。
-
这意味着用户的 UID 是相同的,即使他们卸载/重新安装应用程序、从网站登录等等。
标签: android firebase firebase-cloud-messaging firebase-admin