2014-12-05 132 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