GCM android客户端无法正常工作

时间:2016-02-05 20:53:02

标签: java android google-cloud-messaging

当用户不在应用程序中时,我正在尝试使用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();
}

1 个答案:

答案 0 :(得分:1)

我设法解决了这个问题。

我有

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

Android Manifest中有两次我失踪了

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