GCM - 在销毁应用程序时无法接收消息

时间:2015-11-13 12:54:15

标签: android google-cloud-messaging

我正在研究GCM我在我的应用程序中部署了GCM并且它应该正常工作,但这是以前的构建,因为我对GCM有一些了解我试图在我的新构建上集成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.jadoo.jadooplus.gcm" />
        </intent-filter>
    </receiver>

    <service
        android:name="com.jadoo.jadooplus.gcm.PromotionalListenerService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>

    <service
        android:name="com.jadoo.jadooplus.gcm.services.MyInstanceIDListenerService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.gms.iid.InstanceID"/>
        </intent-filter>
    </service>

    <service
        android:name="com.jadoo.jadooplus.gcm.services.RegistrationIntentService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>

但我仍然无法接收消息。我已经使用Log检查了传入的消息,但是从不调用onMessageReceived。

这是我的ListenerService

public class PromotionalListenerService extends GcmListenerService {

@Override
public void onMessageReceived(String from, Bundle data) {

    Log.d("Listener", "data=" + String.valueOf(data));

    if (from.startsWith("/topics/")) {

        //  topics messages
        if (Config.isActivityActive) {
            Intent messageReceived = new Intent(GcmConfig.MESSAGE_RECEIVED);
            messageReceived.putExtra(GcmConfig.MESSAGE_LABEL, data);
            LocalBroadcastManager.getInstance(this).sendBroadcast(messageReceived);
        }
        else {
            //  Show a notification
            sendNotification(data);
        }

    }
}

注意:请不要将此与强制停止申请混淆。

0 个答案:

没有答案