मैं एक Android GCM क्लाइंट ऐप here स्थापित करने के लिए दिए गए निर्देशों का पालन किया है का उपयोग करते हुए अधिसूचना प्रदर्शन और टोन अनुकूलित करने के लिए कैसे, और इस अंश के साथ विशेष रूप से एक समस्या है:जब GCMReceiver और GcmListenerService
है कि एक का विस्तार मौजूदा ऐप के लिए WakefulBroadcastReceiver, Google जीसीएमआरसीवर और जीसीएम लिस्टनर सेवा में माइग्रेट करने की अनुशंसा करता है। विस्थापित करने के लिए: ऐप्लिकेशन मेनिफेस्ट में, अपने GcmBroadcastReceiver साथ "com.google.android.gms.gcm.GcmReceiver" की जगह है, और वर्तमान सेवा घोषणा है कि नए GcmListenerService को IntentService फैली की जगह से BroadcastReceiver कार्यान्वयन निकालें अपने ग्राहक कोड Refactor वर्तमान IntentService सेवा कार्यान्वयन GcmListenerService
अधिकांश उदाहरण है कि मैं GCM कार्यान्वयन के लिए देखा है उपयोग करने के लिए, एक वर्ग है कि WakefulBroadcastReceiver
फैली का उपयोग करें। जैसे this one। जब आप ऐसा करते हैं, तो आपको NotificationManager
का उपयोग करने और अधिसूचना आइकन, ध्वनि इत्यादि को अनुकूलित करने का अवसर मिलता है। हालांकि, अगर आप Google की सलाह का पालन करते हैं, तो मुझे यकीन नहीं है कि अधिसूचनाओं को कैसे अनुकूलित किया जाए। Google द्वारा सुझाए गए अनुसार GcmListenerService
का उपयोग करने वाले अधिकांश उदाहरण, बस onMessageReceived
विधि को ओवरराइड करें। लेकिन उस विधि को केवल तभी बुलाया जाता है जब अधिसूचना प्राप्त होने पर एप्लिकेशन पहले ही अग्रभूमि में हो, या जब उपयोगकर्ता अधिसूचना पर क्लिक करता है। अधिसूचना ध्वनि को अनुकूलित करने के लिए यह विधि सही जगह नहीं है। उस विधि को बुलाए जाने से पहले ध्वनि पहले ही खेला जा चुका है।
तो, अगर मैं सूचना ध्वनि अनुकूलित करने के लिए की जरूरत है, मैं शायद एक अलग पद्धति GcmListenerService
में ओवरराइड करना चाहिए, लेकिन कोई प्रलेखन कि जो एक से पता चलता है। here वर्णित sound
विशेषता का उपयोग करने का एक और विकल्प है। लेकिन फिर आपको एप्लिकेशन की res/raw
निर्देशिका में ध्वनि फ़ाइलों को बंडल करना होगा। यह गलत लगता है। मैं सिर्फ ध्वनि, थीम इत्यादि प्रदान की गई प्रणाली का उपयोग करूंगा
विचार?
फिर भी [एक और उदाहरण] (https://github.com/codepath/android_guides/wiki/Google-Cloud-Messaging) जो दावा है 'GcmListenerService.onMessageReceived()' हर बार एक पुश सूचना प्राप्त होता है कहा जाता है। यह मेरे लिए बिल्कुल सही नहीं रहा है (यदि ऐप अग्रभूमि में है तो इसे केवल पुश नोटिफिकेशन को संभालने के लिए बुलाया जाता है)। – Shiprack
मुझे निश्चित रूप से मेरे कार्यान्वयन में कुछ याद आ रहा है। [यह] (https://github.com/googlesamples/google-services/blob/master/android/gcm/app/src/main/java/gcm/play/android/samples/com/gcmquickstart/MyGcmListenerService.java) Google से नमूना ऐप लगभग समान है। यह भी तात्पर्य है कि 'मैसेज रिसीव() 'को पुश अधिसूचना प्राप्त होने पर हर बार बुलाया जाएगा, चाहे ऐप अग्रभूमि में है या नहीं। लेकिन यह अभी भी मुझे परेशान करता है कि नोटिफिकेशन अभी भी प्रदर्शित होते हैं और ध्वनि अलर्ट अभी भी खेला जाता है भले ही मैं 'मैसेज रिसीव() 'ओवरराइड नहीं करता हूं। और आधार कार्यान्वयन खाली है। – Shiprack