gpt4 book ai didi

android - GCM 测试,如何用 canonical_id 激发 GCM 服务器响应?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:15 25 4
gpt4 key购买 nike

我已成功实现客户端/服务器 Android GCM 应用程序。我的应用服务器拥有一个 device/registration_id 对的数据库。消息通过 Web 可访问的 PHP 页面发送到设备。我正在尝试在服务器端编写错误处理,特别是响应包含 canonical_id 的情况。开发人员文档非常清楚需要做什么以及为什么会产生这样的响应:

Canonical IDs

On the server side, as long as the application is behaving well, everything should work normally. However, if a bug in the application triggers multiple registrations for the same device, it can be hard to reconcile state and you might end up with duplicate messages.

GCM provides a facility called "canonical registration IDs" to easily recover from these situations. A canonical registration ID is defined to be the ID of the last registration requested by your application. This is the ID that the server should use when sending messages to the device.

If later on you try to send a message using a different registration ID, GCM will process the request as usual, but it will include the canonical registration ID in the registration_id field of the response. Make sure to replace the registration ID stored in your server with this canonical ID, as eventually the ID you're using will stop working.

因此,在我的 Android 客户端应用程序中,我有一个仅用于开发的按钮,它将第二次使用 GCMRegistrar.register() 注册设备,而无需先取消注册。我原以为这会让我得到一个与我第一次注册时不同的 registration_id,并且从网络向设备发送消息(可能使用旧 ID)会给我一个带有 canonical_id 的响应。

然而,第二次注册返回与第一次完全相同的 reg_id。

因此,在我的服务器上通过 PHP 发送消息不会在响应中显示 canonical_id。我真的需要测试返回一个canonical_id的情况,表明我需要更新我的数据库,因为我的PHP技术不是最好的!

所以任何关于我如何能引起这样的 react 的想法都将不胜感激

更新:我刚刚尝试从手机上卸载应用程序,然后重新安装。我仍然得到相同的 reg_id。

最佳答案

我回答了那个问题 - here .您可以尝试按照我用来获取规范注册 ID 的步骤进行操作。它确实涉及卸载应用程序,但也许您没有执行我在此处描述的所有步骤。

关于android - GCM 测试,如何用 canonical_id 激发 GCM 服务器响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com