从GCM通知获取数据

有没有办法从“GCM通知”获取数据? 这里是我的jsonstring的一部分,我用gcm: {"data":{"id":"123"}} 。 我需要在我的应用程序中获得id的价值,但我不知道如何…非常感谢。

  • 从通知中恢复活动
  • 从通知打开对话框
  • 通知setAutoCancel(true)不起作用
  • 我可以覆盖Android中的默认推送通知图标从应用程序图标到自定义图标?
  • 用于iOS和Android的FCM远程通知负载
  • 如何分组android通知,如whatsapp?
  • 不可移动的通知
  • Android:当您的应用在后台运行时,在通知中使用AUTO-CANCEL
  • 如果您正在使用新的GCM库,则需要创build一个扩展IntentService的类,这是GCM库在收到GCM消息时通知您的位置。 请看看MyIntentService.java示例:

     @Override public final void onHandleIntent(Intent intent) { try { String action = intent.getAction(); if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) { handleRegistration(intent); } else if (action.equals("com.google.android.c2dm.intent.RECEIVE")) { handleMessage(intent); } } finally { synchronized(LOCK) { sWakeLock.release(); } } } private void handleMessage(Intent intent) { String id = intent.getExtra("id"); } 

    如果您没有使用GCM库,那么GCM响应就会以您的接收器为目的,然后您可以使用intent的getExtras()。getString()从GCM通知中检索键/值对。 例如

     // intent come in in your onReceive method of your BroadcastReceiver: public onReceive(Context context, Intent intent) { // check to see if it is a message if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) { String id = intent.getExtras().getString("id"); String other_key = intent.getExtras().getString("other_key"); // if your key/value is a JSON string, just extract it and parse it using JSONObject String json_info = intent.getExtras().getString("json_info"); JSONObject jsonObj = new JSONObject(json_info); } } 

    把它作为json表示的最好方法是把你的数据作为一个json对象来添加。

     { "registration_ids" : [ "id1", "id2" ], "data" : { "my_json_object": { "text" :"This is my message", "title":"Some title" } }, "collapse_key":"12345" } 

    然后parsing你的对象:

     String json = getIntent().getExtras().getString("my_json_object"); JsonObject jObject = new JsonObject(json); 
     <receiver android:name=".beforelogin.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="android.intent.category.TAB" /> </intent-filter> </receiver> <service android:name=".beforelogin.GcmIntentService" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />