我正在研究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);
}
}
}
注意:请不要将此与强制停止申请混淆。