我在Android应用中使用Google Cloud Messaging时遇到了麻烦,但我遇到了困难。我已经成功地让我的应用程序将其注册令牌与我的应用服务器同步,而这部分似乎与documentation描述它的方式有关。据我所知,我需要在我的应用程序中扩展GcmListenerService的服务,我必须覆盖onMessageReceived方法来处理消息。这是我对该类的实现,我基本上从example repo逐字复制:
public class GCMListenerService
extends com.google.android.gms.gcm.GcmListenerService {
@Override
public void onMessageReceived(String from, Bundle data) {
String message = data.getString("message");
Log.d("response", message);
}
}
我也相应地更新了我的清单,以便考虑这项新服务:
<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="xx.xx.xx.gcm" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
</intent-filter>
</receiver>
<service android:name="xx.xx.xx.GCMListenerService" android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
</service>
尽管如此,onMessageReceived方法永远不会执行。为了测试它,我一直在以https://gcm-http.googleapis.com/gcm/send的形式发送一个JSON对象形式的HTTP帖子,其中&#34;到&#34; field设置为我的InstanceIdListener类创建的标记。成功发布后,我收到类似以下内容的消息:
Response:
{"multicast_id":7148018997883491563,
"success":1,"failure":0,"canonical_ids":0,
"results":[{"message_id":"long string that never changes"}]}
我的Android设备已连接到互联网,我确信这是因为我有一个基本的登录服务器,可以通过网络正确验证登录凭据,这可以正常工作。
我试过调用startService(),尽管事实上我在上面链接的那个repo中的示例应用程序似乎永远不会。无论我是否这样做,结果仍然是我发送消息后的沉默。请有人帮帮我吗?