2016-09-23 11 views
6

से एंड्रॉइड यूआई अपडेट करें मैं एंड्रॉइड प्रोग्रामिंग में नौसिखिया हूं और मैं फायरबेस का उपयोग करके पुश अधिसूचना का उपयोग करने के लिए एक सरल ऐप को लागू करने की कोशिश कर रहा हूं। मैंने एंड्रॉइड प्रोजेक्ट (एंड्रॉइड स्टूडियो 2.2 का उपयोग करके) को Google प्रलेखन को बढ़ावा दिया है और मैं पृष्ठभूमि में अग्रभूमि में ऐप के साथ अधिसूचना प्राप्त करने में सक्षम हूं। मेरे पास दो वर्ग हैं जो FirebaseMessagingService (नाम MyFirebaseMessagingService) और FirebaseInstanceIdService (नाम MyFirebaseInstanceIDService) बढ़ाते हैं।फ़ायरबेस कॉलबैक

पहले में मेरे पास मैसेज रीसेसिव लागू करने की विधि है जो ऐप अग्रभूमि में है या जब मुझे अधिसूचना के हिस्से के रूप में "डेटा" टैग प्राप्त होता है तो ट्रिगर होता है।

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

    if (remoteMessage.getNotification() != null) { 
     Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
     String cappello; 
     cappello = remoteMessage.getNotification().getBody(); 
    } 

अब मेरी समस्या चर "Cappello" जैसा कि ऊपर उल्लेख का उपयोग कर मुख्य लेआउट में एक TextView अद्यतन करने के लिए है: तो मैं कोड के इस टुकड़े के अंदर है। मैं उसे कैसे कर सकता हूँ? मुझे विभिन्न वर्गों का उपयोग करके कुछ उदाहरण मिला है लेकिन उनमें से सभी उस मामले से कुछ अलग दिखते हैं।

हो क्या मैं मुख्य लेआउट के कुछ हिस्सों को अपडेट करने के लिए एक क्रिया को ट्रिगर कर सकता हूं? उदाहरण के लिए एक texView?

उत्तर

11

एक प्रसारण रिसीवर का उपयोग करें और अपनी गतिविधि, जो ट्रिगर किया जाता है में यह रजिस्टर जब नया संदेश,

लघु उदाहरण आता है अपने FirebaseMessagingService :: onMessageReceived में, आप इस हो सकता है:

cappello = remoteMessage.getNotification().getBody(); 
Intent intent = new Intent(); 
intent.putExtra("extra", cappello); 
intent.setAction("com.my.app.onMessageReceived"); 
sendBroadcast(intent); 
तब में

अपने MainActivity, आप एक BroadcastReceiver लागू:

private class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    Bundle extras = intent.getExtras(); 
    String state = extras.getString("extra"); 
    updateView(state);// update your textView in the main layout 
    } 
} 

और MainActivity का onResume() में इसके लिए रजिस्टर:

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction("com.my.app.onMessageReceived"); 
MyBroadcastReceiver receiver = new MyBroadcastReceiver(); 
registerReceiver(receiver, intentFilter); 
+0

ठीक है। यह बढ़िया काम करता है। धन्यवाद। – mrcbis