gpt4 book ai didi

android - 无需发送消息即可获取 GCM 规范注册 ID

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:52:24 25 4
gpt4 key购买 nike

我有一个使用 GCM 的应用程序的问题,场景是这样的:

  1. 应用已安装
  2. 应用程序调用 GCM 注册方法获取注册 ID“RID-1”
  3. 应用已卸载
  4. 再次安装该应用
  5. 应用程序再次调用 GCM 注册方法获取注册 ID“RID-2”

在第 5 步中,我需要获取之前的注册 ID,以便更新我的模型。

限制:
- 我试图在不使用外部存储的情况下做到这一点
- 我无法在服务器发送消息时更新模型,这应该在注册后完成,因为在应用程序中会为每个新设备创建一个新的配置文件

我知道此信息在 Google 服务器中,因为它是在您向旧注册 ID 发送消息时发送给您的。例如,如果我向“RID-1”发送消息,在响应中我得到新的(规范的)注册 ID 是“RID-2”。我需要的是一种无需发送消息即可获取此信息的方法。

如果您需要更多背景信息,请告诉我。


我发现了几个相关问题,但答案不适用于这种情况:
Registration ID duplication for GCM
gcm canonical id should be updated or not
Persistance of gcm registration id
Google Cloud Messaging - Registration ID status
Android GCM: How to detect registered canonical ids in my own server?
Handling registration ID changes in Google Cloud Messaging on Android
(全部由 @eran 回答)

最佳答案

您可以指定 "dry_run": true option/send 请求中。

我发现设备不会收到任何带有 "dry_run": true 选项的推送通知,而服务器会收到 canonical_ids 响应。

这是 Ruby 中的示例代码。您可能必须事先安装 gcm Gem。

$ gem 安装 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"
}]

同样,您的设备将不会收到任何推送通知。

关于android - 无需发送消息即可获取 GCM 规范注册 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27805098/

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