Android पुश सूचनाएँ: अधिसूचना में प्रदर्शित नहीं होने वाला आइकन, इसके बजाय दिखाया गया सफेद वर्ग


179

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

मैंने आइकन के आकार (आयाम 720x720, 66x66, 44x44, 22x22) का आकार बदलने की कोशिश की है। उत्सुकता से, छोटे आयामों का उपयोग करते समय सफेद वर्ग छोटा होता है।

मैंने इस समस्या को हल कर दिया है, साथ ही साथ सूचनाओं को उत्पन्न करने का सही तरीका, और जो मैंने पढ़ा है उससे मेरा कोड सही होना चाहिए। दुख की बात यह नहीं है कि उन्हें होना चाहिए।

मेरा फोन एंड्रॉइड 5.1.1 के साथ एक नेक्सस 5 है। समस्या एमुलेटर पर भी मौजूद है, एंड्रॉइड 5.0.1 के साथ एक सैमसंग गैलेक्सी एस 4 और एंड्रॉइड 5.0.1 के साथ एक मोटोरोला मोटो जी (दोनों जिनमें से मैंने उधार लिया था, और अभी नहीं है)

सूचनाओं के लिए कोड निम्नानुसार है, और दो स्क्रीनशॉट। यदि आपको अधिक जानकारी की आवश्यकता है, तो कृपया इसे पूछने के लिए स्वतंत्र महसूस करें।

आप सभी को धन्यवाद।

@SuppressLint("NewApi") private void sendNotification(String msg, String title, String link, Bundle bundle) {
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
    resultIntent.putExtras(bundle);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            resultIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
    Notification notification;
    Uri sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notificationsound);
    notification = new Notification.Builder(this)
                .setSmallIcon(R.drawable.lg_logo)
                .setContentTitle(title)
                .setStyle(new Notification.BigTextStyle().bigText(msg))
                .setAutoCancel(true)
                .setContentText(msg)
                .setContentIntent(contentIntent)
                .setSound(sound)
                .build();
    notificationManager.notify(0, notification);
}

अधिसूचना खोले बिना सूचनाएं खोली गईं




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

हां, मैंने पारदर्शी आइकन बनाकर या एसडीके संस्करण 20 या उससे कम लक्ष्य करके इसे ठीक किया। यदि यह आपके लिए इसे ठीक नहीं करता है तो शायद आपकी इसी समस्या का एक अलग कारण है। मेरा सुझाव है कि 20 तक एसडीके संस्करण का लक्ष्य निर्धारित करें और जांच करें कि क्या यह कुछ भी बदलता है। यदि यह निश्चित नहीं है, तो यह प्रश्न आपकी मदद कर सकता है :(
ब्लूइवर

जवाबों:


188

कारण: 5.0 लॉलीपॉप के लिए "अधिसूचना आइकन पूरी तरह से सफेद होना चाहिए"।

अगर हम 20 को SDK लक्ष्य करके सफेद आइकन समस्या को हल करते हैं, तो हमारा ऐप Android लॉलीपॉप को लक्षित नहीं करेगा, जिसका अर्थ है कि हम लॉलीपॉप-विशिष्ट सुविधाओं का उपयोग नहीं कर सकते हैं।

लक्ष्य Sdk 21 के लिए समाधान

यदि आप लॉलीपॉप मैटेरियल आइकनों का समर्थन करना चाहते हैं तो लॉलीपॉप और इसके बाद के संस्करण के लिए पारदर्शी आइकन बनाएं। कृपया निम्नलिखित देखें: https://design.google.com/icons/

कृपया http://developer.android.com/design/style/iconography.html को देखें , और हम देखेंगे कि सफेद शैली है कि सूचनाओं को एंड्रॉइड लॉलीपॉप में कैसे प्रदर्शित किया जाता है।

लॉलीपॉप में, Google यह भी सुझाव देता है कि हम एक रंग का उपयोग करें जिसे सफेद अधिसूचना आइकन के पीछे प्रदर्शित किया जाएगा। लिंक देखें: https://developer.android.com/about/versions/android-5.0-changes.html

हम जहां भी रंग जोड़ना चाहते हैं https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setColor(int)

लोलीपॉप ओएस संस्करण के नीचे और ऊपर के लिए अधिसूचना बिल्डर का कार्यान्वयन होगा:

Notification notification = new NotificationCompat.Builder(this);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    notification.setSmallIcon(R.drawable.icon_transperent);
    notification.setColor(getResources().getColor(R.color.notification_color));
} else { 
    notification.setSmallIcon(R.drawable.icon);
} 

