Android 推送通知:Google Play 服务如何连接到 Google Server

Posted

技术标签:

【中文标题】Android 推送通知:Google Play 服务如何连接到 Google Server【英文标题】:Android Push notification: How does Google Play Services Connect to Google Server 【发布时间】:2014-09-22 22:29:37 【问题描述】:

我正在尝试深入了解 android 推送通知。

根据这个问题, How does push notification technology work on Android?

Google Play 服务维护着与 Google 服务器之间的有效 TCP 连接。我找不到这个 TCP 连接。

我使用了一个名为 NetStat Plus 的应用程序来枚举 TCP 连接,这就是我想出的:

我有很多支持 GCM 的应用,但这里似乎没有一个连接到 Google 服务器。

【问题讨论】:

我也安装了这个应用程序,我确实看到了很多从谷歌播放过程中建立的连接,所以我不知道为什么你没有从你的设备上看到它们......无论如何 - 你可以确保存在这种联系。没有任何“隐藏的魔法”可以在没有任何连接的情况下向设备推送消息。 我明白了。我只是想看看这样的联系存在。 这可能不是您要找的answer,只是看看。其实我指的是你的问题:How does push notification technology work on Android? 【参考方案1】:

好的,首先不要选择选项卡“ALL”,选择“ESTABLISHED”以摆脱当前不可用的连接。这是我设备的屏幕截图:

有一个名为“system”的条目,其地址为 IP 173.194.65.95。如果您执行如下所示的 whois 查询

您会看到这是一个 Google 服务器。尝试在浏览器中输入 IP(因此不允许在 IP 地址上设置链接)。

但系统连接并不总是存在。当您查看 u0_a19 时,您还会看到 Google 服务器。此连接始终存在,并且可能在您的系统上具有不同的名称。在您的屏幕截图中,我看到 u0_a7 指向 Google 服务器。

当我在 terminal window 中执行 ps | grep u0_a19 时,我得到:

com.google.process.location com.google.process.gapps com.google.android.gms

com.google.android.gms 是Google Play Services,因此似乎有一个共享用于不同目的的连接,其中一个可能是推送通知。

【讨论】:

【参考方案2】:

像这样建立一个“实验室”:

互联网 你的路由器 你的电脑 你的 Android 设备。

Create an "ad-hoc" wi-fi connection,因此您的电脑将充当接入点并连接到互联网。

将 Android 设备连接到新连接,而不是直接连接到路由器。

使用 TcpDump 或 Wireshark 之类的工具来监控从 Google Play 和您的手机传递的消息。

如果你想root你的手机,更多的选项被列出here。

【讨论】:

以上是关于Android 推送通知:Google Play 服务如何连接到 Google Server的主要内容,如果未能解决你的问题,请参考以下文章

如果应用是从 Google Play 商店下载的,Android 应用是不是只会收到推送通知? (反应原生博览会)

如何在 java Play Framework 中发送推送通知

如何在 iOS 上禁用 Google Play 游戏服务中的推送通知权限?

未发送有关可用应用更新的 Google Play 推送通知。我错过了啥吗?

Android 应用无法从 Google Play 安装

Google+ 在自己的 Android 应用中推送通知