हाय मैं पुश नोटिफिकेशन भेजने के लिए साधारण फायरबेस अधिसूचना कंसोल का उपयोग कर रहा हूं, लेकिन जब मेरा ऐप करीब है, तो मुझे केवल अधिसूचना की डिफ़ॉल्ट शैली मिल सकती है। क्या कोई यह दिखा सकता है कि ऐप के भीतर सूचनाओं की कस्टम शैली के साथ इसे कैसे काम करना है। यह मेरा onMessageReceived है

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {



    Log.d(this.getClass().getSimpleName(), "onMessageReceived");

    String message = remoteMessage.getData().get("image");


    Log.d(this.getClass().getSimpleName(), "From: " + remoteMessage.getFrom());

    //Check if the message contains data
    if(remoteMessage.getData().size()>0){
        Log.d(this.getClass().getSimpleName(), "Message data: " + remoteMessage.getData());
    }

    //Check if the message contains notification
    if(remoteMessage.getNotification() != null){
        Log.dthis.getClass().getSimpleName(), "Message body: "+remoteMessage.getNotification().getBody());
        sendNotification(remoteMessage.getNotification().getBody());
    }
}

और यह मेरी प्रेषण सूचना है

private void sendNotification(String body) {

    Intent intent = new Intent(this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent pendingintent = PendingIntent.getActivity(this, 0/*Request code*/, intent, PendingIntent.FLAG_ONE_SHOT);
    //set sound of notification
    Uri notificationSoound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notifiBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("Firebase Cloud Messaging")
            .setContentText(body)
            .setAutoCancel(true)
            .setSound(notificationSoound)
            .setContentIntent(pendingintent);

    NotificationManager noticationmessanger = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    noticationmessanger.notify(0/*Id of notification*/,notifiBuilder.build());


}
0
Serg 25 अप्रैल 2017, 10:44
कृपया इसे देखें फ़ायरबेस में पृष्ठभूमि में ऐप होने पर अधिसूचना"> stackoverflow.com/questions/37711082/…
 – 
Anand Savjani
25 अप्रैल 2017, 12:19
 – 
Anand Savjani
25 अप्रैल 2017, 12:19
"सूचनाओं की कस्टम शैली" से आपका क्या तात्पर्य है?
 – 
Ferdous Ahamed
25 अप्रैल 2017, 12:27
मैं छवि के साथ अधिसूचना बनाना चाहता हूँ
 – 
Serg
25 अप्रैल 2017, 12:36
छवि के साथ अधिसूचना के लिए यह देखें
 – 
b devloper
25 अप्रैल 2017, 15:32

4 जवाब

FCM के साथ, आप क्लाइंट को दो प्रकार के संदेश भेज सकते हैं:

अधिसूचना संदेश, कभी-कभी "संदेश प्रदर्शित करें" के रूप में सोचा जाता है। डेटा संदेश, जिन्हें क्लाइंट ऐप द्वारा नियंत्रित किया जाता है।

इसलिए यदि आप संदेशों को स्वयं संभालना चाहते हैं, तो आपको सर्वर से अधिसूचना के भाग के रूप में केवल डेटा विशेषता भेजने की आवश्यकता है। यदि आप अधिसूचना विशेषता जोड़ते हैं, तो फायरबेस इसे स्वचालित रूप से संभाल लेगा और आप इसे अनुकूलित नहीं कर पाएंगे।

1
Sushobh Nadiger 25 अप्रैल 2017, 15:27

@Serg मैंने हाल ही में फायरबेस नोटिफिकेशन लागू किया है और उसी मुद्दे का सामना किया है। जब आपका ऐप बैकग्राउंड में होता है और फायरबेस कंसोल के जरिए नोटिफिकेशन भेजा जाता है तो आप नोटिफिकेशन को कस्टमाइज़ नहीं कर सकते। ऐसा इसलिए है क्योंकि आपके रिसीवर की onMessageReceived विधि को कॉल नहीं किया जाएगा। इसे संभालने के लिए आपको पोस्टमैन (फायरबेस रेस्ट क्लाइंट) के माध्यम से अपनी अधिसूचना भेजनी होगी। यह आपको पृष्ठभूमि या अग्रभूमि दोनों में अपनी अधिसूचना को अनुकूलित करने की अनुमति देगा। इसके अलावा, आप एक आंतरिक एपीआई का उपयोग कर सकते हैं जो अधिसूचना भेज सकता है।

0
Aditi 25 अप्रैल 2017, 11:37
मैंने पोस्टमैन के साथ परीक्षण किया लेकिन कुछ गलत हो गया मुझे यह मिल गया अनुरोध में प्रमाणीकरण कुंजी (एफसीएम टोकन) गुम थी। कृपया, अनुभाग "प्रमाणीकरण" FCM दस्तावेज़ों के, firebase.google.com/docs/cloud- पर मैसेजिंग/सर्वर.>

अनुरोध में एक प्रमाणीकरण कुंजी (FCM टोकन) नहीं थी। कृपया, अनुभाग "प्रमाणीकरण" FCM दस्तावेज़ों में, firebase.google.com/docs/cloud-messaging/server< पर /ए>.

 – 
Serg
25 अप्रैल 2017, 13:18
मैंने कंसोल क्लाउड मैसेजिंग और पुरानी कुंजी और नई से firbase-json फ़ाइल से सभी कुंजियों का परीक्षण किया
 – 
Serg
25 अप्रैल 2017, 13:19
क्या आपने पेलोड के "टू" भाग में पंजीकरण टोकन जोड़ा है? क्या आप अपना पेलोड पोस्ट कर सकते हैं
 – 
Aditi
25 अप्रैल 2017, 13:21
यह ?{ "to": "/topics/my_topic", "data": { "my_custom_key": "my_custom_value", "other_key": true}}
 – 
Serg
25 अप्रैल 2017, 13:27
पेलोड ठीक है। यह मेरे लिए काम कर रहा है। मुझे लगता है कि आपने अनुरोध करते समय एफसीएम सर्वर कुंजी नहीं जोड़ा है
 – 
Aditi
25 अप्रैल 2017, 13:30

यह मेरा फायरबेस वर्ग है

सार्वजनिक वर्ग MyFirebaseMessagingService FirebaseMessagingService का विस्तार करता है {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Map<String, String> data = remoteMessage.getData();
    String myCustomKey = data.get("my_custom_key");


    Log.d(Constants.TAG_FRAGMENT,"YESSSSSS" +myCustomKey);

    }
}

