ضبط مدة بقاء الرسالة

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