我知道这些方法已被弃用,但由于新的 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 起什么作用?
 
答案表示赞赏。