android – Google Cloud Messaging无法在公司网络上使用4.1.2设备

前端之家收集整理的这篇文章主要介绍了android – Google Cloud Messaging无法在公司网络上使用4.1.2设备前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经实现了一个简单的GCM客户端和服务器.客户端使用 current GCM client APIs(而不是 deprecated helper library).服务器(C#和.NET)遵循相应的 server guidelines(使用 HTTP).我的服务器在公司域内的计算机上运行,​​因此我将客户端设备连接到公司网络内的Wi-Fi接入点,但可以访问Internet.

简而言之,我的问题是4.3手机上收到通知,但连接到公司Wi-Fi网络时,4.1.2手机上从未收到通知.如果我将4.1.2设备连接到我们的公共访客Wi-Fi网络,则会按预期接收GCM消息,但该应用程序无法连接到公司服务器.

我已经看到一些迹象表明,当企业网络具有过度保护的防火墙时,GCM可能会失败(例如here).但如果它只是一个防火墙问题,那么4.3设备肯定不会收到任何消息吗?

一些额外的细节

我的测试手机如下:

>华硕Nexus 7(4.4.2)
>三星Galaxy S4(4.4.2)
> HTC One(4.3)
>三星Galaxy S3(4.1.2)
>摩托罗拉Razr HD(4.1.2)

服务器已从所有五个设备接收到有效的注册ID.在一个15秒的计时器上,它发出一条发往所有五个注册IDS的消息.响应始终显示已发送5条消息,没有错误且未更改注册ID.但是,它始终在上面列出的前三个设备上接收,而从不在最后两个设备上接收(运行4.1.2).当我调试它们时,根本没有调用广播接收器.

我还验证了所有五种设备:

>拥有Google Play服务4.3.25
>没有SIM,因此没有蜂窝数据,并且在同一个WiFi网络上
>拥有正确的日期&时间
>已在同一Gmail测试帐户中注册
>正在运行我的客户端应用程序的相同版本
>为其Google帐户启用所有同步设置

解决方法

我终于弄明白了问题所在.公司防火墙阻止5228的本机GCM端口上的流量.(5229和5230是 also mentioned with relation to GCM但我们根本没有看到任何尝试的流量在这些端口上.)这在其他地方有很多文档记录(只是谷歌GCM端口5228).

我无法在任何地方找到清楚记录的内容,但是我们已经从我们的服务器日志和手机上运行的Connection Tracker中发现,Android的较新版本会回归到使用大多数防火墙允许的端口443(标准HTTPS端口)默认情况下通过流量.这就是我们运行较新Android版本的设备即使在防火墙后面工作的方式.我不知道究竟是什么Android版本引入了这个端口443后备,但它介于4.1.2(不工作)和4.3(工作)之间.

原文链接:https://www.f2er.com/android/315989.html

猜你在找的Android相关文章