我在使用 GCM 的应用程序时遇到问题,情况如下:
- 该应用程序已安装
- 应用程序调用 GCM 注册方法获取注册 ID“RID-1”
- 该应用程序已卸载
- 再次安装该应用程序
- 应用程序再次调用 GCM 注册方法,获取注册 ID“RID-2”
在第 5 步中,我需要获取之前的注册 ID,以便更新我的模型。
限制:
- 我试图在不使用外部存储的情况下执行此操作
- 当服务器发送消息时,我无法更新模型,应该在注册后完成,因为应用程序中会为每个新设备创建一个新的配置文件
我知道此信息位于 Google 服务器中,因为当您向旧注册 ID 发送消息时,该信息会发送给您。例如,如果我向“RID-1”发送消息,在响应中我得到新的(规范)注册 ID 是“RID-2”。我需要的是一种无需发送消息即可获取此信息的方法。
如果您需要更多背景信息,请告诉我。
我发现了几个相关的问题,但答案不适用于这种情况:
GCM 的注册 ID 重复 https://stackoverflow.com/q/23855205/1325646
gcm规范id是否应该更新 https://stackoverflow.com/q/23710404/1325646
gcm注册id的持久化 https://stackoverflow.com/q/23625662/1325646
Google 云消息传递 - 注册 ID 状态 https://stackoverflow.com/q/22840768/1325646
Android GCM:如何检测我自己的服务器中注册的规范 ID? https://stackoverflow.com/q/18889934/1325646
在 Android 上处理 Google Cloud Messaging 中的注册 ID 更改 https://stackoverflow.com/q/16838654/1325646
(全部由@eran https://stackoverflow.com/users/1221571/eran)
您可以指定"dry_run": true option https://developers.google.com/cloud-messaging/http-server-ref#table1 in /send
要求。
我发现设备没有收到任何推送通知"dry_run": true
选项,而服务器得到canonical_ids
回复。
这是 Ruby 中的示例代码。您可能需要安装gcm
事先宝石。
$ gem install gcm
Ask_canonical_ids.rb
require 'gcm'
require 'json'
API_KEY = "YourApiKey"
gcm = GCM.new(API_KEY)
registration_ids = [
'OldRegistrationId',
]
option = { data: { 'message' => 'Hello Gcm!' }, dry_run: true }
response = gcm.send_notification(registration_ids, option)
p response[:canonical_ids]
的输出$ ruby ask_canonical_ids.rb
(已格式化)
[{
:old => "OldRegistrationId",
:new => "NewRegistrationId"
}]
同样,您的设备将不会收到任何推送通知。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)