2014-12-05 130 views
1

所以我一直在與Pubnub和GCM合作。雖然這個問題比Pubnub更具GCM/Android特定性。我有2個應用程序 - 一個是我自己的,另一個是pubnub的例子。GCM廣播接收器

Pubnub清單的接收器標籤:

<receiver 
    android:name="com.pubnub.pubnubexample.GcmBroadcastReceiver" 
    android:permission="com.google.android.c2dm.permission.SEND" > 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <category android:name="com.example.gcm" /> 
    </intent-filter> 
</receiver> 

我的應用程序的接收器標籤:

<receiver 
    android:name="com.myapp.app.MyReceiver" 
    android:permission="com.google.android.c2dm.permission.SEND" > 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <category android:name="com.example.gcm" /> 
    </intent-filter> 
</receiver> 

顯然,pubnub示例應用程序的廣播接收機不被調用,但沒有一個在我的。他們都有這些uses-permission

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

Infact礦山有更多。

當我通過它發送通知時,我的應用的接收者沒有被GCM調用,我可能會做錯什麼?我的期望是,因爲它是一個廣播與相似的接收器的多個應用程序會收到它們?

注意:這不是我工作中的真正需求,而是測試並試圖理解這個概念是如何工作的。

回答

1

我能看到的一個問題是您的AndroidManifest文件中的類別標記必須更新爲您的包名稱。

<category android:name="com.myapp.app." /> 
+0

這是我的包名稱。爲了這個問題,我只是將它改爲'com.myapp.app'。 – user1437328 2014-12-05 15:16:39

0

當您的應用程序向GCM註冊時,它使用sender_id並且GCM返回registration_id。我相信每個應用程序的registration_id都是唯一的。您可以通過檢查每個應用程序使用GCM進行訪問時返回的registration_id來檢查此問題。如果您希望將郵件發送到這兩個應用程序,那麼您需要將它發送到registration_ids