नोट: setColor केवल लॉलीपॉप में उपलब्ध है और यह केवल आइकन की पृष्ठभूमि को प्रभावित करता है।

यह आपकी समस्या को पूरी तरह से हल कर देगा !!


वाह धन्यवाद। मैंने सोचा कि वे पूरी तरह से सफेद होना चाहिए, क्योंकि मेरे फोन पर मौजूद कुछ ऐप में कलर आइकन हैं। अब मैं इसका कारण देखता हूं। धन्यवाद!
Blueriver

3
TargetSdkVersion 20 कहकर , आपने मेरा दिन बचाया! बहुत बहुत धन्यवाद।
अरशद अली

11
केवल आइकन के लिए लक्ष्य-निर्धारण संस्करण को <21 पर सेट करने के लिए इसका बुरा रूप है। इस उत्तर में बताए अनुसार इसे ठीक करना बेहतर है: stackoverflow.com/questions/27343202/…
user90766

1
लेकिन पृष्ठभूमि में जब ऐप स्टैक में नहीं है तो यह सफेद आइकन दिखा रहा है, किसी भी मामले में एक ही परिणाम प्राप्त करने के लिए क्या करना है
प्रतिक व्यास

1
मैंने सब कुछ करने की कोशिश की लेकिन यह काम नहीं कर रहा है। यह अभी भी प्रकट फ़ाइल में एक रंग उल्लेख के साथ डॉट दिखा रहा है
हर्ष शाह

67

यदि आप Google क्लाउड मैसेजिंग का उपयोग कर रहे हैं, तो यह समस्या केवल आपके आइकन को बदलने से हल नहीं होगी । उदाहरण के लिए, यह काम नहीं करेगा:

 Notification notification  = new Notification.Builder(this)
                .setContentTitle(title)
                .setContentText(text)
                .setSmallIcon(R.drawable.ic_notification)
                .setContentIntent(pIntent)
                .setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_LIGHTS|Notification.DEFAULT_VIBRATE)
                .setAutoCancel(true)
                .build();

यहां तक ​​कि अगर ic_notification पारदर्शी और सफेद है। इसे मेनिफेस्ट मेटा डेटा में भी परिभाषित किया जाना चाहिए, जैसे:

  <meta-data android:name="com.google.firebase.messaging.default_notification_icon"

            android:resource="@drawable/ic_notification" />

मेटा-डेटा applicationटैग के तहत जाता है , संदर्भ के लिए।


6
प्रकट के अंदर मेटा डेटा के साथ संकेत के लिए बड़ा धन्यवाद।
यूजेन टिम्म

आप "@ drawable / ic_notification" को कैसे जगह देते हैं? क्या यह एक आइकन है? अनेक? क्या यह पीएनजी है?
ल्यूक पिगेटी

1
यदि आप कई स्क्रीन रिज़ॉल्यूशन के लिए अलग-अलग आकार के चित्र अपलोड कर रहे हैं तो @LukePighetti कई हो सकते हैं। अन्यथा, हां, यह आपके ड्रॉएबल डायरेक्टरी पर एक पीएनजी फाइल हो सकती है।
रुचिर बारोनिया

1
@ रुचिरबोरोनिया res/drawable/ic_notification.pngआकार के उपरोक्त उदाहरण के लिए 196x196?
ल्यूक पिगेटी

thx @RuchirBaronia, Meta-dataटैग सुझाव के लिए upvoted ।
रवि वानीया

37

मैं वास्तव में Google के डिजाइन दिशानिर्देशों का पालन ​​करने का सुझाव देता हूं :

जो कहता है "अधिसूचना आइकन पूरी तरह से सफेद होना चाहिए।"


2
आपका उत्तर मेरे द्वारा स्वीकार किए जाने से भी बेहतर है। काश मैं भी तुम्हारी बात मान पाता। मैं नहीं कर सकता, लेकिन आपके पास मेरी +1 और मेरी कृतज्ञता है। चीयर्स!
Blueriver

2
यह बहुत अच्छा जवाब नहीं है। क्या होगा, यदि परियोजना के हितधारकों को एंड्रॉइड 7 को लक्षित करना आवश्यक है? मैं उससे पहले किसी भी एसडीके संस्करण को लक्षित नहीं कर सकता।
नियॉन वार्ज