या तो यह YESSSSSS मुझे नहीं मिला

यह मेरा कच्चा है

{
"to": "/topics/my_topic",
"data": {
    "my_custom_key" : "my_custom_value",
    "other_key" : true
 }

}

0
Serg 25 अप्रैल 2017, 15:49

FirebaseMessagingService में

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    if (remoteMessage == null)
        return;

    //create notification
    if (remoteMessage.getNotification() != null) {

        // Defualt notification genarate by system
    }

    // Check if message contains a data payload.
    if (remoteMessage.getData().size() > 0) {

        try {

            Map<String, String> data = remoteMessage.getData();
            handleDataMessage(data);
        } catch (Exception e) {
            Log.e(TAG, "Exception: " + e.getMessage());
        }
    }
}


private void handleDataMessage(Map<String, String> data) {

        // code of your custom notification
}

पोस्टर में (परीक्षण के लिए)

    {

     "registration_ids" : ["fsdfsa54sdf4asd"], // Your perticular user token id
     "data" : {
         "title" : "Testing",
         "message" : "Hi ",
     }
    }

या यदि आप विषय का उपयोग कर रहे हैं तो प्रतिस्थापित करें

 "registration_ids" : ["fsdfsa54sdf4asd"], // Your perticular user token id

से

  "to": "/topics/my_topic"

यहां यदि आप "सूचना" का उपयोग करते हैं तो यह एंड्रॉइड डिफॉल्ट अधिसूचना ट्रे द्वारा संभालता है। इसलिए जब भी आप इसे प्राप्त करते हैं तो मैन्युअल रूप से अधिसूचना को संभालने के लिए डेटा-संदेश का उपयोग करें। (मेरी अंग्रेजी के लिए खेद है)

बेहतर समझ के लिए यह लिंक देखें

0
Community 23 मई 2017, 15:02