2012-07-04 16 views
15

से डेटा प्राप्त करें क्या "जीसीएम अधिसूचना" से डेटा प्राप्त करने का कोई तरीका है। यहां मेरी जेसन स्ट्रिंग का एक हिस्सा है जिसे मैं जीसीएम के साथ भेजता हूं: {"data":{"id":"123"}}। मुझे अपने ऐप में आईडी का मूल्य प्राप्त करने की ज़रूरत है, लेकिन मुझे नहीं पता कि कैसे ... बहुत बहुत धन्यवाद।जीसीएम अधिसूचना

उत्तर

26

यदि आप नई जीसीएम लाइब्रेरी का उपयोग कर रहे हैं, तो आपको एक कक्षा बनाने की जरूरत है जो IntentService को बढ़ाती है, यही वह जगह है जहां जीसीएम लाइब्रेरी आपको जीसीएम संदेश प्राप्त होने पर सूचित करेगी।)

@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 प्रतिसाद अपने रिसीवर में एक इरादे में आप के लिए आ रहा है, तो आप आशय की getExtras उपयोग कर सकते हैं (: कृपया MyIntentService.java नमूना पर एक नज़र डालें। getString() को अपनी जीसीएम अधिसूचना से कुंजी/मूल्य जोड़ी पुनर्प्राप्त करने के लिए। जैसे

// 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);   
    } 
} 
+0

ठीक है, लेकिन कैसे मैं यहाँ (संरक्षित शून्य onMessage (संदर्भ संदर्भ, आशय आशय)) अधिसूचना स्ट्रिंग मिल सकता है? – mysho

+0

मेरा जवाब अपडेट किया गया, एक नज़र डालें। – azgolfer

+0

मैं इरादे से gcm_notification_string कैसे प्राप्त कर सकता हूं? –

6

इसे जेसन प्रतिनिधित्व के रूप में प्राप्त करने का सबसे अच्छा तरीका आपके डेटा को जेसन ऑब्जेक्ट के रूप में जोड़ रहा है।

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

तो बस अपनी वस्तु पार्स करने के लिए:

String json = getIntent().getExtras().getString("my_json_object"); 
JsonObject jObject = new JsonObject(json); 
+0

और सबसे अच्छा तरीका जिसे मैंने "जेसन ऑब्जेक्ट के रूप में अपना डेटा जोड़ना" पाया है: 'स्ट्रिंग जेसन = gson.toJson ([YOUR_OBJECT]); संदेश संदेश = नया संदेश। बिल्डर()। एडडाटा ("संदेश", जेसन) .build(); gcmresult = sender.send (msg, [आपका जीसीएम ग्राहक आरईजी आईडी], 5); ' –

0
<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" /> 
+0

अधिसूचना प्राप्त करने के लिए अपना जीसीएम ब्रॉडकास्ट रिसेविवर क्लास और जीसीएमआईन्टेंट सेवा वर्ग जोड़ें –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^