অ্যান্ড্রয়েড পুশ বিজ্ঞপ্তিগুলি: আইকনটি বিজ্ঞপ্তিতে প্রদর্শিত হচ্ছে না, পরিবর্তে সাদা স্কোয়ার দেখানো হয়েছে


179

আমার অ্যাপ্লিকেশনটি একটি বিজ্ঞপ্তি উত্পন্ন করে, তবে আমি সেই বিজ্ঞপ্তির জন্য যে আইকনটি রেখেছি তা প্রদর্শিত হচ্ছে না। পরিবর্তে আমি একটি সাদা বর্গক্ষেত্র পেতে।

আমি আইকনটির png আকার পরিবর্তন করতে চেষ্টা করেছি (মাত্রা 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 ললিপপের জন্য "বিজ্ঞপ্তি আইকনগুলি অবশ্যই সম্পূর্ণ সাদা হতে হবে"।

যদি আমরা হোড আইকন সমস্যাটিকে লক্ষ্য করে এসডিকে ২০-তে সেট করে, অ্যান্ড্রয়েড ললিপপকে লক্ষ্য করে না, যার অর্থ আমরা ললিপপ-নির্দিষ্ট বৈশিষ্ট্যগুলি ব্যবহার করতে পারি না।

লক্ষ্য Sdk 21 এর সমাধান

আপনি যদি ললিপপ ম্যাটারিয়াল আইকনগুলি সমর্থন করতে চান তবে ললিপপ এবং উপরের সংস্করণটির জন্য স্বচ্ছ আইকন তৈরি করুন। দয়া করে নিম্নলিখিতগুলি উল্লেখ করুন: https://design.google.com/icons/

দয়া করে http://developer.android.com/design/style/iconography.html দেখুন এবং আমরা দেখতে পাব যে সাদা স্টাইলটি কীভাবে বিজ্ঞপ্তিগুলি অ্যান্ড্রয়েড ললিপপে প্রদর্শিত হবে be

ললিপপ-এ, গুগলও পরামর্শ দেয় যে আমরা এমন একটি রঙ ব্যবহার করব যা সাদা নোটিফিকেশন আইকনের পিছনে প্রদর্শিত হবে। লিঙ্কটি দেখুন: https://developer.android.com/about/versions/android-5.0-changes.html

যেখানেই আমরা রঙগুলি যুক্ত করতে চাই https://developer.android.com/references/android/support/v4/app/NotificationsCompat.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);
} 

দ্রষ্টব্য: সেটকলারটি শুধুমাত্র ললিপপগুলিতে উপলভ্য এবং এটি কেবল আইকনের পটভূমিতে প্রভাবিত করে।

এটি আপনার সমস্যার সম্পূর্ণ সমাধান করবে !!


ওহ! ধন্যবাদ. আমি ভেবেছিলাম তারা পুরোপুরি সাদা হওয়া উচিত, যেহেতু আমার ফোনে আমার কাছে থাকা কিছু অ্যাপ্লিকেশানের রঙ আইকন রয়েছে। এখন আমি কারণ দেখছি। ধন্যবাদ!
blueriver

3
টার্গেটএসডিকে ভার্সন 20 বলে , আপনি আমার দিনটি বাঁচিয়েছেন! অনেক ধন্যবাদ.
আরশাদ আলি

11
টার্গেট এসডিকে সংস্করণ <21 এ সেট করতে এটির খারাপ ফর্মটি কেবল আইকনগুলির জন্য : এর ভালো সঠিক ভাবে সমাধান করতে, এই উত্তর বর্ণনা অনুযায়ী stackoverflow.com/questions/27343202/...
user90766

1
তবে পটভূমিতে যখন অ্যাপ স্ট্যাকের মধ্যে নেই এটি সাদা আইকনগুলি দেখায়, কোনও ক্ষেত্রে একই ফল পেতে কী করতে হবে
প্রতীক ব্যাস

1
আমি সব চেষ্টা করেছি কিন্তু কাজ করছে না। এটি এখনও ম্যানিফেস্ট ফাইলটিতে রঙের উল্লেখ সহ বিন্দুটি প্রদর্শন করছে
হর্ষ শাহ

67

আপনি যদি গুগল ক্লাউড মেসেজিং ব্যবহার করে থাকেন তবে কেবল আপনার আইকন পরিবর্তন করে এই সমস্যাটির সমাধান হবে না । উদাহরণস্বরূপ, এটি কাজ করবে না:

 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();

এমনকি যদি আইকনোটিফিকেশনটি ট্রান্সপারেন্ট এবং সাদা হয়। এটি অবশ্যই ম্যানিফেস্ট মেটা ডেটাতেও সংজ্ঞায়িত করা উচিত:

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

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

