Java GCM广播接收器在应用程序关闭时未检测到GCM通知

Java GCM广播接收器在应用程序关闭时未检测到GCM通知,java,android,google-cloud-messaging,broadcastreceiver,Java,Android,Google Cloud Messaging,Broadcastreceiver,我有一个广播接收器,当应用程序处于打开状态且处于后台时,它会检测到即将到来的通知,但当最近的应用程序被清除时,接收器不工作,请给我一些建议 public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Explicitly specify that

我有一个广播接收器,当应用程序处于打开状态且处于后台时,它会检测到即将到来的通知,但当最近的应用程序被清除时,接收器不工作,请给我一些建议

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { 

    @Override
    public void onReceive(Context context, Intent intent) {
        // Explicitly specify that GcmIntentService will handle the intent.
        ComponentName comp = new ComponentName(context.getPackageName(),
                GcmIntentService.class.getName());
        JSONObject json = new JSONObject();
        try {
            json.putOpt("userid", StorePreference.GetSharedPreferenceDetails(context, "memberid"));
            json.putOpt("rid",StorePreference.GetSharedPreferenceDetails(context, "partnerid"));
            json.putOpt("message", "Received");
            BoundService.getInstance().onlinestatus(json);
        } catch (Exception e) {
            e.printStackTrace();
        }

        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
    }
}
明显减毒:

<receiver
    android:name="com.twogether.receivers.GcmBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND" >
      <intent-filter>
       <action android:name = "com.google.android.c2dm.intent.RECEIVE" />
       <category android:name="com.google.android.gcm.demo.app" />
      </intent-filter>
</receiver>

尝试在清单中注册收件人,使用GcmListenerService接收邮件

谷歌的例子有这样的例子

    <!-- gcm_receiver, this is android source-->
    <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.myapp.gcm" />
        </intent-filter>
    </receiver>

    <!-- gcm_listener service -->
    <service
        android:name="com.qblinks.qmote.GcmListenerService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>

}

尝试在清单中注册收件人,使用GcmListenerService接收邮件

谷歌的例子有这样的例子

    <!-- gcm_receiver, this is android source-->
    <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.myapp.gcm" />
        </intent-filter>
    </receiver>

    <!-- gcm_listener service -->
    <service
        android:name="com.qblinks.qmote.GcmListenerService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>

}

当应用程序关闭时,您需要唤醒应用程序,这意味着您需要获得这样做的权限

<uses-permission android:name="android.permission.WAKE_LOCK" />

当应用程序关闭时,您需要唤醒应用程序,这意味着您需要有权限这样做

<uses-permission android:name="android.permission.WAKE_LOCK" />

张贴你的舱单。只是想看看你是如何定义接收者的这是什么版本的GCM?您应该使用GcmListenerService而不是BroadcastReceiver@krishna我已经在这里添加了清单检查example@TimCastelijns我需要在后台检测gcm通知…发布您的清单。只是想看看你是如何定义接收者的这是什么版本的GCM?您应该使用GcmListenerService而不是BroadcastReceiver@krishna我已经在这里添加了清单检查example@TimCastelijns我需要在后台检测gcm通知。。。