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