applicationরেফারেন্সের জন্য মেটা-ডেটা ট্যাগের আওতায় চলে ।


6
ম্যানিফেস্টের অভ্যন্তরে মেটা ডেটা সহ ইঙ্গিতটির জন্য আপনাকে বড় ধন্যবাদ।
ইউজেন টিম

আপনি কীভাবে "@ অঙ্কনযোগ্য / আইকনোটিফিকেশন" রাখবেন? এটি কি একটি আইকন? অনেক? এটি কি পিএনজি?
লুক পাইঘেটি 8'18

1
@ লুক পিঘেটি আপনি একাধিক স্ক্রিন রেজোলিউশনের জন্য বিভিন্ন আকারের চিত্রগুলি আপলোড করেন তবে এটি অনেকগুলি হতে পারে। অন্যথায় হ্যাঁ, এটি আপনার আঁকতে সক্ষম ডিরেক্টরিতে একটি পিএনজি ফাইল হতে পারে।
রুচির বড়োনিয়া

1
@ রুচিরবারোনিয়া তাই উপরের উদাহরণের res/drawable/ic_notification.pngজন্য 196x196?
লুক পাইঘেটি

thx @ রুচিরবারোনিয়া, Meta-dataট্যাগ পরামর্শের জন্য উত্সাহিত ।
রবি ভানিয়া

37

আমি সত্যিই গুগলের ডিজাইন গাইডলাইনগুলি অনুসরণ করার পরামর্শ দিচ্ছি :

যা বলে "নোটিফিকেশন আইকনগুলি অবশ্যই পুরোপুরি সাদা" "


2
আপনার উত্তরটি আমি যে গ্রহণ করেছি তার চেয়েও ভাল। আশা করি আমিও তোমাকে মেনে নিতে পারতাম। আমি পারি না তবে আপনার আমার +1 এবং আমার কৃতজ্ঞতা রয়েছে। চিয়ার্স!
ব্লুয়ারিভার

2
এটি খুব ভাল উত্তর নয়। তাহলে কী, প্রকল্পের স্টেকহোল্ডারদের অ্যান্ড্রয়েড target লক্ষ্য করার জন্য প্রয়োজনীয়? আমি এর আগে কেবল কোনও এসডিকে সংস্করণ লক্ষ্য করতে পারি না।
নিওন ওয়ারেজ

1
এই উত্তরটিকে ভুল বলে উজ্জীবিত করেছেন question প্রশ্নকারী বলেছেন যে আমি আমার অ্যাপ্লিকেশনটি এসডিকে 21 এ চালাতে পারছি না। উত্তর বলেছে "sdk 21 ব্যবহার করবেন না"
উত্সব গুপ্ত

1
এটি আসলেই কোনও সমাধান নয়।
হোসে

1
আমি বর্তমান নকশা নির্দেশিকাতে এমন কিছু খুঁজে পাচ্ছি না যা নির্দিষ্ট করে যে স্বচ্ছ পটভূমিতে আইকনটি সাদা হতে হবে। দুর্বল নথিপত্র নির্বিশেষে এটি এখনও মনে হয়।
ইমেজিও

29

অ্যান্ড্রয়েড ম্যানিফেস্টে এই কোডটি ঘোষণা করুন:

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

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

আমি আশা করি এটি আপনার জন্য কার্যকর।


আহারে! এই এক FCM পুশ বিজ্ঞপ্তি জন্য নিখুঁত কাজ করে! ধন্যবাদ
ক্রোনো

1
আপনি কোথায় রাখছেন ic_stat_name? এটি কি এক পিএনজি? এটা অনেক? সাহায্য করুন!
লুক পাইঘেটি

3
@Luke Pighetti Android এ স্টুডিও ডান অ্যাপ্লিকেশন উপর ক্লিক করুন >> নিউ >> ভাবমূর্তি সম্পদ >> IconType (নোটিফিকেশন)
Vicky mahale

1
(আমি জানি কিছুক্ষণ হয়েছে তবে) আপনি কি দয়া করে এটি ব্যাখ্যা করতে পারেন? কি এটি করতে অনুমিত হয়? এটি পুরো রঙের নন-স্বচ্ছ আইকন রেন্ডার করে বা কী?
এফি

এটি ফায়ারবেস ক্লাউড মেসেজিং বিজ্ঞপ্তির সঠিক উত্তর।
গ্রেগ এলিস

11

(অ্যান্ড্রয়েড স্টুডিও ৩.৫) আপনি যদি অ্যান্ড্রয়েড স্টুডিওর সাম্প্রতিকতম সংস্করণ হন তবে আপনি আপনার বিজ্ঞপ্তি চিত্রগুলি তৈরি করতে পারেন। আপনার রেজ ফোল্ডার > নতুন> চিত্র সম্পদটিতে ডান ক্লিক করুন । তারপরে আপনি নীচের চিত্রের মতো চিত্রের সম্পদগুলি কনফিগার করুন দেখতে পাবেন । পরিবর্তন আইকন প্রকার করার নোটিফিকেশন আইকন । আপনার ছবি অবশ্যই সাদা এবং স্বচ্ছ হতে হবে। এই কনফিগার ইমেজ অ্যাসেটগুলি সেই নিয়মটি প্রয়োগ করবে। গুরুত্বপূর্ণ: আপনি যদি আইকনগুলি মেঘ / পুশ বিজ্ঞপ্তির জন্য ব্যবহার করতে চান তবে সদ্য তৈরি হওয়া বিজ্ঞপ্তি আইকনগুলি ব্যবহার করতে আপনাকে অবশ্যই আপনার অ্যাপ্লিকেশন ট্যাগের অধীনে মেটা-ডেটা যুক্ত করতে হবে।চিত্র সম্পদগুলি কনফিগার করুন

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

10

আমরা নীচের মতো করতে পারি:

নোটিফিকেশন বিল্ডারের একটি নতুন অবজেক্ট তৈরি করুন setSmallIcon()এবং নীচের কোডের মতো নোটিফিকেশন বিল্ডার অবজেক্টটি ব্যবহার করে কল করুন ।

একটি পদ্ধতি তৈরি করুন যাতে আমরা আমাদের অ্যাপটি কোন ওএস সংস্করণটি ইনস্টল করছি তা যাচাই করব। যদি এটি ললিপপ অর্থাৎ API 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

এটা চেষ্টা কর

আমি একই সমস্যার মুখোমুখি হয়েছি আমি প্রচুর পরিমাণে পুনরায় চেষ্টা করেছি কিন্তু কোন সমাধান পাইনি, অবশেষে আমি আমার সমস্যা সমাধানের উপায় খুঁজে পেয়েছি।

- স্বচ্ছ ব্যাকগ্রাউন্ড সহ বিজ্ঞপ্তি আইকন তৈরি করুন। অ্যাপ্লিকেশনটির প্রস্থ এবং উচ্চতা নীচের আকারের মতো হওয়া উচিত এবং আপনার প্রকল্প-> অ্যাপ্লিকেশন-> এসআরসি-> মূল-> রেজোতে এগুলি আটকে দিন

  • MDPI 24 * 24

  • এইচডিপিআই 36 * 36

  • এক্সএইচডিপিআই 48 * 48

  • XXHDPI 72 * 72


উপরের উপরের পরে আপনার onMessageRe प्राप्त পদ্ধতিতে এই লাইন পেস্ট করুন


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

অ্যাপ্লিকেশন ব্লকে ম্যানিফেস্ট.এক্সএমএল ফাইলটিতে এই লাইনটি যুক্ত করুন


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
   });
});

আমরা ব্যবহার করেছি fcm-ধাক্কা npm প্যাকেজ ব্যবহার Node.js ধাক্কা বিজ্ঞপ্তি জন্য একটি ব্যাক হিসেবে এবং নিম্নরূপ পে লোড গঠন করে।

