2015-04-19 12 views
15

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

<meta-data android:name="com.parse.push.notification_icon" android:resource="@drawable/noti_icon"/> 

सवाल here

लेकिन कुछ भी नहीं के आधार पर काम करने के लिए लगता है:

मैं मेटा डेटा में आइकन स्थापित करने की कोशिश की। कोई विचार?

+3

आइकन में किसी भी ठोस पिक्सेल को लॉलीपॉप पर सफेद रंग के साथ चित्रित किया गया है। विपरीत व्यक्त करने के लिए इसमें "छेद" वाले आइकन का उपयोग करें। –

+0

यदि आपका आइकन सफ़ेद है, तो यह – thepoosh

+0

मिटा दिया गया है इस लिंक का पालन करें http://stackoverflow.com/questions/28387602/notification-bar-icon-turns-white-in-android-5-lollipop – Nilabja

उत्तर

2

यह पार्स या पुश नाइटिफिकेशन से संबंधित नहीं है, लेकिन एंड्रॉइड 5.0 कैसे अधिसूचना आइकन को संभालता है। विवरण के लिए यह जारी प्रश्न देखें: Notification bar icon turns white in Android 5 Lollipop

+0

यह सच है, लेकिन यह केवल अधिसूचना बार आइकन पर लागू होता है - अधिसूचना पर आइकन रंगीन रहता है। –

+0

एसडीके को 20 से ऊपर लक्षित करते समय यह न केवल बार पर सफेद आइकन दिखाएगा बल्कि अधिसूचनाओं पर भी –

12

आपको एंड्रॉइड लॉलीपॉप 5.0 या उससे अधिक के तहत एक पारदर्शी और सफेद आइकन का उपयोग करना होगा। आप ParsePushBroadcastReceiver क्लास का विस्तार कर सकते हैं और इन एंड्रॉइड एपीआई के साथ अपने अधिसूचना आइकन को संगत करने के लिए दो विधियों को ओवरराइड कर सकते हैं।

@Override 
protected int getSmallIconId(Context context, Intent intent) { 
    return R.drawable.your_notifiation_icon; 
} 

@Override 
protected Bitmap getLargeIcon(Context context, Intent intent) { 
    return BitmapFactory.decodeResource(context.getResources(), R.drawable.your_notifiation_icon); 
} 

लॉलीपॉप और पिछले एपीआई का समर्थन करने के लिए अपने कोड को कस्टमाइज़ करना याद रखें।

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
     return BitmapFactory.decodeResource(context.getResources(), R.drawable.your_notifiation_icon_lollipop); 
    } 
    else{ 
     return BitmapFactory.decodeResource(context.getResources(), R.drawable.your_notifiation_icon); 
    } 
+0

पर मैंने नोट्समॉल IconId लागू किया था और यह आपके उत्तर @Pelanes के लिए बहुत धन्यवाद –

+1

के रूप में काम करता था। तो इसे विस्तारित करने के लिए, मूल रूप से आपको MyPushBroadcastReceiver जैसे क्लासपशबॉडकास्ट रिसीवर को विस्तारित करना होगा और getSmallIconId (...) और getLargeIcon (...) को ओवरराइड करना होगा। मैनिफेस्ट में अपना रिसीवर निर्दिष्ट करना न भूलें। लॉलीपॉप पर छोटे और बड़े आइकन दोनों का उपयोग किया जाएगा। एम्यूलेटर 2.3.7 (जिसे मैंने परीक्षण किया) पर केवल छोटा। –

0

हालांकि @Pelanes सही जवाब है (और स्वीकार किया जाना चाहिए), यहाँ मैं क्या किया है। ध्यान दें कि Parse docs for getSmallIconId राज्य निम्नलिखित:

Retrieves the small icon to be used in a Notification. The default implementation uses the icon specified by com.parse.push.notification_icon meta-data in your AndroidManifest.xml with a fallback to the launcher icon for this package. To conform to Android style guides, it is highly recommended that developers specify an explicit push icon.

तो यह getSmallIconId() और getLargeIcon() पद्धतियों ओवरराइड करने के लिए पूरी तरह से आवश्यक नहीं है।

मैंने समस्या को हल करने के लिए क्या किया था, मैंने अभी आइकन में एक पारदर्शी "छेद" पेंच किया था, और इस नए आइकन को इंगित करने के लिए मेरे मैनिफेस्ट में com.parse.push.notification_icon मेटा-डेटा सेट किया था।

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

+0

क्या आप सुनिश्चित हैं कि हमें यह निर्धारित करने की आवश्यकता नहीं है कि ओएस संस्करणों को अधिसूचना आइकन को कैसे संभालना चाहिए?मैंने आपके द्वारा सुझाए गए कार्यों का प्रदर्शन किया और ऐसा लगता है कि 'com.parse.push.notification_icon' के साथ सेट अधिसूचना आइकन अब एंड्रॉइड 4.4 और 5.1 दोनों में उपयोग किया जाता है। – Alex

+0

मैंने 5.1 और 4.4.2 के साथ परीक्षण किया। 5.1 नए आइकन का उपयोग करता है, 4.4.2 सामान्य ऐप आइकन पर उपयोग करता है ... सुनिश्चित नहीं है कि यह मेरे लिए क्यों हो रहा है लेकिन आपके लिए नहीं। शायद इसे सुरक्षित खेलने के लिए आपको हालांकि अंतर करने की आवश्यकता होगी। मैं अपना जवाब संपादित करूंगा। –

0

इस कोड को आज़माएं।

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 

NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 
       .setSmallIcon(R.drawable.ic_launcher) 
       .setLargeIcon(largeIcon) 
       .setContentText(data) 
       .setContentTitle("Notification from Parse") 
       .setContentIntent(pendingIntent); 
संबंधित मुद्दे