实现GCM客户端时出现未知错误和警告

时间:2015-10-07 12:35:20

标签: android google-cloud-messaging google-play-services logcat

我正在尝试实施Github处找到的GCM客户端示例  但我无法在 MyGcmListenerService.java

中接收通知

当我浏览在我的android studio logcat中生成的日志时,我发现此警告和错误消息

警告

10-07 15:22:47.160  29844-29844/com.me.myapp W/asset﹕ AssetManager-->
addDefaultAssets CIP path not exsit!
10-07 15:22:47.352  29844-29844/com.me.myapp W/dalvikvm﹕ VFY: unable to resolve
virtual method 247: Landroid/app/Notification$Builder;.setLocalOnly (Z)
Landroid/app/Notification$Builder;

10-07 15:22:47.352  29844-29844/com.me.myapp W/dalvikvm﹕ VFY: unable to resolve
 instance field 18

10-07 15:22:47.359  29844-29844/com.me.myapp W/dalvikvm﹕ VFY: unable to resolve 
virtual method 1507: Landroid/os/UserManager;.getApplicationRestrictions
 (Ljava/lang/String;)Landroid/os/Bundle;

错误

10-07 15:03:37.070  10177-10177/com.me.myapp E/dalvikvm﹕ Could not find class 
'android.os.UserManager', referenced from method com.google.android.gms.common
.GooglePlayServicesUtil.zzah

10-07 15:03:37.156  10177-10177/com.me.myapp E/dalvikvm﹕ Could not find class 
'android.app.AppOpsManager', referenced from method com.google.android.gms.common.
GooglePlayServicesUtil.zzb

10-07 15:03:38.117  10177-10197/com.me.myapp E/GMPM﹕ getGoogleAppId failed with
 status: 10

10-07 15:03:38.132  10177-10197/com.me.myapp E/GMPM﹕ Uploading is not possible.
 App measurement disabled

10-07 15:07:11.320  10306-10306/com.me.myapp E/SensorManager﹕ thread start

10-07 15:07:17.164  10306-10703/com.me.myapp E/API_TASK﹕ Read timed out

问题

  • 我该如何解决部分或全部或此类错误和警告?
  • 他们是否无法接收来自GCM服务器的通知?

2 个答案:

答案 0 :(得分:1)

错误“com.me.myapp E / GMPM:getGoogleAppId失败,状态为:10”可能与apk密钥有关,同时,确保插入权限和拼写正确,我只是遇到了这个错误并解决了它通过从console.developers.google.com删除项目后重新创建密钥。

错误“E / dalvikvm:找不到类'android.app.AppOpsManager'可能与目标sdk版本有关,需要为AppOpsManager所需的19(iirc)或更高版本,请确保它是这样的gradle构建文件。

希望它有所帮助。

答案 1 :(得分:0)

声明的错误和问题与接收gcm通知无关。对于我的情况。从gcm连接服务器收到的gcmid未保存在数据存储区中。负责保存它的实体执行得很糟糕,因此我无法从GCM Connection服务器接收消息或通知。

  • 确保从连接服务器收到的gcmId已妥善保存在您的应用服务器中。(我使用objectify实现此目的)

  • 还可以在后端模块中使用Logger类,以便通过在重要阶段打印日志(消息)来跟踪您的实现。例如,当你收到gcmid(你可以在前端实现这个,因此使用Log.d()方法),如果gcmid已经保存到你的应用服务器(这里你使用实体来做这个,它在这里你使用{{1} } 因为这发生在后端模块)。

还在坚持?请在下方发表评论以寻求帮助