【问题标题】:Parse for Android: ParseInstallation.getCurrentInstallation().get(KEY_DEVICE_TOKEN) returns nullAndroid 解析:ParseInstallation.getCurrentInstallation().get(KEY_DEVICE_TOKEN) 返回 null
【发布时间】:2015-05-06 18:00:36
【问题描述】:
Parse for Android:尝试在 Parse 中获取设备令牌,但始终返回 null。这段代码大约在 6 个月前工作,但最近注意到了这个问题。稍后使用设备令牌订阅 Parse。它只是卡在 while 循环中。我使用的是 Parse 1.7.1 版本。即使我更新解析,这是否是获取设备令牌的正确方法?
private static final String KEY_DEVICE_TOKEN = "deviceToken";
boolean isTokenReady = false;
while (!isTokenReady) {
String deviceToken = (String) ParseInstallation.getCurrentInstallation().get(KEY_DEVICE_TOKEN);
if (!StringHelper.isNullOrEmpty(deviceToken)) {
isTokenReady = true;
} else {
sleep(1000);
}
}
ParsePush.subscribeInBackground("pushtoken_" + deviceToken);
【问题讨论】:
标签:
android
parse-platform
push-notification
token
【解决方案1】:
如果你正在检索一个字符串,你可以使用它:
ParseInstallation.getQuery().get(objectId).getString(KEY_DEVICE_TOKEN)
如果需要从默认安装类中获取objectId:
ParseInstallation.getCurrentInstallation().getObjectId();
我使用的是 1.9.2 版。希望这会有所帮助!
【解决方案2】:
Android parse sdk 有 11 次更新。我肯定会更新,因为有很多修复。
此外,您不必阻塞线程来等待设备令牌。在尝试获取 deviceToken 之前是否忘记保存安装?
像这样:
ParseInstallation.getCurrentInstallation().save();
String deviceToken = (String) ParseInstallation.getCurrentInstallation().get( "deviceToken" );
最后,我不确定为什么要使用唯一的设备令牌作为推送渠道。您可以直接使用 deviceToken。所以我建议不要订阅任何频道并使用他们的 deviceTokens 向选定的设备推送通知。
【解决方案3】:
我也花了很多时间在这个问题上......
getInstallationId() 似乎有效。我使用 installationId 来查询安装,现在它可以正常工作了