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

FCM عادةً ما يسلّم الرسائل فور إرسالها. ومع ذلك، قد لا يكون ذلك ممكنًا دائمًا. على سبيل المثال، قد يكون الجهاز غير متاح أو FCM قد يؤخّر الرسائل عمدًا لمنع أحد التطبيقات من استهلاك موارد مفرطة والتأثير سلبًا في عمر البطارية.

في هذه الحالات، يخزّن نظام FCM الرسالة ويسلّمها في أقرب وقت ممكن. على الرغم من أنّ هذا الإجراء مناسب في معظم الحالات، فإنّ بعض التطبيقات تتطلّب إرسال الإشعارات بدون تأخير. على سبيل المثال، إشعار بمكالمة واردة أو دعوة إلى حدث.

على Android والويب، يمكنك تحديد الحد الأقصى لعمر الرسالة. يجب أن تكون القيمة مدة تتراوح بين 0 و2,419,200 ثانية (28 يومًا)، وتمثّل الحد الأقصى للفترة الزمنية التي يخزّن فيها نظام FCM الرسالة ويحاول تسليمها. تستمر الطلبات التي لا تحتوي على هذا الحقل لمدة أقصاها أربعة أسابيع بشكل تلقائي.

على iOS، يمكنك ضبط عنوان apns-expiration في عنصر ApnsConfig. لمزيد من التفاصيل، يُرجى الرجوع إلى مستندات Apple حول إرسال طلبات الإشعارات إلى APNs.

في ما يلي بعض الاستخدامات المحتملة لهذه الميزة:

  • المكالمات الواردة في محادثات الفيديو
  • الأحداث التي تنتهي صلاحية الدعوات إليها
  • الأحداث في التقويم

ميزة أخرى لتحديد عمر الرسالة هي أنّ نظام FCM لا يطبّق تنظيم عدد الرسائل القابلة للطي على الرسائل التي تكون قيمة مدة البقاء (TTL) فيها 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 هذه الرسالة على الفور ويبطل رمز التسجيل.FCMFCM تؤدي المحاولات المستقبلية لإرسال رسالة إلى هذا الجهاز إلى ظهور الخطأ NotRegistered.

بالنسبة إلى أجهزة Android، إذا لم يتصل الجهاز بنظام FCM لأكثر من شهر واحد، سيظل نظام FCM يقبل الرسالة ولكنه يتجاهلها على الفور. إذا اتصل الجهاز في غضون أربعة أسابيع من آخر رسالة بيانات أرسلتها إليه ، سيتلقّى تطبيق العميل onDeletedMessages() معاودة الاتصال.

للحصول على مزيد من المعلومات حول تسليم الرسائل على منصات Android أو Apple، يمكنك استخدام FCM لوحة بيانات إعداد التقارير، التي تسجّل عدد الرسائل المرسَلة والمفتوحة على أجهزة Apple وAndroid، بالإضافة إلى بيانات مرّات الظهور لتطبيقات Android.