我正在建立一个使用GCM的图书馆。我正在用也实现GCM的示例应用程序进行测试。
我对两个都使用了相同的实现,只是每个实现都有自己的发送者ID
这就是我为用于测试库的示例应用程序编写的内容。我还为库编写了相同的内容,但为服务使用了不同的名称:
<!-- GCM -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.example.instabug" />
</intent-filter>
</receiver>
<service
android:name=".SampleInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:name=".SampleGcmRegistrationIntentService"
android:exported="false"/>
<service
android:name=".SampleGcmListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
我的问题是,每当我向库发送推式通知时,App接收器始终会捕获该通知。库接收器不执行任何操作。
有没有办法解决这个问题?
最佳答案
据我了解,您有两个服务具有相同的意图过滤器。在这种情况下,Android将选择优先级较高的服务(前景)。如果优先级相同-将随机选择,即只有一项服务会收到该意图。
对于您的情况,最佳解决方案是仅使用一项服务并根据from
中onMessageReceived()
的GcmListenerService
(senderId)参数进行调度。