【发布时间】:2017-02-25 10:31:24
【问题描述】:
要在 android 客户端订阅主题,我们应该调用:
FirebaseMessaging.getInstance().subscribeToTopic("news");
我想知道如果在执行此指令的那一刻互联网连接不可用会发生什么?
当互联网连接可用时,谷歌服务会自动重试订阅吗?还是我们开发者应该处理这种情况?
【问题讨论】:
标签: android firebase firebase-cloud-messaging
要在 android 客户端订阅主题,我们应该调用:
FirebaseMessaging.getInstance().subscribeToTopic("news");
我想知道如果在执行此指令的那一刻互联网连接不可用会发生什么?
当互联网连接可用时,谷歌服务会自动重试订阅吗?还是我们开发者应该处理这种情况?
【问题讨论】:
标签: android firebase firebase-cloud-messaging
更新:
subscribeToTopic() 现在返回一个Task<Void>,因此您可以附加一个OnCompleteListener() 来检查它是否成功。
更新:
因此,根据@DiegoGiorgini 在您之前帖子中的评论,似乎还有更多要订阅的话题:
subscribeToTopic将继续在后台重试,但它与您的应用生命周期相关(尚未与谷歌服务相关)。因此,如果您的应用程序被终止,它将停止重试,直到应用程序再次打开。 (该操作已存储,以便在再次启动应用程序时恢复)
我之前尝试的方式是在给定时间之后,我将杀死该应用程序并且没有再次将其拉起。
所以我试着检查一下。看起来如果发送订阅请求时设备处于离线状态,它会重试一段时间(20-30秒左右?)然后如果仍然没有连接就会停止。请求可能达到超时错误。但由于subscribeToTopic() 没有返回值,因此您无法通过客户端应用程序确定这一点。如果您愿意,可以发送与此相关的Feature Request。
但是,就目前而言,我认为您可以做的一种方法是在您的客户端应用程序中设置一个检查器,如果只有设备在线,您就会发送请求。
您也可以通过您的应用服务器检查它,正如我在您的previous post 中提到的那样。
【讨论】: