首页 > 解决方案 > 如何检查远程 Android 设备中的互联网连接?

问题描述

这个问题可能是一个重复的问题,但我找不到合适的解决方案。我有聊天应用程序,我在其中设置了当远程 android 设备处于后台模式时的功能,它将在新消息到来时收到 FCM 的通知(在聊天室中添加了新节点)。所以

  1. 如果远程设备处于前台模式,它将通过应用程序获得通知,并且它肯定具有互联网连接,我可以成功设置消息传递。
  2. 如果远程设备处于后台模式,它将收到 FCM 的通知,并且它肯定具有互联网连接。为此,我还可以成功设置消息传递。

那么我如何检查远程设备是否完全离线(没有互联网连接)或如何检查 FCM 是否成功发送通知?

例如:

    if(messegeReceiver(remote device) has no internet connectivity )
    {
       //here i want to change data in firebase//
    }
    else
    {
     //here i want to change data in firebase//
    }

我有“用户”节点,每个用户在登录应用程序时都设置了 device_token。

标签: javaandroidfirebase-realtime-database

解决方案


FCM 不保证推送通知会送达。这完全取决于各种因素,如互联网连接(如你所提到的)、OEM 行为、打盹模式等。

在您的情况下,您正尝试通过 FCM 从一台设备向另一台设备发送消息,并在表单通知中显示消息,就像任何其他聊天应用程序一样。

这里唯一的问题是 FCM 没有为您提供您正在寻找的响应(附图片)的传递参数。它只计算网关已接受的通知数量,即 FCM(成功)和网关拒绝的通知数量(失败)。它还给出了拒绝(错误)消息的原因,例如NotRegisteredMissingRegistrationToken等,您可以参考这个

我的建议是准备一个握手消息,确认来自其他设备的推送通知的传递。一旦您收到推送通知,就会通过 FCM 发送握手消息,该消息会被第一个了解推送通知已发送的设备接收。如果设备没有收到握手,则假设消息尚未传递。

我希望这真的对您有所帮助,如果您愿意,请投票或接受答案。

在此处输入图像描述


推荐阅读