ضبط أولوية الرسائل وإدارتها

لديك خياران لتعيين أولوية التسليم للرسائل التي تُكملها على نظام التشغيل Android: الأولوية العادية والعالية. يتم تسليم الرسائل ذات الأولوية العالية والرسائل العادية على النحو التالي:

  • أولوية عادية: هذه هي الأولوية التلقائية لرسائل البيانات. يتم تسليم الرسائل ذات الأولوية العادية على الفور عندما لا يكون الجهاز في وضع السكون. عندما يكون الجهاز في وضع القيلولة، قد يتأخر التسليم للحفاظ على طاقة البطارية إلى أن يخرج الجهاز من القيلولة. يمكنك اختيار أولوية التسليم العادية بشأن الرسائل الأقل أهمية من حيث الوقت، مثل إشعارات البريد الإلكتروني الجديد أو مزامنة واجهة المستخدم أو مزامنة بيانات التطبيق في الخلفية.

    عند تلقّي رسالة أولوية عادية على نظام Android تطلب مزامنة بيانات الخلفية لتطبيقك، يمكنك جدولة مهمة باستخدام WorkManager للتعامل معها عندما تكون الشبكة متاحة.

  • أولوية عالية: تحاول خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" إرسال الرسائل ذات الأولوية العالية على الفور، ما يسمح لهذه الخدمة بتنشيط جهاز وضع السكون عند الضرورة وإجراء بعض عمليات المعالجة المحدودة (بما في ذلك الوصول المحدود إلى الشبكة). وبشكل عام، يجب أن تؤدي الرسائل ذات الأولوية العالية إلى تفاعل المستخدم مع تطبيقك أو إشعاراته.

التعامل مع الرسائل وخفض الأولوية في استخدامها على Android

إنّ الرسائل ذات الأولوية العالية على Android تهدف إلى عرض المحتوى الحسّاس والمرئي للمستخدمين، ويجب أن تؤدي إلى إشعارات موجَّهة للمستخدمين. إذا رصدت خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" نمطًا لا تؤدي فيه الرسائل إلى ظهور إشعارات موجَّهة للمستخدمين، قد لا تُمنح الأولوية لرسائلك إلى أولوية عادية أو قد يتم تفويضها لمعالجتها من خلال "خدمات Google Play".

تستخدم خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" سلوك الرسائل لمدة 7 أيام عند تحديد ما إذا كان سيتم خفض أولوية الرسائل أو الخادم الوكيل، وتحدّد ذلك بشكل مستقل لكل نسخة من تطبيقك. وفي حال استجابة الرسائل ذات الأولوية العالية، إذا تم عرض الإشعارات بطريقة مرئية للمستخدم، لن تتأثر الرسائل المستقبلية ذات الأولوية العالية.

تفويض الإشعارات باستخدام "خدمات Google Play"

تستخدم "خدمات Google Play" خادمًا وكيلاً لرسائل الإشعارات ذات الأولوية العالية (وليس رسائل البيانات) التي تستوفي معايير معيّنة بدلاً من إلغاء منحها الأولوية. وهذا يعني أنّه يتم عرض الإشعارات من خلال خدمات Google Play نيابةً التطبيق، بدون الحاجة إلى بدء تشغيل التطبيق. ويهدف ذلك إلى تقديم تجربة أفضل للمستخدِم بشكل عام على أجهزة Android.

تجدر الإشارة إلى أنّ رسائل الإشعارات التي يتم إرسالها عبر خادم وكيل تقدّم تغييرات في طريقة إعداد تقارير الإحصاءات المتعلّقة بالرسائل التي يتم استلامها:

  • لكي يتم الإبلاغ عن "إحصاءات Google" للإشعارات التي تم إنشاء خادم وكيل لها، يجب أن يستخدم تطبيقك الإصدار 24.0.0 أو إصدارًا أحدث من حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase".
  • قد تلاحظ تأخيرات أو انخفاضات في عدد الرسائل المُستلَمة مقارنةً بعددها قبل طرح الإشعارات من خلال خادم وكيل. ويرجع ذلك إلى أنّه لا يتم الإبلاغ عن إحصاءات الإشعارات التي تم إنشاء خادم وكيل لها إلا بعد بدء تشغيل التطبيق، وقد لا يتم الإبلاغ عنها على الإطلاق إذا لم يؤدِّ الإشعار إلى فتح التطبيق.

ويكون إنشاء خوادم وكيلة لرسائل الإشعارات بهذه الطريقة هو السلوك التلقائي للتطبيقات التي تستخدم Android Q+ والإصدار 19054000 أو الإصدارات الأحدث من خدمات Google Play. يتم إنشاء خادم وكيل للرسائل المُرسَلة من خلال 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) عن النسبة المئوية لجميع رسائلك الموجَّهة إلى Android التي لا يتم منحها الأولوية. قد يتم حذف بعض الرسائل من تقارير البيانات المجمّعة، ولكن يجب أن توفّر بشكل عام نظرة عامة على معدلات خفض أولوية الرسائل. يمكنك الاطّلاع على المقالة حول بيانات العرض المجمَّعة للحصول على مزيد من المعلومات والاطّلاع على نموذج عن رمز يتيح إجراء طلبات بحث عن واجهة برمجة التطبيقات. ويمكنك أيضًا الاطّلاع على هذه المقالة من خلال مستكشف واجهات برمجة التطبيقات.

  • الإشعارات عبر خادم وكيل: لن يتم احتساب الإشعارات التي يتم إرسالها عبر خادم وكيل في مقاييس تسليم الإشعارات الحالية عبر "المراسلة عبر السحابة الإلكترونية من Firebase" أو "إحصاءات Google"، لذا قد تلاحظ انخفاضًا يصل إلى% 15 في مقاييس تسليم الإشعارات. لإعداد إعداد تقارير عن الرسائل التي يتم إنشاؤها باستخدام خادم وكيل، يمكنك استخدام واجهة برمجة التطبيقات لبيانات التسليم المجمّعة في "المراسلة عبر السحابة الإلكترونية من Firebase". يُبلغ ProxyNotificationInsightPercents عن النسبة المئوية للإشعارات التي تم إنشاء خادم وكيل لها بنجاح، بالإضافة إلى تفاصيل الرسائل التي تعذّر إنشاء خادم وكيل بنجاح عليها.

تحديد المشاكل وحلّها

  • تأكَّد من تفعيل الإشعارات في مثيل التطبيق. وإذا أوقف المستخدم إذن إرسال الإشعارات لتطبيقك، لن يتم نشر أي من إشعاراتك، ونتيجةً لذلك، لن تمنح رسائلك الأولوية. يجب التحقُّق من تفعيل الإشعارات قبل إرسال الرسائل ذات الأولوية العالية إلى مثيل التطبيق.

  • لا تتصل بالمنزل قبل نشر إشعار. ونظرًا لأن هناك قطاعًا صغيرًا من مستخدمي أجهزة Android الجوّالة يستخدمون شبكات ذات وقت استجابة طويل، تجنَّب فتح اتصال بالخوادم قبل عرض إشعار. وقد يمثل معاودة الاتصال بالخادم قبل انتهاء مدة المعالجة المسموح بها خطرًا على المستخدمين الذين يستخدمون شبكات ذات وقت استجابة طويل. بدلاً من ذلك، ضمِّن محتوى الإشعار في رسالة "المراسلة عبر السحابة الإلكترونية من Firebase" واعرضه على الفور. إذا كنت بحاجة إلى المزامنة للحصول على محتوى إضافي داخل التطبيق على Android، يمكنك جدولة مهمة باستخدام WorkManager لمعالجة ذلك في الخلفية.