gpt4 book ai didi

一段时间后 Firebase 消息传递失败

转载 作者:IT王子 更新时间:2023-10-29 07:12:42 26 4
gpt4 key购买 nike

我在 flutter 上遇到 FCM 问题。我已经从我的服务器实现了消息传递,所以我为每个用户存储了我的电话 token 。

问题是,当用户第一次登录时,一切正常,系统会发送消息并通知用户。

如果我在周末不使用该应用程序,那么在星期一我会尝试通过在我的应用程序上执行一些操作来发送消息,但消息没有被发送。我可以看到我的 token 正确存储在我的数据库中。

我正在为 flutter 使用 firebase_messaging 2.1.0。

这是我获得 token 的方式

 _fireBaseMessaging.getToken().then((token){
_myPhoneToken = token;
});

1-我知道 token 可能会在以下情况下发生变化:

  • 应用删除实例 ID
  • 应用在新设备上恢复
  • 用户卸载/重新安装应用
  • 用户清除应用数据

但这一切都没有发生。

关于如何处理这种情况有什么建议吗?提前致谢。

更新 enter image description here

最佳答案

前提是您以正确的方式设置了 FCM sdk(但您说它在您第一次安装应用程序时就可以工作,所以我猜是这样)。

如果你确定你正在使用的 device_token 是你希望收到通知的设备之一(检查它是否仍然相同),你应该得到这个如果您使用 "priority": "high",请尽快设置您的通知。

{
"to" : "device_token",
"priority" : "high",
"notification" : {
"sound": "default",
"body" : "Test Notification body",
"title": "Test Notification title"
}
}

这个方法调用

_firebaseMessaging.getToken().then((String token)

始终返回新 token ,即使它已被更新。因此,如果您在您的设备上打印出来,并且您发送了关于此 token 的通知而没有错误,那么如果设备具有有效的互联网连接,您就没有理由不获取该 token 。

的确,设备 token 可以随时间变化。如果您卸载并重新安装该应用程序,您会看到 token 会发生变化,如果您尝试在旧 token 上发送通知,则会收到错误消息。

如果代币将在应用程序生命周期内更改,您可以通过监听在服务器端收到通知:

_firebaseMessaging.onTokenRefresh.listen((newToken) {
_fcm_token = newToken;
// send the new fcm to your server
});

因此,首先我建议您能够使用 Postman 向设备发送通知。检查您使用的 token 是否仍然是设备上的 token 。然后您可以尝试卸载并重新安装该应用程序并尝试使用旧 token 。你会得到一个错误。然后尝试发送到新的,您应该会收到通知。

然后等待几天再试,检查 token 是否已更改,如果没有更改,您应该能够使用相同的 token 发送通知而不会出现问题。

另请注意,如果应用程序终止,Android 上的数据消息仍然不受支持。

关于一段时间后 Firebase 消息传递失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185532/

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