[英]GCM Listener can't retrieve real value
我有一个GCM侦听器,一切正常,除了我在GCM消息(捆绑数据)中有一个参数(键,值),并且无法用他的get方法检索特定键,我必须“打补丁”(或重试)返回的值,如下所示:
// this can't retrieve the value,
// example: "id" in message is = 123, intValue gets 0 (default value for int)
int intValue = data.getInt("id");
if (intValue == 0) {
// but this way can catch the int value,
// example: "id" in message is = 123, intValue gets 123;
intValue = Integer.valueOf(data.getString("id"));
}
我必须在数据中“修补”返回的(或检索失败的)值,
为什么会这样呢? (密钥名称在两种情况下都相同,不应相同)
GCM捆绑包仅包含字符串映射。 这就是为什么getInt(“ id”)返回0的原因。您需要手动解析这些值。 只要确保捕获NumberFormatException,然后在这种情况下将变量设置为0。
int intValue;
try{
intValue = Integer.parseInt(data.getString("id"));
}catch (NumberFormatException e){
intValue = 0;
}
主要问题是我无法通过data.getInt(“ id”)获得id = 123的值; 但是我可以用data.getString(“ id”);获得值。 其余的值和类型都可以,例如getBoolean,get
然后,您必须检查如何生成发送到GCM服务器的JSON。 可能您正在发送ID attr。 作为一个字符串(带引号),这就是为什么您只能使用getString()读取其值的原因
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.