在重新安装应用程序后,当其他用户从同一设备登录时,会在应用程序服务器上为同一用户插入多个设备令牌。这是因为在应用程序服务器上,我们禁用映射到相同GCM registrationId的所有userId。这样做是为了通过清除数据来处理从同一设备登录不同用户(在这种情况下,设备令牌保持不变,因此比较解决了问题)。当我们批量发送通知时,我们无法将规范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();
}
答案 0 :(得分:0)
由于我们正在批量发送通知,因此我们无法将规范ID映射到用户并禁用它们
将Canonical ID映射到应删除的旧注册ID应该没有问题。
如果result.getResults().get(i)
包含规范的注册ID,则要删除的匹配的旧注册ID为androidDevicesTokens.get(i)
。