يتوفّر لك خياران لتحديد أولوية التسليم للرسائل المرسَلة إلى تطبيقات أخرى على Android: الأولوية العادية والأولوية العالية. يتم تسليم الرسائل العادية والرسائل ذات الأولوية القصوى بالطريقة التالية:
أولوية عادية: هذه هي الأولوية التلقائية للبيانات ورسائل الإشعارات. يتم تسليم الرسائل ذات الأولوية العادية فورًا عندما يكون الجهاز غير في وضع السكون. عندما يكون الجهاز في وضع السكون، قد يتم تأخير الإرسال للحفاظ على شحن البطارية إلى أن يخرج الجهاز من وضع السكون. بالنسبة إلى الرسائل الأقل حساسية للوقت، مثل إشعارات الرسائل الإلكترونية الجديدة أو مزامنة واجهة المستخدم أو مزامنة بيانات التطبيق في الخلفية، اختَر الأولوية العادية للتسليم.
أولوية عالية: يحاول FCM إرسال الرسائل ذات الأولوية العالية على الفور، ما يسمح لـ FCM بإيقاظ جهاز في وضع السكون عند الضرورة وتنفيذ بعض المعالجة المحدودة (بما في ذلك الوصول المحدود جدًا إلى الشبكة). يجب أن تؤدي الرسائل ذات الأولوية العالية بشكل عام إلى تفاعل المستخدمين مع تطبيقك أو إشعاراته.
تحديد الرسائل ذات الأولوية العالية والرسائل ذات الأولوية العادية
على الرغم من أنّ الرسائل ذات الأولوية العادية مناسبة للرسائل العامة، اختَر الأولوية العالية عند الحاجة إلى ضمان التسليم الفوري للأمور أو القصوى الإجراءات. بما أنّ وقت تسليم الرسائل ذات الأولوية العادية يمكن أن يتأثّر بوضع "الاستراحة"، سيؤدّي ضبط معظم الإشعارات المرئية للمستخدم على أنّها ذات أولوية عالية إلى ضمان تسليمها على الفور. على سبيل المثال، يجب ضبط الإشعارات ذات الأولوية القصوى، مثل رسائل المحادثة أو المشاكل في الحساب أو آخر المعلومات المتعلّقة بتوصيل الطعام.
معالجة الرسائل ذات الأولوية العالية والعادية
بالنسبة إلى الإشعارات ذات الأولوية العالية والعادية التي يتم تلقّيها على جهاز Android، تتم منح
عدة ثوانٍ لمعالجة الحمولة في الرسالة في معالج
onMessageReceived
. بالنسبة إلى أي إشعارات تتطلّب معالجة غير متزامنة
للحمولة البرمجية للرسالة، ننصحك باستخدام بنية مثل
WorkManager، لأنّ ذلك قد يتجاوز الوقت المخصّص لمعالج onMessageReceived
.
بالنسبة إلى الرسائل ذات الأولوية العالية، يمكنك جدولة مهمة مُسرَّعة باستخدام Android WorkManager للتأكّد من منح الأولوية لهذه الإشعارات وتنفيذها إلى أن تكتمل.
بالنسبة إلى الرسائل ذات الأولوية العادية، يمكنك جدولة طلب OneTimeWorkRequest عادي باستخدام Android WorkManager. سيضمن ذلك معالجة المهام الإضافية المطلوبة بدون استخدام المعالجة بأولوية.
ضبط الأولوية للرسائل
يمكنك إرسال إشعارات إلى المستخدمين باستخدام Admin SDK وFCM REST API ووحدة تحكّم 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 من تطبيقك على الجهاز الاختباري. لمزيد من المعلومات حول كيفية الوصول إلى الرمز المميّز، يُرجى الاطّلاع على مقالة إرسال رسالة اختبارية إلى تطبيق يعمل في background.
- بعد الحصول على رمز FCM، أرسِل إشعارك ذو الأولوية العالية إلى الجهاز التجريبي باستخدام رمز إرسال الإشعار FCM أو ��
إزالة الأولوية من FCM ذات الأولوية العالية على Android
إنّ الرسائل ذات الأولوية العالية على Android مخصّصة للمحتوى الذي يتطلّب سرعة التفاعل ويظهر للمستخدم، ومن المفترض أن تؤدي إلى ظهور إشعارات موجّهة للمستخدم. إذا رصدت FCM نمطًا لا تؤدي فيه الرسائل إلى إرسال إشعارات موجّهة للمستخدمين، قد يتم خفض أولوية رسائلك إلى الأولوية العادية أو إسنادها إلى "خدمات Google Play" للتعامل معها.
يستخدِم FCM 7 أيام من سلوك الرسائل عند تحديد ما إذا كان سيتم خفض أولوية الرسائل أو توجيهها، ويحدِّد هذا الإجراء بشكل مستقل لكل مثيل من تطبيقك. إذا تم عرض الإشعارات بطريقة مرئية للمستخدم استجابةً للرسائل ذات الأولوية العالية، لن تتأثر رسائلك المستقبلية ذات الأولوية العالية.
تفويض الإشعارات باستخدام "خدمات Google Play"
تُرسِل "خدمات Google Play" رسائل الإشعارات ذات الأولوية القصوى التي تستوفي معايير معيّنة بدلاً من خفض أولويتها. وهذا يعني أنّ "خدمات Google Play" تعرِض الإشعارات بدلاً من التطبيق، بدون الحاجة إلى تشغيله. ويتم ذلك لتوفير تجربة مستخدم أفضل بشكل عام على أجهزة Android.
يُرجى العِلم أنّ رسائل الإشعارات التي يتمّ تمثيلها تُجري تغييرات في كيفية إعداد تقارير الإحصاءات المرتبطة بالرسائل التي يتمّ تلقّيها:
- لكي يتم تسجيل الإحصاءات للإشعارات التي يتمّ تسليمها من خلال وكيل، يجب أن يستخدم تطبيقك الإصدار 24.0.0 أو إصدارًا أحدث من حزمة تطوير البرامج (SDK) لنظام إرسال الرسائل من Google.
- قد تلاحظ تأخيرات أو انخفاضًا في عدد الرسائل التي يتم استلامها مقارنةً بعدد الرسائل قبل طرح الإشعارات المُشفَّرة. ويرجع ذلك إلى أنّه لا يتم تسجيل إحصاءات الإشعارات التي يتم عرضها بالنيابة إلا بعد بدء تطبيقك، وقد لا يتم تسجيلها على الإطلاق إذا لم يؤدّي الإشعار إلى فتح التطبيق.
إنّ استخدام الوكيل لرسائل الإشعارات بهذه الطريقة هو السلوك التلقائي للتطبيقات التي تستخدم الإصدار 19054000 من "خدمات Google Play" والإصدار Android Q والإصدارات الأحدث. يتمّ تمثيل الرسائل المُرسَلة من خلال واجهة برمجة التطبيقات HTTP v1، ولكن لن يتمّ تمثيل الرسائل المُرسَلة من خلال وحدة تحكّم Firebase أو واجهات برمجة التطبيقات القديمة. يُرجى العلم أنّ هذه الميزة متوفرة في الإصدار التجريبي حاليًا، وهي قابلة للتغيير.
على الرغم من أنّنا ننصح بشدة بإبقاء التفويض مفعّلاً بسبب المزايا التي يقدّمها لbatery
- على مستوى التطبيق: أضِف التوجيه
<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
يُبلغ عن النسبة المئوية للإشعارات التي تم proxied بنجاح، بالإضافة إلى تفاصيل الرسائل التي لا يمكن proxied بنجاح.
تحديد مشاكل تأخُّر ظهور الإشعارات وحلّها
تأكَّد من أنّه تم تفعيل الإشعارات في مثيل تطبيقك. إذا أوقف المستخدم إذن الإشعارات لتطبيقك، لن يتم نشر أي من إشعاراتك، ونتيجةً لذلك، سيتم إزالة الأولوية من رسائلك. يجب التأكّد من تفعيل الإشعارات قبل إرسال رسائل ذات أولوية عالية إلى مثيل التطبيق.
تجنَّب إجراء مكالمات إضافية على الشبكة عند معالجة إشعارك. بما أنّ جزءًا صغيرًا من مستخدمي أجهزة Android الجوّالة يستخدمون شبكات ذات وقت استجابة مرتفع، تجنَّب فتح اتصال بخوادمك قبل عرض إشعار. قد يكون الاتصال بالخادم مرة أخرى قبل انتهاء وقت المعالجة المسموح به أمرًا خطيرًا للمستخدمين على الشبكات ذات وقت الاستجابة العالي.
بدلاً من ذلك، يمكنك تضمين محتوى الإشعار في رسالة FCM وعرضه على الفور. إذا كنت بحاجة إلى المزامنة للحصول على محتوى إضافي داخل التطبيق على Android، يمكنك جدولة مهمة باستخدام WorkManager لتنفيذ ذلك في الخلفية.