Android 和 iOS gcm instanceID

Posted

技术标签:

【中文标题】Android 和 iOS gcm instanceID【英文标题】:Android and iOS gcm instanceID 【发布时间】:2015-10-23 17:07:51 【问题描述】:

iosandroid 上的不同行为

我们一直在尝试在 Android 和 iOS 上实现 GCM,但使用 instanceID 的行为存在差异。

在 Android 和 iOS 上,当我们每次注册应用程序时都请求实例 ID 时,我们会得到相同的令牌,如果我们不卸载并再次安装应用程序,这是真的,如果我们这样做,我们会有一个新的实例 ID在两者上,但旧的 android 令牌变为 NOT_REGISTER 并且 iOS 上的旧令牌仍在工作,让我们向同一 Android 设备发送 1 条消息(ok)和为同一 iOS 设备发送 2 条消息(not ok)

旧的 iOS instanceID 不应该是 NOT_REGISTER,就像它在 Android 上发生的那样吗?

【问题讨论】:

【参考方案1】:

最终旧的实例 ID 也会失效。但是,如果您生成一个新的实例 ID,您应该用新的替换旧的并停止发送到旧的。此外,如果您发送给旧的,您应该在响应中获得一个规范的 id,指示要使用哪个令牌而不是您刚刚使用的旧令牌。

【讨论】:

这就是我们在 Android 上的行为,在 iOS 上我们无法获得规范的 id,而且 iOS 上的旧实例 id 失效的时间比 Android 上的要长

以上是关于Android 和 iOS gcm instanceID的主要内容,如果未能解决你的问题,请参考以下文章

GCM:如何为 android 和 ios 应用程序使用相同的发件人 ID?

GCM - iOS 客户端控制推送通知?

Android GCM InstanceId.getToken() -> java.io.IOException: TIMEOUT

AWS SNS Android GCM - InvalidPlatformToken

Linphone如何支持Android / iOS上的推送通知

从应用服务器接收 GCM 推送通知消息的步骤