GCM 如何在推送通知中识别设备?
Posted
技术标签:
【中文标题】GCM 如何在推送通知中识别设备?【英文标题】:How does GCM identify a device in Push Notifications? 【发布时间】:2018-05-08 12:53:09 【问题描述】:这是我的想法:Web 上的每个设备都必须有一个 IP 地址,如果它希望其他人向它发送 HTTP(或其他类型的)请求并依次响应发送者。在这里,这个设备标识符是 IP 地址,而不是 MAC 地址。
对于推送通知,I have read 有一个长轮询 TCP 套接字连接打开到 Google 的服务器,可以接收推送通知。
但是如何……神奇地?
我知道,如果我发送请求并期望得到响应,或者如果 IP 具有链接的域而不是域用作服务器的 ID,则 IP 地址会更有效。但是,我的手机没有绑定域名,IP很容易改变。
使 Google 的服务器能够向我发送通知的“ID”是什么?
【问题讨论】:
您需要在应用程序启动时注册一个推送通知 id。见here for details. 【参考方案1】:第一个技巧是,打开连接的是设备。
每个想要接收通知的应用程序都必须向设备(系统)注册并获得一个令牌(对于设备/用户和应用程序来说是唯一的)。此令牌充当此特定应用程序的地址。系统知道所有这些应用程序注册的所有令牌,因此它可以对谷歌服务器说:“这是该设备想要收听的所有令牌的列表。”
并且应用程序必须将此令牌发送到它的后端,因此后端也知道设备的地址。
【讨论】:
然后,当设备(实际上是 Google Play 应用程序)向 GCM 服务器发起 TCP 连接时,它需要提供这些注册令牌以及连接,以便 GCM 服务器知道要打开哪些连接当他们收到消息时发送消息? @stdout 没错,或者至少是类似的东西。请记住,当前的实现不是开源的,并且可能在细节上有所不同。以上是关于GCM 如何在推送通知中识别设备?的主要内容,如果未能解决你的问题,请参考以下文章