يتوفّر لك خياران لتحديد أولوية التسليم للرسائل الواردة على Android، وهما الأولوية العادية والأولوية العالية. يتم تسليم الرسائل العادية والرسائل ذات الأولوية العالية على النحو التالي:
أولوية عادية: هذه هي الأولوية التلقائية لرسائل البيانات والإشعارات. يتم تسليم الرسائل ذات الأولوية العادية فورًا عندما لا يكون الجهاز في وضع السكون. عندما يكون الجهاز في وضع السكون، قد يتأخر تسليم الرسالة للحفاظ على شحن البطارية إلى أن يخرج الجهاز من وضع السكون. بالنسبة إلى الرسائل الأقل حساسية للوقت، مثل الإشعارات بالرسائل الإلكترونية الجديدة أو الحفاظ على مزامنة واجهة المستخدم أو مزامنة بيانات التطبيق في الخلفية، اختَر أولوية التسليم العادية.
الأولوية العالية: تحاول خدمة FCM إرسال الرسائل ذات الأولوية العالية على الفور، ما يسمح لها بتنبيه الجهاز إذا كان في وضع السكون عند الضرورة وتشغيل بعض عمليات المعالجة المحدودة (بما في ذلك الوصول المحدود جدًا إلى الشبكة).FCM يجب أن تؤدي الرسائل ذات الأولوية العالية بشكل عام إلى تفاعل المستخدم مع تطبيقك أو إشعاراته.
تحديد ما إذا كانت الرسالة ذات أولوية قصوى أو عادية
في حين أنّ الرسائل ذات الأولوية العادية مناسبة للتحديثات العامة، يمكنك اختيار الأولوية العالية عندما تحتاج إلى ضمان التسليم الفوري للأمور أو الإجراءات العاجلة. بما أنّ وقت تسليم الرسائل ذات الأولوية العادية يمكن أن يتأثر بوضع "السكون"، فإنّ ضبط معظم الإشعارات المرئية للمستخدمين على أولوية عالية سيضمن تسليمها على الفور. على سبيل المثال، يجب ضبط الإشعارات، مثل رسائل المحادثة أو المشاكل المتعلّقة بحساب أو إشعارات تسليم الطعام، على أولوية عالية.
معالجة الرسائل ذات الأولوية العالية والعادية
بالنسبة إلى الإشعارات ذات الأولوية العالية والعادية التي يتم تلقّيها على جهاز Android، يتم منح عدة ثوانٍ لمعالجة حمولة الرسالة في معالج onMessageReceived
. بالنسبة إلى أي إشعارات تتطلّب معالجة غير متزامنة لحِمل الرسالة، ننصحك باستخدام بنية مثل WorkManager، لأنّ ذلك قد يتجاوز الوقت المحدّد لمعالج onMessageReceived
.
بالنسبة إلى الرسائل ذات الأولوية العالية، يمكنك جدولة مهمة معجّلة باستخدام Android WorkManager للتأكّد من إعطاء الأولوية لهذه الإشعارات وتنفيذها حتى اكتمالها.
بالنسبة إلى الرسائل ذات الأولوية العادية، يمكنك جدولة OneTimeWorkRequest العادية باستخدام WorkManager على Android. سيضمن ذلك معالجة العمل الإضافي المطلوب بدون استخدام المعالجة ذات الأولوية.
تحديد أولوية الرسائل
يمكنك إرسال إشعارات إلى المستخدمين باستخدام Admin SDK وواجهة برمجة التطبيقات FCM REST ووحدة تحكّم Firebase. لتغيير إعداد الأولوية من خلال Admin SDK وFCM REST API، عليك تعديل حمولة JSON للرسالة. يمكنك استخدام نموذج الرمز التالي لمعرفة كيفية ضبط الأولوية على "عالية". بالنسبة إلى الإشعارات المرسَلة من وحدة التحكّم، لا تتوفّر إمكانية ضبط حقول الإشعارات الخاصة بنظام Android.
{
"message": {
"notification": {
"body": "Purchase exceeding $500 detected",
"title": "Credit card purchase"
},
"data": {
"purchaser": "Your child",
"items": "Gravity Defier Sneakers"
},
"android": {
"priority": "high"
},
"apns": {
"headers": {
"apns-priority": "5"
}
}
}
}
اختبار الإشعارات ذات الأولوية القصوى في "وضع السكون"
للتأكّد من تلقّي الإشعارات ذات الأولوية العالية ومعالجتها بشكل صحيح عند تلقّيها من قِبل المستخدم، اتّبِع التعليمات التالية لاختبار إشعاراتك:
- اضبط جهازك على "وضع السكون" باتّباع التعليمات الواردة في مقالة اختبار تطبيقك باستخدام وضع السكون.
- يمكنك الوصول إلى رمز التسجيل الخاص بجهاز FCM من تطبيقك على جهاز الاختبار. لمزيد من المعلومات حول كيفية الوصول إلى الرمز المميّز، يُرجى الاطّلاع على إرسال رسالة اختبارية إلى تطبيق يعمل في الخلفية.
- بعد الحصول على الرمز المميّز FCM، أرسِل إشعارك ذي الأولوية العالية إلى الجهاز التجريبي باستخدام رمز إرسال الإشعارات FCM أو أمر cURL%3B%0A%7D)-,cURL,-curl%20%2DX) الذي يتضمّن مَعلمات إعدادات مطابقة لإشعارك ذي الأولوية العالية.
إلغاء أولوية FCM العالية على Android
تهدف الرسائل ذات الأولوية العالية على Android إلى عرض محتوى مرئي للمستخدمين يتطلّب اتخاذ إجراء فوري، ويجب أن تؤدي إلى ظهور إشعارات للمستخدمين. إذا رصدت FCM نمطًا لا تؤدي فيه الرسائل إلى ظهور إشعارات للمستخدمين، قد يتم خفض أولوية رسائلك إلى الأولوية العادية أو تفويضها إلى "خدمات Google Play" لمعالجتها.
تستخدم FCM 7 أيام من سلوك الرسائل عند تحديد ما إذا كان سيتم خفض أولوية الرسائل أو إرسالها عبر وكيل. ويتم اتّخاذ هذا القرار بشكل مستقل لكل مثيل من تطبيقك. إذا تم عرض الإشعارات استجابةً للرسائل ذات الأولوية العالية بطريقة مرئية للمستخدم، لن تتأثر رسائلك المستقبلية ذات الأولوية العالية.
تفويض الإشعارات باستخدام "خدمات Google Play"
تتم إعادة توجيه رسائل الإشعارات ذات الأولوية القصوى التي تستوفي معايير معيّنة من خلال "خدمات Google Play" بدلاً من خفض أولويتها. ويعني ذلك أنّ "خدمات Google Play" تعرض الإشعارات نيابةً عن التطبيق بدون الحاجة إلى تشغيله، وذلك بهدف تقديم تجربة أفضل للمستخدمين على أجهزة Android.
يُرجى العِلم أنّ رسائل الإشعارات التي يتم توجيهها من خلال خادم وكيل تُحدث تغييرات في طريقة تسجيل الإحصاءات ذات الصلة بتلقّي الرسائل:
- لكي يتم تسجيل إحصاءات الإشعارات التي تم توجيهها من خلال خادم وكيل، يجب أن يستخدم تطبيقك الإصدار 24.0.0 أو إصدارًا أحدث من حزمة تطوير البرامج (SDK) لخدمة المراسلة عبر السحابة الإلكترونية من Firebase.
- قد تلاحظ تأخيرات أو انخفاضًا في عدد الرسائل التي تتلقّاها مقارنةً بالعدد قبل طرح الإشعارات الوكيلة. يرجع ذلك إلى أنّ إحصاءات الإشعارات التي يتم توجيهها يتم تسجيلها فقط عند بدء تشغيل تطبيقك، وقد لا يتم تسجيلها على الإطلاق إذا لم يؤدِّ الإشعار إلى فتح التطبيق.
يُعدّ توجيه رسائل الإشعارات بهذه الطريقة السلوك التلقائي للتطبيقات التي تستخدم الإصدار Android Q والإصدارات الأحدث و"خدمات Google Play" بالإصدار 19054000 أو الإصدارات الأحدث. يتم توجيه الرسائل المرسَلة من خلال HTTP v1 API عبر وكيل، ولكن لن يتم توجيه الرسائل المرسَلة من خلال وحدة تحكّم Firebase أو واجهات برمجة التطبيقات القديمة عبر وكيل. يُرجى العلم أنّ هذه الميزة في إصدارها التجريبي حاليًا، وهي قابلة للتغيير.
على الرغم من أنّنا ننصحك بشدة بإبقاء ميزة التفويض مفعّلة للاستفادة من مزاياها المتعلقة ببطارية الجهاز وذاكرته، يمكنك إيقاف هذا السلوك بأي من الطرق التالية:
- على مستوى التطبيق: في بيان التطبيق، أضِف التوجيه
<meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>
. - على مستوى مثيل التطبيق: بالنسبة إلى مثيل التطبيق، اضبط
fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!>
في مسار واجهة المستخدم لتطبيقك، وذلك حسب حالة الاستخدام المحدّدة. - على أساس كل رسالة: اضبط المفتاح
proxy
علىDENY
في العنصرAndroidNotification
لطلب الإرسال.
قياس خفض أولوية الرسائل على Android
الرسائل الفردية: عند التسليم، يمكنك تحديد ما إذا تم تخفيض أولوية رسالة فردية أم لا من خلال مقارنة الأولوية التي تم تسليمها، من getPriority()، بالأولوية الأصلية، من getOriginalPriority().
جميع الرسائل يمكن لواجهة برمجة التطبيقات FCM Aggregate Delivery Data API أن تُبلغ عن النسبة المئوية لجميع رسائلك إلى أجهزة Android التي يتم تخفيض أولويتها. قد يتم استبعاد بعض الرسائل من تقارير البيانات المجمّعة، ولكن بشكل عام، يجب أن تقدّم هذه التقارير نظرة شاملة على معدّلات خفض أولوية الرسائل. يمكنك الاطّلاع على مقالتنا حول بيانات التسليم المجمّعة للحصول على مزيد من المعلومات وعيّنة من الرمز البرمجي للاستعلام عن واجهة برمجة التطبيقات، ويمكنك أيضًا استكشافها من خلال أداة استكشاف واجهة برمجة التطبيقات.
الإشعارات المستندة إلى خادم وكيل: لن يتم احتساب الإشعارات التي يتم توجيهها من خلال وكيل في مقاييس التسليم الحالية في "المراسلة من خلال السحابة الإلكترونية من Firebase" أو "إحصاءات Google"، لذا قد ينخفض معدّل التسليم بنسبة تصل إلى% 15. لإعداد تقارير عن الرسائل التي تم توجيهها عبر خادم وكيل، استخدِم FCM Aggregate Delivery Data API. تعرض
ProxyNotificationInsightPercents
نسبة الإشعارات التي تم توجيهها بنجاح، بالإضافة إلى تفاصيل الرسائل التي يتعذّر توجيهها بنجاح.
تحديد المشاكل في تأخُّر الإشعارات وحلّها
تأكَّد من تفعيل الإشعارات في مثيل تطبيقك. إذا أوقف المستخدم إذن الإشعارات لتطبيقك، لن يتم نشر أي من إشعاراتك، ونتيجةً لذلك، سيتم خفض أولوية رسائلك. عليك التأكّد من تفعيل الإشعارات قبل إرسال رسائل ذات أولوية عالية إلى مثيل تطبيق.
تجنَّب إجراء طلبات إضافية من الشبكة عند معالجة الإشعار. بما أنّ نسبة صغيرة من مستخدمي أجهزة Android الجوّالة يستخدمون شبكات ذات معدل تأخير مرتفع، تجنَّب فتح اتصال بخوادمك قبل عرض إشعار. قد يكون معاودة الاتصال بالخادم قبل انتهاء وقت المعالجة المسموح به أمرًا محفوفًا بالمخاطر بالنسبة إلى المستخدمين على الشبكات ذات وقت الاستجابة الطويل.
بدلاً من ذلك، أدرِج محتوى الإشعار في رسالة FCM واعرضه على الفور. إذا كنت بحاجة إلى مزامنة محتوى إضافي داخل التطبيق على Android، يمكنك جدولة مهمة باستخدام WorkManager للتعامل مع ذلك في الخلفية.