我知道这些方法已被弃用,但由于新的 GCM API 似乎有问题,我将恢复使用这些方法,直到谷歌推出稳定版本。
我们在清单中声明这个接收器。
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.myApp" />
</intent-filter>
</receiver>
<service android:name=".GCMIntentService" />
我们在 GCMIntentService 类中有 onMessage() 方法。
@Override
protected void onMessage(Context context, Intent intent)
{
Log.i(TAG, "Received message");
String message = intent.getExtras().getString("msg");
}
1. 但是,在收到消息后,永远不会调用此方法。为什么 ?
此外,我遵循的示例使用以下内容。
registerReceiver(mHandleMessageReceiver, new IntentFilter("intent_filter_string"));
与以下类相关联。
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
String newMessage = intent.getExtras().getString("data");
}
};
在 onPause 中未注册。
- 为什么我们需要创建这个广播接收器?
- 我们不能在清单中这样做吗?
- GCMIntentService 类中的 onMessage() 不是已经涵盖了这一点吗?
- Pending Intent String 起什么作用?
答案表示赞赏。