为什么 GCM 推送通知在其他国家/地区不起作用?
Why is GCM push notification not working in other country?
我创建了一个可以接收推送通知的 Android 应用程序。我已经在两个不同的 phone 上安装了该应用程序,并验证了它们都可以接收 GCM 推送通知。这个测试是在美国完成的。
接下来的一周,其中一位 phone 前往亚洲。但是无法在亚洲的 phone 上收到推送通知。它可以访问互联网但无法接收推送通知。
有人知道为什么吗?是否需要特殊配置。网络可以阻止 GCM 消息吗?
肯定是被国家屏蔽了。例如google 在中国被屏蔽了。
其他 google 服务是否在设备上运行。
如果您在亚洲手机上尝试过您的应用程序,肯定会成功。否则您可以通过根据国家/地区更改 IMEI 号码来更改您的位置。
在发展中国家,一些电信网络/家庭路由器会主动断开空闲的 TCP 连接以节省资源,从而阻止您的 GCM/FCM 通知准时到达。
FCM 使用心跳机制来保持其连接,每 X 分钟向 FCM 服务器发送一个 "keepalive" 数据包。但是,FCM 使用的心跳间隔没有考虑发展中国家的攻击性网络,这些网络会终止空闲连接。
这使得 GCM/FCM 在这些发展中地区非常不可靠:
https://eladnava.com/google-cloud-messaging-extremely-unreliable/
根据中国,GCM/FCM 完全被中国防火墙封锁。
作为解决方法,请查看 Pushy,它使用具有更快心跳间隔的微调 MQTT 连接来防止连接被终止,并且在中国没有被阻止。
完全公开 - 我创立了 Pushy。
我创建了一个可以接收推送通知的 Android 应用程序。我已经在两个不同的 phone 上安装了该应用程序,并验证了它们都可以接收 GCM 推送通知。这个测试是在美国完成的。
接下来的一周,其中一位 phone 前往亚洲。但是无法在亚洲的 phone 上收到推送通知。它可以访问互联网但无法接收推送通知。
有人知道为什么吗?是否需要特殊配置。网络可以阻止 GCM 消息吗?
肯定是被国家屏蔽了。例如google 在中国被屏蔽了。
其他 google 服务是否在设备上运行。
如果您在亚洲手机上尝试过您的应用程序,肯定会成功。否则您可以通过根据国家/地区更改 IMEI 号码来更改您的位置。
在发展中国家,一些电信网络/家庭路由器会主动断开空闲的 TCP 连接以节省资源,从而阻止您的 GCM/FCM 通知准时到达。
FCM 使用心跳机制来保持其连接,每 X 分钟向 FCM 服务器发送一个 "keepalive" 数据包。但是,FCM 使用的心跳间隔没有考虑发展中国家的攻击性网络,这些网络会终止空闲连接。
这使得 GCM/FCM 在这些发展中地区非常不可靠: https://eladnava.com/google-cloud-messaging-extremely-unreliable/
根据中国,GCM/FCM 完全被中国防火墙封锁。
作为解决方法,请查看 Pushy,它使用具有更快心跳间隔的微调 MQTT 连接来防止连接被终止,并且在中国没有被阻止。
完全公开 - 我创立了 Pushy。