我正在使用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;
}
有谁知道如何解决这个问题?我应该更改插件内的代码吗?我该怎么做?
答案 0 :(得分:0)
不熟悉Unity的GCM插件。但是,这清楚地表明您的应用无法找到您在Google开发人员控制台上创建的项目的发件人ID(项目编号)。找到它,并将其添加到mSenderIds数组。在创建该类的实例时,您似乎可以在构造函数中执行此操作。