تُسلّم FCM الرسائل عادةً فور إرسالها. ومع ذلك، قد لا يكون هذا ممكنًا دائمًا. على سبيل المثال، قد يكون الجهاز غير متاح أو قد يؤخّر FCM الرسائل عمدًا لمنع أحد التطبيقات من استهلاك موارد مفرطة والتأثير سلبًا في عمر البطارية.
وفي هذه الحالات، يخزّن FCM الرسالة ويسلّمها في أقرب وقت ممكن. على الرغم من أنّ هذا الإجراء لا يسبّب أي مشاكل في معظم الحالات، إلا أنّ بعض التطبيقات تتطلّب إرسال الإشعارات بدون تأخير. على سبيل المثال، إشعار بمكالمة واردة أو دعوة إلى حدث.
على Android والويب، يمكنك تحديد الحد الأقصى لعمر الرسالة. يجب أن تكون القيمة مدة تتراوح بين 0 و2,419,200 ثانية (28 يومًا)، وهي تتوافق مع الحد الأقصى للمدة الزمنية التي تخزّن فيها FCM الرسالة وتحاول تسليمها. بشكل تلقائي، تستمر الطلبات التي لا تحتوي على هذا الحقل لمدة أربعة أسابيع كحد أقصى.
على أجهزة iOS، يمكنك ضبط العنوان apns-expiration في عنصر
ApnsConfig. لمزيد من التفاصيل، يُرجى الرجوع إلى مستندات Apple حول إرسال طلبات الإشعارات إلى APNs.
في ما يلي بعض الاستخدامات المحتملة لهذه الميزة:
- المكالمات الواردة في محادثة الفيديو
- أحداث الدعوات التي ستنتهي صلاحيتها
- الأحداث في التقويم
من المزايا الأخرى لتحديد مدة بقاء الرسالة أنّ FCM لا يطبّق الحدّ الأقصى لعدد الرسائل القابلة للتصغير على الرسائل التي تبلغ مدة بقائها 0 ثانية. يُرجى العِلم أنّ قيمة ttl التي تبلغ 0 تعني أنّه سيتم تجاهل الرسائل التي لا يمكن تسليمها على الفور. ومع ذلك، نظرًا لعدم تخزين هذه الرسائل مطلقًا، فإنّ ذلك يوفّر أفضل وقت استجابة لإرسال رسائل الإشعارات.
في ما يلي مثال على طلب يتضمّن ttl:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
"apns":{
"headers":{
"apns-expiration":"1604750400"
}
},
"android":{
"ttl":"4500s"
},
"webpush":{
"headers":{
"TTL":"4500"
}
}
}
}
الفترة منذ إنشاء الرسالة
عندما ينشر خادم تطبيق رسالة إلى FCM ويتلقّى معرّف رسالة، لا يعني ذلك أنّه تم تسليم الرسالة إلى الجهاز. بدلاً من ذلك، يعني ذلك أنّه تم قبولها للتسليم. يعتمد وقت تسليم الرسالة على عدة عوامل.
إذا كان الجهاز متصلاً ولكن في وضع "توفير الطاقة أثناء عدم الاستخدام"، سيتم تخزين رسالة ذات أولوية منخفضة بواسطة
FCM إلى أن يخرج الجهاز من وضع "توفير الطاقة أثناء عدم الاستخدام". إذا تم ضبط collapse_key، وكانت هناك رسالة حالية تحمل مفتاح التصغير ورمز التسجيل نفسهما في انتظار التسليم، يتم تجاهل الرسالة القديمة وتحلّ الرسالة الجديدة محلّها. ومع ذلك، إذا لم يتم ضبط مفتاح الدمج، سيتم تخزين الرسالتين الجديدة والقديمة لتسليمهما في المستقبل.
إذا لم يكن الجهاز متصلاً بـ FCM، يتم تخزين الرسالة إلى أن يتم
إنشاء اتصال. عند إنشاء اتصال، يرسل تطبيق FCM جميع الرسائل المعلقة إلى الجهاز. إذا لم يتم ربط الجهاز مرة أخرى، ستنتهي مهلة الرسالة في النهاية وسيتم تجاهلها من مساحة التخزين FCM. والقيمة التلقائية لانتهاء المهلة هي أربعة أسابيع، ما لم يتم ضبط العلامة ttl. إذا تم إلغاء تثبيت التطبيق عندما يحاول FCM تسليم رسالة إلى الجهاز، يتجاهل FCM هذه الرسالة على الفور ويبطل رمز التسجيل المميّز. وستؤدي المحاولات المستقبلية لإرسال رسالة إلى هذا الجهاز إلى ظهور الخطأ NotRegistered.
بالنسبة إلى أجهزة Android، إذا لم يتصل الجهاز بخدمة "FCM" لأكثر من شهر، ستظل خدمة "FCM" تقبل الرسالة ولكنها ستتجاهلها على الفور. إذا اتصل الجهاز بالإنترنت خلال أربعة أسابيع من آخر رسالة بيانات أرسلتها إليه، سيتلقّى تطبيق العميل دالة الاستدعاء onDeletedMessages().
للحصول على مزيد من الإحصاءات حول عرض الرسائل على منصتَي Android أو Apple، يمكنك استخدام لوحة بيانات FCMالتقارير التي تسجّل عدد الرسائل المرسَلة والمفتوحة على أجهزة Apple وAndroid، بالإضافة إلى بيانات مرات الظهور لتطبيقات Android.