1
इस उत्तर को गलत बताया क्योंकि यह प्रश्नकर्ता का कहना है कि मैं अपना ऐप sdk21 पर नहीं चला पा रहा हूं। उत्तर कहता है "डोन्ट यूज एसडीके 21"
उत्सव गुप्ता

1
यह वास्तव में एक समाधान नहीं है।
जोस गोमेज़

1
मुझे वर्तमान डिज़ाइन दिशानिर्देशों में कुछ भी नहीं मिल रहा है जो यह निर्दिष्ट करते हैं कि आइकन पारदर्शी पृष्ठभूमि पर सफेद होना चाहिए। खराब प्रलेखन के बावजूद यह अभी भी मामला है।
कल्पना जूल

29

Android मैनिफेस्ट में इस कोड को घोषित करें:

<meta-data android:name="com.google.firebase.messaging.default_notification_icon" 

android:resource="@drawable/ic_stat_name" />

मुझे उम्मीद है कि यह आपके लिए उपयोगी होगा।


अरे बाप रे! यह एक FCM धक्का सूचनाओं के लिए एकदम सही काम करता है! धन्यवाद
CRONO

1
आप कहाँ दे रहे हैं ic_stat_name? क्या यह एक png है? यह कई है? कृपया सहायता कीजिए!
ल्यूक पिगेटी

3
@ ल्यूक पिगेट्टी एंड्रॉइड स्टूडियो में ऐप पर राइट क्लिक करें >> नए >> इमेज एसेट्स >> आइकन टाइप (नोटिफ़िकेशन)
विक्की महाले

1
(मुझे पता है कि यह थोड़ी देर हो गई है) लेकिन क्या आप कृपया इसे समझा सकते हैं? यह क्या करना चाहिए है? क्या यह पूर्ण रंग गैर-पारदर्शी आइकन या क्या प्रदान करता है?
जाफ

यह फायरबेस क्लाउड मैसेजिंग नोटिफिकेशन के लिए उचित उत्तर है।
ग्रेग एलिस

11

(एंड्रॉइड स्टूडियो 3.5) यदि आप एंड्रॉइड स्टूडियो का हालिया संस्करण हैं, तो आप अपनी अधिसूचना छवियां उत्पन्न कर सकते हैं। अपने रेज फोल्डर > न्यू> इमेज एसेट पर राइट क्लिक करें । फिर आपको इमेज इमेज को कॉन्फ़िगर करना दिखाई देगा जैसा कि नीचे दी गई इमेज में दिखाया गया है। बदलें चिह्न प्रकार के लिए अधिसूचना प्रतीक । आपकी छवियां सफेद और पारदर्शी होनी चाहिए। यह कॉन्फ़िगर इमेज एसेट्स उस नियम को लागू करेगा। महत्वपूर्ण: यदि आप चाहते हैं कि आइकन क्लाउड / पुश सूचनाओं के लिए उपयोग किए जाएं, तो आपको नए बनाए गए अधिसूचना आइकन का उपयोग करने के लिए अपने एप्लिकेशन टैग के तहत मेटा-डेटा जोड़ना होगा।इमेज एसेट्स कॉन्फ़िगर करें

  <application>
      ...
      <meta-data android:name="com.google.firebase.messaging.default_notification_icon"
          android:resource="@drawable/ic_notification" />

10

हम नीचे की तरह कर सकते हैं:

अधिसूचना बिल्डर और कॉल की एक नई वस्तु बनाएं setSmallIcon() नीचे दिए गए कोड में नोटिफिकेशन बिल्डर ऑब्जेक्ट का उपयोग करके ।

एक विधि बनाएं जिसमें हम यह जांच करेंगे कि हम किस ओएस संस्करण में अपना ऐप इंस्टॉल कर रहे हैं। यदि यह लॉलीपॉप यानी एपीआई 21 से नीचे है तो यह सामान्य ऐप आइकन को पृष्ठभूमि के रंग के साथ ले जाएगा और यह पारदर्शी ऐप आइकन को बिना किसी पृष्ठभूमि के ले जाएगा। तो ओएस संस्करण> = 21 का उपयोग करने वाले उपकरण विधि का उपयोग करके आइकन की पृष्ठभूमि का रंग निर्धारित करेंगेsetColor() वाले उपकरण अधिसूचना बिल्डर वर्ग की का ।

नमूना कोड:

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);

notificationBuilder.setSmallIcon(getNotificationIcon(notificationBuilder));

private int getNotificationIcon(NotificationCompat.Builder notificationBuilder) {

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             int color = 0x008000;
             notificationBuilder.setColor(color);
             return R.drawable.app_icon_lolipop_above;

    } 
    return R.drawable.app_icon_lolipop_below;
}

मैंने setColorकिटकैट (एपीआई 19) और आइसक्रीमसैंडविच (एपीआई 15) पर परीक्षण किया है , दोनों ही मामलों में इसने रंग को नजरअंदाज किया लेकिन दुर्घटनाग्रस्त हो गया । तो क्या मैं ओएस संस्करण की जाँच सुरक्षित रूप से छोड़ सकता हूँ?
मारिया

10

इसे इस्तेमाल करे

मैं एक ही मुद्दे का सामना कर रहा था मैंने बहुत से प्रयास किए लेकिन कोई समाधान नहीं मिला, आखिरकार मैंने अपनी समस्या को हल करने का तरीका ढूंढ लिया।

- पारदर्शी पृष्ठभूमि के साथ अधिसूचना आइकन बनाएं। ऐप की चौड़ाई और ऊंचाई आकार के नीचे होनी चाहिए और इन सभी को अपने प्रोजेक्ट में पेस्ट करें-> ऐप-> src-> main-> res

  • एमडीपीआई 24 * 24

  • एचडीपीआई 36 * 36

  • XHDPI 48 * 48

  • XXHDPI 72 * 72


उपरोक्त पेस्ट के बाद अपनी onMessageReceived विधि में इस नीचे की रेखा को चिपकाएं


Intent intent = new Intent(this, News.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                    PendingIntent.FLAG_ONE_SHOT);
            Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
            {
                notificationBuilder.setSmallIcon(R.drawable.notify)
                                      //            .setContentTitle(title)
                            //                        .setContentText(message)
                        .setAutoCancel(true)
                        .setSound(defaultSoundUri)
                        .setContentIntent(pendingIntent);
            } else
                {
                    notificationBuilder.setSmallIcon(R.drawable.notify)
                       //                                .setContentTitle(title)
                        //                        .setContentText(message)
                            .setAutoCancel(true)
                            .setSound(defaultSoundUri)
                            .setContentIntent(pendingIntent);
            }
            NotificationManager notificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.notify(0, notificationBuilder.build());

मैनिफ़ेस्ट फ़ाइल में इस कोड को जोड़ना न भूलें

<meta-data 
android:name="com.google.firebase.messaging.default_notification_icon" 
android:resource="@drawable/app_icon" />

10
 <meta-data android:name="com.google.firebase.messaging.default_notification_icon"

        android:resource="@drawable/ic_notification" />

एप्लिकेशन ब्लॉक में मैनिफ़ेस्ट। xml फ़ाइल में यह लाइन जोड़ें


7

यदि आप लॉलीपॉप सपोर्ट नोटिफिकेशन आइकन प्रदान करना चाहते हैं तो दो प्रकार का नोटिफिकेशन आइकन बनाएं:

  1. सामान्य सूचना आइकन: नीचे लॉलीपॉप संस्करण के लिए।
  2. पारदर्शी पृष्ठभूमि के साथ अधिसूचना आइकन: लॉलीपॉप और इसके बाद के संस्करण के लिए।

अब ओएस संस्करण पर रन टाइम बेस पर सूचना बिल्डर के लिए उपयुक्त आइकन सेट करें:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    mBuilder.setSmallIcon(R.drawable.ic_push_notification_transperent);
} else {
    mBuilder.setSmallIcon(R.drawable.ic_push_notification);
}

7

अंत में मुझे इस मुद्दे का हल मिल गया है।

यह समस्या केवल तब होती है जब ऐप बिल्कुल नहीं चल रहा हो। (न तो पृष्ठभूमि में और न ही अग्रभूमि में) । जब ऐप या तो अग्रभूमि या पृष्ठभूमि पर चलता है तो अधिसूचना आइकन ठीक से प्रदर्शित होता है । (सफेद वर्ग नहीं)

तो हमने जो सेट किया है वह बैकएंड एपीआई में नोटिफिकेशन आइकन के लिए समान कॉन्फ़िगरेशन है जो कि फ्रंटेंड के रूप में है।

