当前位置: 首页 > 知识库问答 >
问题:

GCM 3.0:新注册不会使向GCMRegistar注册的令牌过期

上官鸿祯
2023-03-14

我们正在使用实例ID API切换通知架构体系,以使用新的GCM 3.0注册机制。以前我们使用旧的机制使用GCMRegistrar.register()方法。

我们遇到的问题是,我们注意到,如果设备是用旧的GCMRegistar注册的,那么在更新并用新的实例ID API注册之后,两个注册令牌都是有效的,并且可以接收通知。

我预计旧的注册令牌将被停用,并且当向旧令牌发送通知时,我们的推送服务器将收到规范的注册ID(如本文所述,GCM使用两个不同的工作注册ID注册),特别是应用程序版本已经更改,但这种情况似乎不会发生。

这是GCM的正确行为吗?有什么方法可以在推送服务器上检测到设备收到了新的令牌(而无需从应用程序中取消注册)?

共有2个答案

沙富
2023-03-14

注册令牌可能会在某些情况下发生变化,甚至在将来。而cononical注册ID也是一个好主意。使用tokenRefresh,如图所示。

js lang-js prettyprint-override">@Override
public void onTokenRefresh() {
    // Fetch updated Instance ID token and notify our app's server of any changes (if applicable).
    Intent intent = new Intent(this, RegistrationIntentService.class);
    startService(intent);
}
白智
2023-03-14

关于我的问题,我终于收到了谷歌支持部门的答复。事实证明,这是一种故意的行为:

由于需要支持向后兼容的注册ID,您观察到的是预期的行为。

我们建议您标记gcmregistar()中的旧注册ID,并且在获得getToken()中的注册令牌后,不要再使用该ID进行发送。(我相信您可能已经实施了一个解决方案来检测这种情况)

我们的解决方案是在注册新用户之前,简单地从推送服务器中删除旧的注册令牌。

我们没有使用GCMRegistrar.unregister(),因为我们观察到它能够注销新的令牌(通过getToken()获得)。

更新:

我只是想向对这个主题感兴趣的人提供一个快速的更新。

这个问题似乎已经解决了,因为当我们最近测试注册机制时,新的GCM令牌替换(并注销)旧令牌。

 类似资料:
  • 是否有一种方法可以在我的服务器上验证Firebase注册令牌,而无需往返Firebase服务器?我只是想知道它们是否有效,不一定是有效的。

  • 这个问题以前被问过很多次,也被回答过很多次,但是我不知道我做错了什么。从Firebase控制台向整个应用程序发送通知可以正常工作,但如果我向单个令牌发送通知,则Firebase控制台会出现错误:"Firebase注册令牌无效。检查令牌格式” 我正在Iphone设备上测试该应用程序。 已在创建新密钥https://developer.apple.com/account/ios/authkey/ 下载

  • 1.为什么注册会员时会出现商城未开放注册? 需要在【设置—基础设置—注册与访问】开启允许注册会员 2.商城有哪些注册类型? 普通注册、邮箱注册、手机注册,第三方QQ登录和微信登录 3.为什么系统后台会显示两个账号? 当微信开放平台未配置时,会出现类似情况。可参考使用手册使用手册 4.开启了自动登录,可是微信打开,还是没反应? 手机端非微信浏览器不支持微信登录,微信开放平台的登录方式只适用于电脑端微

  • 我对在我的应用程序中实施Firebase云消息传递有一些疑问。 我的应用程序类似于whatsapp和facebook messenger。现在,每次有人登录时,我都会注册令牌并将其与用户关联。因此,如果有人想与用户聊天,应用程序会在数据库中搜索用户ID,我在那里找到了他的令牌。 我可以注册设备令牌,但我不确定何时应该注册。 在我的聊天中,用户通过邮件/密码注册进行注册,并且用户可以登录其他设备。

  • POST /users 输入 名称 类型 描述 name 字符串 必须,用户名 phone 字符串 如果 verifiable_type 为 sms 则必须, 手机号码。 email String 如果 verifiable_type 为 mail 则必须, E-Mail。 password String 可选,密码,如果不输入密码,允许用户无密码注册。 verifiable_type 枚举:

  • 注册(创建账号)PlayStation®Network后,即可享受游玩在线游戏、在(PS Store)免费下载体验版游戏等乐趣。注册PlayStation®Network无需支付任何费用。此外,亦可在PS Vita上延用已在其它主机创建的账号。 请在可连接互联网的环境轻触[PlayStation®Network]>[注册],进行设定。 PlayStation®Network提供国家、区域和语言因地