gpt4 book ai didi

android - 如果卸载应用程序,Firebase 会从数据库中删除相关行

转载 作者:行者123 更新时间:2023-11-29 16:40:29 28 4
gpt4 key购买 nike

我正在使用 Cloud Firestore 保留应用 token 以发送推送通知。但是,当用户卸载并重新安装应用程序时,Firestore 会为同一用户收到不同的 token 。如何在用户卸载应用时删除之前token的相关行?

提前致谢。

最佳答案

通常您会想要检测 token 何时变为无效,并在那时将其删除。例如。当一个 token 被循环使用时(当用户安装了应用程序时每隔几周就会发生一次),你会想利用那个时刻从你的数据库中删除旧 token 并添加新 token 。这样做可以最大限度地减少数据库中过时 token 的数量。

因此在 onTokenRefresh() 中意味着以下步骤:

  1. 检查本地存储中是否有 token (例如共享首选项)。如果是这样,请从数据库和本地存储中删除该 token 。

  2. 将新 token 存储在数据库和本地存储中。

但在您的情况下这是不可能的,因为在卸载应用程序时不会调用 onTokenRefresh,并且在重新安装时您不会知道以前的 token 。

处理以这种方式和其他方式留下的过时 token 的最简单方法是在发送到该 token 失败时将其删除。 sample of sending FCM notifications using Cloud Functions有一个很好的例子:

admin
.messaging()
.sendToDevice(tokens, payload)
.then((response) => {
// For each message check if there was an error.
const tokensToRemove = [];
response.results.forEach((result, index) => {
const error = result.error;
if (error) {
console.error('Failure sending notification to', tokens[index], error);
// Cleanup the tokens who are not registered anymore.
if (error.code === 'messaging/invalid-registration-token' ||
error.code === 'messaging/registration-token-not-registered') {
tokensSnapshot.ref.child(tokens[index]).remove();
}
}
});
});

关于android - 如果卸载应用程序,Firebase 会从数据库中删除相关行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50886327/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com