{
  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

নীচে বর্ণিত বিজ্ঞপ্তিগুলি গ্রেস্কেল are অন্যেরা যা লিখেছিল তা সত্ত্বেও এগুলি কালো-সাদা নয়। আপনি সম্ভবত নেটওয়ার্ক স্ট্যান্ড বারের মতো একাধিক শেডযুক্ত আইকন দেখেছেন।

এপিআই 21 এর আগে (ললিপপ 5.0), রঙের আইকনগুলি কাজ করে। আপনি আপনার অ্যাপ্লিকেশনটিকে এপিআই 20 টার্গেট করতে বাধ্য করতে পারেন, তবে এটি আপনার অ্যাপ্লিকেশনটিতে উপলব্ধ বৈশিষ্ট্যগুলিকে সীমাবদ্ধ করে, তাই এটি প্রস্তাবিত নয়। আপনি চলমান এপিআই স্তরটি পরীক্ষা করতে পারেন এবং কোনও রঙিন আইকন বা গ্রেস্কেল আইকনটি যথাযথভাবে সেট করতে পারেন তবে সম্ভবত এটি কার্যকর নয়। বেশিরভাগ ক্ষেত্রে, গ্রেস্কেল আইকনটি দিয়ে যাওয়া ভাল।

চিত্রগুলির চারটি চ্যানেল রয়েছে, আরজিবিএ (লাল / সবুজ / নীল / আলফা)। বিজ্ঞপ্তি আইকনগুলির জন্য, অ্যান্ড্রয়েড আর, জি এবং বি চ্যানেলগুলি উপেক্ষা করে। একমাত্র চ্যানেল যা গণনা করে তা হল আলফা, এটি অস্বচ্ছতা হিসাবেও পরিচিত। এমন একটি সম্পাদক দিয়ে আপনার আইকনটি তৈরি করুন যা আপনাকে আপনার আঁকার রঙের আলফা মান নিয়ন্ত্রণ করতে পারে।

আলফা মানগুলি কীভাবে গ্রেস্কেল চিত্র তৈরি করে:

  • আলফা = 0 (স্বচ্ছ) - এই পিক্সেলগুলি স্বচ্ছ, পটভূমির রঙ দেখাচ্ছে।
  • আলফা = 255 (অস্বচ্ছ) - এই পিক্সেলগুলি সাদা।
  • আলফা = 1 ... 254 - এই পিক্সেলগুলি হ'ল যা আপনি প্রত্যাশা করেন, স্বচ্ছ এবং সাদাগুলির মধ্যে শেড সরবরাহ করে।

এটি দিয়ে পরিবর্তন করা setColor:

  • কল করুন NotificationCompat.Builder.setColor(int argb)। এর জন্য ডকুমেন্টেশন থেকে Notification.color:

    এই বিজ্ঞপ্তিটি উপস্থাপন করার সময় মানক স্টাইল টেম্পলেটগুলি প্রয়োগ করার জন্য অ্যাকসেন্ট রঙ (রঙের ধ্রুবকের মতো একটি এআরজিবি পূর্ণসংখ্যার)। বর্তমান টেম্পলেট ডিজাইনটি এই রঙের একটি ক্ষেত্রের উপরে আইকন চিত্রটি (সাদা রঙে স্টেনসিল্ড করা) ওভারলেল করে একটি বর্ণময় হেডার চিত্র তৈরি করে। আলফা উপাদানগুলি উপেক্ষা করা হয়।

    SetColor শো সঙ্গে আমার পরীক্ষামূলক আলফা উপাদান না উপেক্ষা করেছেন। উচ্চতর আলফা মানগুলি একটি পিক্সেল সাদা হয়ে যায়। লোয়ার আলফা মানগুলি বিজ্ঞপ্তি অঞ্চলে ব্যাকগ্রাউন্ড বর্ণ (আমার ডিভাইসে কালো) বা টান-ডাউন বিজ্ঞপ্তিতে নির্দিষ্ট রঙে একটি পিক্সেল ঘুরিয়ে দেয়।


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অ্যান্ড্রয়েড স্টুডিওতে তৈরি হয়েছে পুনরায় রেজ্য >> নতুন >> চিত্র সম্পদ >> আইকন টাইপ (বিজ্ঞপ্তি) এ ক্লিক করুন

এবং আরও একটি পদক্ষেপ আমাকে নোটিফিকেশন পেইলড সহ সার্ভার পিএইচপি সাইডে করতে হবে

$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"ম্যানিফেস্টে একই সেট হওয়া উচিত should



4

আমি একটি লিঙ্ক পেয়েছি যেখানে আমরা আমাদের নিজস্ব সাদা আইকন তৈরি করতে পারি,

আপনার লঞ্চার আইকনের সাদা আইকন তৈরি করতে এই লিঙ্কটি ব্যবহার করে দেখুন।

এই লিঙ্কটি খুলুন এবং আপনার আইক_লাঞ্চার বা বিজ্ঞপ্তি আইকন আপলোড করুন


1

বিভিন্ন সংস্করণের জন্য আপনি বিভিন্ন আইকন ব্যবহার করতে পারেন। এইভাবে আপনার আইকনটিতে কেবল যুক্তি সেট করুন:

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

1

এসডিকে> = 23 এর জন্য, দয়া করে সেটলার্জ আইকন যুক্ত করুন

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, আপনি সম্পূর্ণ অস্বচ্ছ আলফা চ্যানেল মিস করছেন missing
ইউজেন পেচানেক

0

আপনি যখন রঙিন আইকন রাখতে চান - ওয়ার্কারআউন্ডে আইকনটিতে
কিছুটা ভিন্ন রঙের পিক্সেল যুক্ত করুন।
আমার ক্ষেত্রে ছায়া এবং আলো সহ কালো আইকন রয়েছে। গা dark় নীল পিক্সেল যুক্ত করা হলে এটি কাজ করে।


0

অ্যান্ড্রয়েড 8.0 এ আমার একই সমস্যা রয়েছে। হোয়াইট আইকন সংস্থান ব্যবহার করার চেষ্টা করুন। আইকনের জন্য রঙিন চিত্র ব্যবহার করার চেষ্টা করার সময় আমার সাদা বর্গক্ষেত্র থাকে, যখন আমি এটি সাদা আইকনে প্রতিস্থাপন করি, এটি কাজ শুরু করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.