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

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