GCM广播接收机(GCM Broadcast Receivers)

2019-10-21 08:49发布

所以,我一直与Pubnub和GCM。 虽然这个问题比较GCM / Android的特定比Pubnub。 我有2个应用程序 - 一个是我自己的另一个pubnub的例子。

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" />

逸岸矿更是把。

什么可能我是做错了,我自己的应用程序的接收器没有被称为GCM通知时通过它发送? 我的期望是,因为它具有类似接收端的播放多个应用程序会接受他们?

注:这是不是真的在我的工作,但测试,并试图理解这个概念是如何工作的要求。

Answer 1:

有一个问题,我可以看到的是,在你的AndroidManifest文件类别标签必须更新你的包名。

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


Answer 2:

当你的应用与GCM注册它使用一个SENDER_ID和GCM返回registration_id。 我相信registration_id会为每个应用程序的唯一。 您可以通过检查返回时GCM每个应用抵抗者的registration_id检查。 如果你想传递给这两个应用的消息,那么你就需要把它发送到两个registration_ids



文章来源: GCM Broadcast Receivers