繁体   English   中英

GCM侦听器无法获取实际价值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM