【问题标题】:Android - How to implement Canonical IDs for GCM to prevent duplicatesAndroid - 如何为 GCM 实施规范 ID 以防止重复
【发布时间】:2013-04-23 11:06:20
【问题描述】:

我已经在我的应用程序中实现了 GCM,并且我的设备在重新安装应用程序后收到两个警报。我已经阅读了有关规范 id 的信息,但很难找到有关如何使用它或如何/在何处实现它的信息。谷歌的文档有时非常模糊,没有提供示例。这就是我进行正常注册以获取 regID 的方式。

GCMRegistrar.register(this, getString(R.string.gcm_project_id));

我是否更改此代码以发送规范注册,如果是,如何更改?我的服务器没有告诉我有任何规范 id,它总是说成功 3(对于其他设备应该是 2)和规范 0。所以我无法更新数据库,因为它不会让我知道有骗人的。

【问题讨论】:

    标签: android push-notification google-cloud-messaging


    【解决方案1】:

    您正在混合内容,此调用接受从 google api 控制台获取的发件人 ID。注册 ID 通过 GCMBaseIntentService 中的 onRegistered 方法发送给您,您应该将其发送到服务器,以便您可以在推送通知发送中使用它。现在,如果您有一个旧的注册 ID,那么谷歌将在发送服务的响应中向您的服务器发送更新的注册 ID AKA 规范 ID。

    【讨论】:

    • 我想我现在明白了,但这有点令人困惑。我没有收到通知说我有重复,因为我的服务器以某种方式注册了该 ID 两次,所以从技术上讲,它只是被使用两次来发送消息的相同 ID。这就是为什么规范 ID 在响应中说 0 的原因。我想有时事情对我来说不是很清楚,即使我读了几个 SO 问题。感谢您的回复。
    • @Mahdi Hijazi 不适用于我的情况,我已向旧应用程序 'reg_id' 和重新安装的应用程序 'reg_id' 发送消息,但旧应用程序 GCM 显示 { error: 'NotRegistered' } 和 ' canonical_ids:0,我仍然没有得到 canonical_ids 你能告诉我为什么它不适合我吗??
    【解决方案2】:

    我们需要用我们存储的服务器中的规范 id 更新现有的注册 id。你可以使用这个答案Update Canonical Id

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2016-10-25
      • 2017-02-25
      • 1970-01-01
      相关资源
      最近更新 更多