Mar*_*ker 7 networking android google-cloud-messaging
我已经实现了一个简单的GCM客户端和服务器.客户端使用当前的GCM客户端API(而不是已弃用的帮助程序库).服务器(C#和.NET)遵循相应的服务器准则(使用HTTP).我的服务器在公司域内的计算机上运行,因此我将客户端设备连接到公司网络内的Wi-Fi接入点,但可以访问Internet.
简而言之,我的问题是在4.3+手机上收到通知,但在连接到公司Wi-Fi网络时,4.1.2手机上从未收到通知.如果我将4.1.2设备连接到我们的公共访客Wi-Fi网络,则会按预期接收GCM消息,但该应用程序无法连接到公司服务器.
我看到一些迹象表明,当公司网络具有过度保护的防火墙时,GCM可能会失败(例如此处).但如果它只是一个防火墙问题,那么4.3+设备肯定不会收到任何消息?
我的测试手机如下:
服务器已从所有五个设备接收到有效的注册ID.在一个15秒的计时器上,它发出一条发往所有五个注册IDS的消息.响应始终显示发送了5条消息,没有错误,也没有更改注册ID.但是,它始终在上面列出的前三个设备上接收,而从不在最后两个设备上接收(运行4.1.2).当我调试它们时,根本没有调用广播接收器.
我还验证了所有五种设备:
Mar*_*ker 13
我终于弄明白了问题所在.企业防火墙阻止流量5228.本地GCM端口(5229和5230都还与有关GCM提及,但我们没有看到任何企图交通上这些端口都没有.)这是多少以及其他地方记录的(只是谷歌GCM端口5228).
我无法找到明确记录任何地方,但我们已经从我们的服务器日志和运行想通了连接跟踪的手机,就是安卓的新版本回落到使用端口443(标准HTTPS端口),其中大部分防火墙默认允许流量通过.这就是我们运行较新Android版本的设备即使在防火墙后面工作的方式.我不知道究竟是什么Android版本引入了这个端口443后备,但它介于4.1.2(不工作)和4.3(工作)之间.
| 归档时间: |
|
| 查看次数: |
5316 次 |
| 最近记录: |