我正在建立一个使用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将选择优先级较高的服务(前景)。如果优先级相同-将随机选择,即只有一项服务会收到该意图。

对于您的情况,最佳解决方案是仅使用一项服务并根据fromonMessageReceived()GcmListenerService(senderId)参数进行调度。

10-08 11:45