当用户不在应用程序中时,我正在尝试使用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();
}
答案 0 :(得分:1)
我设法解决了这个问题。
我有
<uses-permission android:name="com.google.android.c2dm.permission.SEND" />
Android Manifest中有两次我失踪了
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />