谷歌云消息注册时失去连接,然后应用程序崩溃



我使用Unity的GCM插件。我用动态senderid注册它。但如果我在注册时失去连接,应用程序就会崩溃。

错误日志为:

W/System.err( 4993): java.lang.IllegalStateException: sender id not set on constructor
W/System.err( 4993):    at com.google.android.gcm.GCMBaseIntentService.getSenderIds(GCMBaseIntentService.java:125)
W/System.err( 4993):    at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:237)
W/System.err( 4993):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
W/System.err( 4993):    at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err( 4993):    at android.os.Looper.loop(Looper.java:145)
W/System.err( 4993):    at android.os.HandlerThread.run(HandlerThread.java:61)
E/AndroidRuntime( 4993): FATAL EXCEPTION: IntentService[GCMIntentService-DynamicSenderIds-2]
E/AndroidRuntime( 4993): Process: ba.lum.tribalrivals.arabic, PID: 4993
E/AndroidRuntime( 4993): java.lang.Error: FATAL EXCEPTION [IntentService[GCMIntentService-DynamicSenderIds-2]]
E/AndroidRuntime( 4993): Unity version     : 4.6.7f1
E/AndroidRuntime( 4993): Device model      : samsung SM-N910C
E/AndroidRuntime( 4993): Device fingerprint: samsung/treltexx/trelte:5.0.1/LRX22C/N910CXXU1BOE1:user/release-keys
E/AndroidRuntime( 4993): 
E/AndroidRuntime( 4993): Caused by: java.lang.IllegalStateException: sender id not set on constructor
E/AndroidRuntime( 4993):    at com.google.android.gcm.GCMBaseIntentService.getSenderIds(GCMBaseIntentService.java:125)
E/AndroidRuntime( 4993):    at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:237)
E/AndroidRuntime( 4993):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
E/AndroidRuntime( 4993):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 4993):    at android.os.Looper.loop(Looper.java:145)
E/AndroidRuntime( 4993):    at android.os.HandlerThread.run(HandlerThread.java:61)

我发现原因是在gcm.jar(插件库)中的这段代码:

protected String[] getSenderIds(Context context)
  {
    if (this.mSenderIds == null) {
      throw new IllegalStateException("sender id not set on constructor");
    }
    return this.mSenderIds;
  }

有谁知道如何解决这个问题吗?我应该改变插件内的代码吗?怎么做呢?

不熟悉Unity的GCM插件。然而,这清楚地表明你的应用程序无法找到你在Google开发者控制台创建的项目的发送者ID(项目号)。找到它,并将其添加到mSenderIds数组中。当您创建该类的实例时,似乎可以在构造函数中这样做。

相关内容

最新更新