GCM android 客户端不工作

GCM android client not working

当用户不在应用程序中时,我正在尝试使用 GCM 从我们的服务器接收消息。

问题是 GcmListenerService 似乎不起作用,而注册工作正常。我们的服务器应该工作得很好,因为每次我们从服务器向 GCM 发送内容时,我们都会收到来自 GCM 服务器的确认。

这是我的清单(只有 GCM 部分)

<receiver
    android:name="com.google.android.gms.gcm.GcmReceiver"
    android:exported="false"
    android:permission="com.google.android.c2dm.permission.SEND">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
        <category android:name="my.package.package"/>
    </intent-filter>

    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
        <category android:name="my.package.package"/>
    </intent-filter>
</receiver>

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

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

这是简化的 onMessageReceived

@Override
public void onMessageReceived(String from, Bundle data)
{
    saveDataToDatabase(data);
    dataReceivedNotification();
}

我设法解决了这个问题。

我有

<uses-permission android:name="com.google.android.c2dm.permission.SEND" />

Android 清单中的两次我都失踪了

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />