在开发一个与GCM集成的小项目时,我偶然发现了一个奇怪的问题.
有时当我开始观看日志以查看是否收到消息时,在我改变网络状态(IE最初在WiFi上,如果我关闭WiFi并转移到移动数据,消息到达)之前,消息似乎没有通过精细).在我改变网络状态后,消息开始完全正常,一旦我将网络状态改回到之前的状态(在这种情况下,WiFi),消息将继续被接收,这同样适用.
该项目本身包括启动启动的能力(启动时启动GCMBaseIntentService),这也完全正常,我确信应用程序/服务正在运行,因为我在发生此问题时手动启动应用程序(其中还检查是否正在运行的服务,如果它不运行它,并检查它是否已注册).
有没有其他人遇到过这个问题,或者有任何指示我如何解决这个问题?我没有看到的消息的时间之间的日志中有很大帮助什么都没有收到,当他们(改变网络状态后).我已经浏览了GCM文档,并且看不到由于超时(在设备本身上)或任何可能影响此问题的配置选项而未收到消息的任何提及.
感谢所有帮助 - 我可以提供源如果需要的话,虽然它很难从Android的SDK提供的演示程序偏离.
我已阅读文档 https://developer.android.com/google/gcm/index.html
我能看到的唯一区别是基于CCS(XMPP)的服务器允许在Android设备和GCM服务器之间直接进行双向通信.
是否有任何其他原因可以选择通过HTTP选择CCS(XMPP),反之亦然?
移动推送通知使用什么协议?
以安卓为例。首先,从第三方服务器向 Firebase 服务器发出 HTTP 请求。接下来是问题。FIrebase 服务器如何从众多手机中选择所需的手机并发送推送通知?
当然,我知道我可以发送推送通知而不必担心。但是,我对兴趣很好奇。
在 TCP/IP 上,通信需要 IP 地址和 MAC 地址,但是如何向手机发送推送通知?
用于学习的链接
谢谢。
android push-notification apple-push-notifications ios firebase