يُسلِّم 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.