使用pushwoosh和gcm库时出错

时间:2014-05-27 13:07:56

标签: android push-notification google-cloud-messaging pushwoosh

我使用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。

2 个答案:

答案 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/