我使用GCM向用户发送单个消息。它运行正常,但当我使用pushwoosh向所有已注册的设备发送消息时,我收到错误,错误是
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/google/android/gcm/GCMBaseIntentService'
所以我删除了GCM.jar文件,因为在PushWoosh中他们已经提供了GCMIntentService类,但我在GCMIntentService.java文件中遇到了另一个错误,如下所示
http://www.imagesup.net/?di=1414011958054
这里我建议删除匹配GCMIntentService的参数,并且构造函数是未定义的。建议如下
public GCMIntentService() {
// Call extended class Constructor GCMBaseIntentService
super();
}
如果我删除Config.GOOGLE_SENDER_ID,我们如何设置发件人ID。
答案 0 :(得分:1)
GCMBaseIntentSerice的此构造函数是特定于上下文的。未设置发件人ID的构造函数,在发件人ID是特定于上下文时很有用。使用此构造函数时,子类必须覆盖getSenderIds(Context),否则诸如onHandleIntent(Intent)之类的方法将在运行时抛出IllegalStateException。查看官方文档http://developer.android.com/reference/com/google/android/gcm/GCMBaseIntentService.html#GCMBaseIntentService()
重写方法后,您可以在那里设置发件人ID。请参阅下面的代码。
@Override
protected String[] getSenderIds(Context context) {
String[] ids = new String[1];
ids[0] = Config.GOOGLE_SENDER_ID;
return ids;
}
答案 1 :(得分:0)
使用Pushwoosh,您无需深入了解GCMIntentService。 只需将Project ID放入应用程序标记下的AndroidManifest.xml中:
<meta-data android:name="PW_APPID" android:value="4F0C807E51EC77.93591449" />
<meta-data android:name="PW_PROJECT_ID" android:value="A60756016005" />
请参阅此处的第4步: http://www.pushwoosh.com/programming-push-notification/android/native-android-sdk-integration/