मुझे उन नोटिफिकेशन में भी समस्या आ रही थी, जिन्हें साउंड का उत्सर्जन करना पड़ता था, जब ऐप अग्रभूमि में था, सब कुछ सही ढंग से काम करता था, हालाँकि जब ऐप बैकग्राउंड में था तब साउंड बस बाहर नहीं आया था।
सर्वर द्वारा एफसीएम के माध्यम से अधिसूचना भेजी गई थी, अर्थात सर्वर ने अधिसूचना के JSON पर आरोहित किया और इसे FCM को भेज दिया, जो तब एप्लिकेशन को अधिसूचना भेजता है। अगर मैं साउंड टैग लगाता हूं, तो भी ध्वनि बैकगाउंड में नहीं निकलती है।
यहां तक कि ध्वनि टैग लगाने से भी काम नहीं चला।
इतनी खोज के बाद मुझे इसका समाधान एक गितुब मंच पर मिला। मैंने तब देखा कि मेरे मामले में दो समस्याएं थीं:
1 - यह एपीआई स्तर 26+ में काम करने के लिए महत्वपूर्ण, channel_id टैग भेजने के लिए गायब था
2 - एंड्रॉइड एप्लिकेशन में, इस विशिष्ट मामले के लिए जहां सर्वर से सीधे सूचनाएं भेजी जा रही थीं, मुझे पहले से चैनल आईडी को कॉन्फ़िगर करना था, इसलिए मेरी मुख्य गतिविधि में मुझे चैनल को कॉन्फ़िगर करना पड़ा ताकि एंड्रॉइड को पता हो कि कब क्या करना है अधिसूचना आ गई।
सर्वर द्वारा भेजे गए JSON में:
{
"title": string,
"body": string,
"icon": string,
"color": string,
"sound": mysound,
"channel_id": videocall,
}
आपकी मुख्य गतिविधि में:
@Background
void createChannel(){
Uri sound = Uri.parse("android.resource://" + getApplicationContext().getPackageName() + "/" + R.raw.app_note_call);
NotificationChannel mChannel;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mChannel = new NotificationChannel("videocall", "VIDEO CALL", NotificationManager.IMPORTANCE_HIGH);
mChannel.setLightColor(Color.GRAY);
mChannel.enableLights(true);
mChannel.setDescription("VIDEO CALL");
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ALARM)
.build();
mChannel.setSound(sound, audioAttributes);
NotificationManager notificationManager =
(NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(mChannel);
}
}
इससे आखिरकार मेरी समस्या हल हो गई, मुझे आशा है कि यह किसी को 2 दिन बर्बाद करने में मदद नहीं करेगा जैसे मैंने किया। मुझे नहीं पता कि यह मेरे द्वारा कोड में रखी गई सभी चीजों के लिए आवश्यक है, लेकिन यह तरीका है। मुझे अब उत्तर का श्रेय देने के लिए जीथब फोरम लिंक नहीं मिला, क्योंकि मैंने जो किया वह वही था जो वहां पोस्ट किया गया था।