फ्रंटएंड में हमने रिएक्ट नेटिव का उपयोग किया है और पुश नोटिफिकेशन के लिए हमने रिएक्ट-देशी-एफसीएम एनपीएम पैकेज का उपयोग किया है

FCM.on("notification", notif => {
   FCM.presentLocalNotification({
       body: notif.fcm.body,
       title: notif.fcm.title,
       big_text: notif.fcm.body,
       priority: "high",
       large_icon: "notification_icon", // notification icon
       icon: "notification_icon",
       show_in_foreground: true,
       color: '#8bc34b',
       vibrate: 300,
       lights: true,
       status: notif.status
   });
});

हमने पुश अधिसूचना के बैकएंड के रूप में Node.js का उपयोग करते हुए fcm-push npm पैकेज का उपयोग किया है और निम्न प्रकार से पेलोड संरचना निर्धारित की है।

{
  to: '/topics/user', // required
  data: {
    id:212,
    message: 'test message',
    title: 'test title'
  },
  notification: {
    title: 'test title',
    body: 'test message',
    icon : 'notification_icon', // same name as mentioned in the front end
    color : '#8bc34b',
    click_action : "BROADCAST"
  }
}

यह मूल रूप से हमारे एंड्रॉइड सिस्टम में स्थानीय रूप से संग्रहीत सूचना_ छवि के लिए क्या खोजता है।


1
आपका मुद्दा मेरे से बहुत अलग है, हालांकि इसका प्रभाव समान है। इस उत्तर को पोस्ट करने के लिए धन्यवाद, यह संभवतः उसी तकनीकी स्टैक का उपयोग करने में किसी की मदद करेगा जिसका आप उपयोग कर रहे हैं।
ब्लूरेवर

1
@ इयानवर्बटन: कोई ज़रूरत नहीं।
अनिरुद्ध शेवले

5

सूचनाएं ग्रीसेकल्स हैंनीचे बताए अनुसार हैं। वे काले-गोरे नहीं हैं, इसके बावजूद कि दूसरों ने क्या लिखा है। आपने संभवतः नेटवर्क स्ट्रेंथ बार जैसे कई शेड्स वाले आइकन देखे हैं।

एपीआई 21 (लॉलीपॉप 5.0) से पहले, रंग आइकन काम करते हैं। आप अपने एप्लिकेशन को एपीआई 20 को लक्षित करने के लिए बाध्य कर सकते हैं, लेकिन यह आपके आवेदन के लिए उपलब्ध सुविधाओं को सीमित करता है, इसलिए यह अनुशंसित नहीं है। आप चल रहे एपीआई स्तर का परीक्षण कर सकते हैं और या तो एक रंग आइकन या एक ग्रेस्केल आइकन को उचित रूप से सेट कर सकते हैं, लेकिन यह संभवतः सार्थक नहीं है। ज्यादातर मामलों में, एक ग्रेस्केल आइकन के साथ जाना सबसे अच्छा है।

इमेजेज में चार चैनल होते हैं, RGBA (रेड / ग्रीन / ब्लू / अल्फा)। अधिसूचना आइकन के लिए, Android R, G और B चैनल को अनदेखा करता है। एकमात्र चैनल जो मायने रखता है वह अल्फा है, जिसे अपारदर्शिता भी कहा जाता है। अपने आइकन को एक संपादक के साथ डिज़ाइन करें जो आपको अपने ड्राइंग रंगों के अल्फा मान पर नियंत्रण देता है।

कैसे अल्फा मान एक ग्रेस्केल छवि उत्पन्न करते हैं:

  • अल्फा = 0 (पारदर्शी) - ये पिक्सेल पारदर्शी होते हैं, जो पृष्ठभूमि का रंग दिखाते हैं।
  • अल्फा = 255 (अपारदर्शी) - ये पिक्सेल सफेद होते हैं।
  • अल्फा = 1 ... 254 - ये पिक्सल्स वही हैं जो आप उम्मीद करेंगे, जो पारदर्शी और सफेद के बीच शेड्स प्रदान करेंगे।

इसे बदलना setColor:

  • पुकारते हैं NotificationCompat.Builder.setColor(int argb)। के लिए प्रलेखन से Notification.color:

    इस नोटिफिकेशन को प्रस्तुत करते समय मानक स्टाइल टेम्प्लेट द्वारा एक्सेंट रंग (रंग में स्थिरांक की तरह एक ARGB पूर्णांक) लागू किया जाना चाहिए। वर्तमान टेम्प्लेट डिज़ाइन इस रंग के एक क्षेत्र के ऊपर आइकन छवि (सफेद में सना हुआ) को ओवरले करके एक रंगीन हेडर छवि का निर्माण करता है। अल्फा घटकों की अनदेखी की जाती है।

    सेटकोलर के साथ मेरे परीक्षण से पता चलता है कि अल्फा घटकों को अनदेखा नहीं किया गया है। उच्च अल्फा मान एक पिक्सेल सफ़ेद मोड़ते हैं। निचले अल्फा मान अधिसूचना क्षेत्र में पृष्ठभूमि रंग (मेरी डिवाइस पर काला) या पुल-डाउन अधिसूचना में निर्दिष्ट रंग के लिए एक पिक्सेल चालू करते हैं।


5

मैंने प्रकट करने के लिए नीचे कोड जोड़कर समस्या का समाधान किया है,

    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_name" />

    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/black" />

कहाँ पे ic_stat_nameएंड्रॉइड स्टूडियो पर बनाया गया है राइट पर क्लिक करें >> नई >> इमेज एसेट्स> IconType (अधिसूचना)

और एक और कदम मुझे नोटिफिकेशन पेलोड के साथ सर्वर php साइड पर करना है

$message = [
    "message" => [
        "notification" => [
            "body"  => $title , 
            "title" => $message
        ],

        "token" => $token,

    "android" => [
           "notification" => [
            "sound"  => "default",
            "icon"  => "ic_stat_name"
            ]
        ],

       "data" => [
            "title" => $title,
            "message" => $message
         ]


    ]
];

अनुभाग पर ध्यान दें

    "android" => [
           "notification" => [
            "sound"  => "default",
            "icon"  => "ic_stat_name"
            ]
        ]

जहां आइकन का नाम "icon" => "ic_stat_name"प्रकट होने पर समान सेट होना चाहिए।



4

मुझे एक लिंक मिला जहां हम अपना स्वयं का सफेद आइकन बना सकते हैं,

अपने लॉन्चर आइकन के सफेद आइकन को जनरेट करने के लिए इस लिंक को आज़माएं।

इस लिंक को खोलें और अपना ic_launcher या सूचना आइकन अपलोड करें


1

आप विभिन्न संस्करणों के लिए अलग आइकन का उपयोग कर सकते हैं। बस इस तरह अपने आइकन पर तर्क सेट करें:

int icon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? R.drawable.colored_: R.drawable.white_tint_icon_for_lolipop_or_upper;

1

SDK> = 23 के लिए, कृपया setLargeIcon जोड़ें

notification = new Notification.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setLargeIcon(context.getResources(), R.drawable.lg_logo))
            .setContentTitle(title)
            .setStyle(new Notification.BigTextStyle().bigText(msg))
            .setAutoCancel(true)
            .setContentText(msg)
            .setContentIntent(contentIntent)
            .setSound(sound)
            .build();

1

एसडीके विशिष्ट संस्करणों को कम करने के लिए, आप बस ऐसा कर सकते हैं: ('' 'को' 0x 'में बदलें)

Notification notification = new NotificationCompat.Builder(this);
notification.setSmallIcon(R.drawable.icon_transperent);
notification.setColor(0x169AB9); //for color: #169AB9

0xFF169AB9, आप पूरी तरह से अपारदर्शी अल्फा चैनल को याद कर रहे हैं।
यूजेन पिंचेक

0

जब आप रंगीन आइकन रखना चाहते हैं - वर्कअराउंड
पिक्सेल को आइकन में थोड़ा अलग रंग के साथ जोड़ें।
मेरे मामले में रंगों और प्रकाश के साथ एक काला आइकन है। जब जोड़ा गया गहरा नीला पिक्सेल यह काम करता है।


0

मैं एंड्रॉइड 8.0 पर इसी तरह का मुद्दा रखता हूं। सफेद आइकन संसाधन का उपयोग करने का प्रयास करें। मेरे पास सफेद वर्ग है जब मैं आइकन के लिए रंगीन छवि का उपयोग करने की कोशिश कर रहा हूं, जब मैं इसे सफेद आइकन से बदल देता हूं, तो यह काम शुरू कर देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.