2013-08-29 45 views
1

所以,我在GCM上運行在較低版本的Android上的設備上有這個奇怪的問題。我有一個啓用了GCM的android庫項目。我將它作爲jar導出,然後將其包含在測試應用程序中。它適用於api level 17的設備和仿真器,並且設備已成功註冊,但在低於此設置的情況下無法正常工作。現在,這是一個怪異的部分:如果我將庫項目作爲獨立項目運行,它可以在所有設備上正常工作,包括api級別10.是否有任何人知道可能的原因?圖書館中Android 4以下的GCM問題項目

注意:使用庫對我很重要。

編輯:
這是我得到我的日誌貓:

D/GCMRegistrar(505): resetting backoff for com.example.gcmtest 
    V/GCMRegistrar(505): Registering app com.example.gcmtest of senders 378013620721 

並沒有進一步的迴應。

+0

不起作用?你能有點特別嗎?你收到任何錯誤信息嗎? –

+0

嘗試[this](http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/)代碼絕對可以幫助您... 。您可能會錯過這個'<! - GCM需要Android SDK 2.2版(API級別8)或更高版本。 - > ' –

+0

@kartheek我已經在我的測試應用程序清單文件中有這些設置。 –

回答

3

好吧,我想出了自己。以防將來有人面對這個問題;
我會盡力解釋是什麼問題。
所以我有一個GCM集成的圖書館項目com.test.gcm-library。我想在另一個應用程序項目中使用這個庫,如com.example.gcmtest。通過遵循接受的答案here我設法成功地在我的com.example.gcmtest項目中使用該庫。它適用於API級別17,但是當我用api level 10嘗試它時,沒有任何GCMIntenetService方法會被調用,因爲我在我的問題中發佈了任何響應,但我終於設法修復了它。訣竅是在清單文件中更改接收者的意圖類別。準確地說,我改變了接收申報com.example.gcmtest從這個清單文件:

<receiver 
     android:name="com.test.gcm-library.MyCustomBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 

      <!-- Receives the actual messages. --> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <!-- Receives the registration id. --> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

      <category android:name="com.test.gcm-library" /> 
     </intent-filter> 
    </receiver> 

這樣:

<receiver 
     android:name="com.test.gcm-library.MyCustomBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 

      <!-- Receives the actual messages. --> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <!-- Receives the registration id. --> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

      <category android:name="com.example.gcmtest" /> 
     </intent-filter> 
    </receiver> 

我不知道爲什麼,但接收器類別字段看起來像API 17的「無關」條件,但對於較低的API,這是我必須做的工作。

+0

我不知道爲什麼類別在API 17中沒有任何區別。我有一個API 8設備,因此對於我而言,在清單中正確定義所有內容(根據GCM文檔)始終非常重要。 – Eran

+0

我已經參考了庫項目的根包,因爲它包含了自定義的GCM廣播接收器和意圖服務定義,但它看起來像是尋找主機應用程序根包。我對嗎 ? –

+0

好的..謝謝你的迴應。 –