繁体   English   中英

Firebase Cloud消息传递:消息发送和接收之间的随机延迟?

[英]Firebase Cloud messaging : random delay between sending and reception of message?

我目前正在为学校开发Android应用程序。 基本上,其目的之一是使您和您的朋友能够在地图上彼此定位。 为此,我们使用Firebase Cloud Messaging。 我遵循了Google提供的教程 ,并且一切正常。

我按照教程中所示设置了FirebaseMessagingService,将其重写为onNewToken,onMessageReceived和onMessageDeleted。 令牌已保存在我们的学校数据库中,因此我可以实时检查哪些帐户与哪个Firebase令牌相关联,从而可以使用FCM控制台测试设备。

这是发生问题的地方:我收到了消息,但是有某种随机延迟。 有时,消息会立即发出,而另一些时候,我们不得不等待20分钟以上,甚至无法确定问题是否来自我们的实施或Firebase。 我们完全不知道为什么会出现这种延迟。 有时我们只是认为我们的应用程序已损坏,然后做其他事情,但是随后我们回到Android Studio,看到该应用程序一次收到了所有待处理的消息。

这是清单中我的服务声明:

<service android:name=".domains.FirebaseService" android:enabled="true">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
</service>

这是我对FirebaseMessagingService的实现

public class FirebaseService extends FirebaseMessagingService {

    [...]        

    @Override
    public void onNewToken(String token) {
        // Save on DB
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Map<String, String> data = remoteMessage.getData();
        if(data.size() > 0) {
            // Do stuff
        }
    }

    [...]
}

因此,这似乎很合逻辑,在这里没什么幻想的。 尽管如此,接收任何消息之前的延迟是完全随机的,并且似乎与服务状态无关。

同样,即使从Firebase控制台发送消息时也会出现问题,因此我认为我们可以安全地排除问题出自发送消息的可能性,因为最后,应用程序收到消息的时间为80%。

自从我收到消息以来,我认为问题实际上不是来自服务...也许我错了?

另外,我非常确定Firebase令牌在发送消息之前和之后都不会更改,这将解释为什么设备未收到消息的原因。

您是否知道这种延迟可能来自何处? 我们已经在整个互联网上搜索以寻找解决方案,而没有找到任何答案。

先感谢您。

编辑:对于它的价值,我正在使用设备的Firebase令牌发送每条消息,在本例中,我们正在使用仿真器,所以也许这可能是它不能正常工作的原因。

编辑2:正如我在下面的评论中提到的那样,我们学校希望我们使用FCM而不是其他任何东西,因此我们需要使其使用它。

由于我的手机是土豆,因此不允许我在其上安装应用程序。 到现在。 现在,代码可以在我的手机上运行,​​而无需使用仿真器,因此一切正常。 延迟消失了,所有消息立即被接收。

令我惊讶的是,我已经按照模拟器的原样(使用Google Play服务等)配置了模拟器,并做了必要的操作以确保没有问题。 在网上搜索后,我找不到任何讨论此话题的话题,而答案仅仅是在模拟器上安装Google Play服务(已完成)。

因此,如果您的仿真器没有收到任何推送通知,或者在收到通知之前发生某种随机延迟,则最好在真实设备上尝试应用程序。

非常感谢@madlymad和@AL。 试图帮助我解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM