GCM 多设备令牌

Posted

技术标签:

【中文标题】GCM 多设备令牌【英文标题】:GCM multiple device tokens 【发布时间】:2014-12-29 07:15:35 【问题描述】:

当不同用户在重新安装应用后从同一设备登录时,会在应用服务器上为同一用户插入多个设备令牌。这是因为在应用服务器上,我们禁用了映射到相同 GCM 注册 ID 的所有用户 ID。这样做是为了通过清除数据来处理来自同一设备的不同用户的登录(在这种情况下,设备令牌保持不变,因此比较解决了问题)。由于我们正在批量发送通知,我们无法将规范 Id 映射到用户并禁用它们。

我在服务器端的代码是:

            MulticastResult result = null;
            Sender sender = new Sender(GOOGLE_SERVER_KEY);
            Message messag = new Message.Builder().timeToLive(86400)
                    .delayWhileIdle(false)
                    .addData(MESSAGE_KEY, notificationJsonObject.toString())
                    .build();
            try 
                Result result = sender
                        .sendNoRetry(messag, androidDevicesTokens);
                result.getResults().get(0).getCanonicalRegistrationId();
             catch (IOException e) 
                e.printStackTrace();
            

【问题讨论】:

【参考方案1】:

由于我们正在批量发送通知,我们无法将规范 ID 映射到用户并禁用它们

将规范 ID 映射到应删除的旧注册 ID 应该没有问题。

如果result.getResults().get(i) 包含规范注册ID,则要删除的匹配旧注册ID 是androidDevicesTokens.get(i)

【讨论】:

以上是关于GCM 多设备令牌的主要内容,如果未能解决你的问题,请参考以下文章

getExpoPushTokenAsync出现问题,错误“无法获取设备的GCM令牌”

使用 GCM 重新安装应用程序后,获取旧设备令牌的推送通知成功

Android 解析推送通知和新 GCM 生成错误的设备令牌并解析推送通知不起作用

如何验证 android 设备令牌

GCM 的令牌 id 是设备 uuid 的良好替代品吗?

即使卸载后旧的 GCM 令牌仍然存在吗?