عادةً ما يرسل تطبيق 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.