لمحة عن رسائل "المراسلة عبر السحابة الإلكترونية من Firebase"

توفّر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" (FCM) مجموعة واسعة من خيارات المراسلة وإمكانياته. تهدف المعلومات الواردة في هذه الصفحة إلى في فهم الأنواع المختلفة من رسائل "المراسلة عبر السحابة الإلكترونية من Firebase" فعلها.

أنواع الرسائل

باستخدام ميزة "المراسلة عبر السحابة الإلكترونية من Firebase"، يمكنك إرسال نوعين من الرسائل إلى العملاء:

  • رسائل الإشعارات التي يُعتقَد أحيانًا على أنّها "رسائل معروضة" وتعالج حزمة تطوير البرامج لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" تلقائيًا هذه المشاكل.
  • رسائل البيانات التي يعالجها تطبيق العميل

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

استخدام السيناريو كيفية الإرسال
رسالة إشعار تعرض حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" الرسالة إلى أجهزة المستخدمين النهائيين. نيابةً عن تطبيق العميل عند تشغيله في الخلفية. وبخلاف ذلك، إذا كان التطبيق يعمل في المقدّمة عند عند تلقي إشعار، يحدد رمز التطبيق السلوك. تتضمن رسائل الإشعارات مجموعة محدَّدة مسبقًا من المفاتيح المرئية للمستخدم حمولة البيانات الاختيارية لأزواج المفتاح/القيمة المخصصة.
  1. في بيئة موثوق بها، مثل Cloud Functions أو خادم تطبيقك، يمكنك استخدام حزمة SDK للمشرف أو HTTP v1 API اضبط المفتاح notification. قد تتوفّر حمولة بيانات اختيارية. قابلة للتصغير دائمًا

    عرض بعض النتائج أمثلة على عرض الإشعارات وإرسال أحمال الطلبات

  2. يمكنك استخدام منشئ الإشعارات: أدخِل نص الرسالة والعنوان وما إلى ذلك وإرسالها. أضِف حمولة بيانات اختيارية من خلال تقديم "بيانات مخصّصة".
رسالة البيانات يكون تطبيق العميل مسؤولاً عن معالجة رسائل البيانات. رسائل البيانات لديها فقط أزواج مفاتيح/قيم مخصّصة بدون أسماء مفاتيح محجوزة (انظر أدناه). في بيئة موثوق بها مثل وظائف السحابة الإلكترونية أو خادم تطبيقك، يمكنك استخدام حزمة SDK للمشرف أو بروتوكولات خادم "المراسلة عبر السحابة الإلكترونية من Firebase". في طلب الإرسال، عليك ضبط data. المفتاح.

يمكنك استخدام رسائل الإشعارات عندما تريد من حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" معالجة عرض ستتلقّى إشعارًا تلقائيًا عندما يكون التطبيق قيد التشغيل في الخلفية. يمكنك استخدام رسائل البيانات عندما تريد معالجة الرسائل باستخدام رمز تطبيق العميل الخاص.

يمكن لميزة "المراسلة عبر السحابة الإلكترونية من Firebase" إرسال رسالة إشعار تتضمن بيانات اختيارية. حمولة البيانات. في هذه الحالات، تعالج خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" الإشعارات التي تظهر ويتعامل تطبيق العميل مع حمولة البيانات.

رسائل الإشعارات

للاختبار أو للتسويق وإعادة جذب المستخدمين، يمكنك إرسال رسائل الإشعارات باستخدام وحدة تحكُّم Firebase. توفِّر "وحدة تحكُّم Firebase" معلومات مستندة إلى الإحصاءات اختبار A/B لمساعدتك في تحسين لتحسين الرسائل التسويقية.

لإرسال رسائل الإشعارات آليًا باستخدام حزمة تطوير البرامج (SDK) للمشرف أو في بروتوكولات المراسلة عبر السحابة الإلكترونية من Firebase، اضبط المفتاح notification مع مجموعة محددة مسبقًا من خيارات المفتاح والقيمة المرئية للمستخدم من رسالة الإشعار. على سبيل المثال، إليك ملف بتنسيق JSON في تطبيق الرسائل الفورية. يمكن للمستخدم أن يتوقع رؤية رسالة تحمل العنوان "البرتغال ضد الدنمارك" والنص "توافق رائع!" على الجهاز:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

يتم تسليم رسائل الإشعارات إلى قائمة الإشعارات عندما يكون التطبيق تعمل في الخلفية. بالنسبة إلى التطبيقات التي تعمل في المقدّمة، يتم التعامل مع الرسائل من خلال: دالة معاودة الاتصال.

الاطّلاع على كائن إشعار بروتوكول HTTP v1 مستندات مرجعية للاطّلاع على القائمة الكاملة للمفاتيح المحدَّدة مسبقًا والمتاحة لإصدار الإشعارات. الرسائل.

رسائل البيانات

اضبط المفتاح المناسب مع أزواج المفتاح/القيمة المخصّصة على إرسال حمولة البيانات إلى تطبيق العميل.

على سبيل المثال، إليك رسالة بتنسيق JSON في تطبيق الرسائل الفورية نفسه كما هو موضح أعلاه حيث يتم تضمين المعلومات في المفتاح data المشترك من المتوقع أن يفسّر تطبيق العميل المحتوى:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

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

تشفير رسائل البيانات

طبقة النقل في Android (راجِع بنية "المراسلة عبر السحابة الإلكترونية من Firebase") التشفير من نقطة إلى نقطة. استنادًا إلى قد تقرر إضافة التشفير التام بين الأطراف إلى رسائل البيانات. لا توفّر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" حلاً شاملاً. ومع ذلك، هناك حلول خارجية متاحة مثل على أنّها شعرية أو بروتوكول أمان طبقة النقل لمخطّطات البيانات (DTLS):

رسائل الإشعارات التي تتضمن حمولة بيانات اختيارية

يمكنك إرسال إشعار آليًا أو عبر "وحدة تحكُّم Firebase". تحتوي على حمولة اختيارية من أزواج المفتاح/القيمة المخصّصة. ضِمن مُنشئ الإشعارات، استخدِم حقول البيانات المخصَّصة في الخيارات المتقدّمة:

سلوك التطبيق عند تلقّي رسائل تتضمّن كلاً من الإشعارات والبيانات على ما إذا كان التطبيق يعمل في الخلفية أو المقدمة — بشكل أساسي، سواء كانت نشطة في وقت الإيصال.

  • عندما تكون في الخلفية، تتلقّى التطبيقات حمولة الإشعارات في حاوية الإشعارات، والتعامل فقط مع حمولة البيانات عندما ينقر المستخدم ينقر على الإشعار.
  • عندما يعمل الجهاز في المقدّمة، يتلقّى تطبيقك رسالة. بكلتا الحمولتين متاحتين.

في ما يلي رسالة بتنسيق JSON تحتوي على مفتاح notification والمفتاح data:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

تخصيص رسالة عبر الأنظمة الأساسية

كلٌ من "SDK لمشرف Firebase" وبروتوكول FCM v1 HTTP يتيحان إرسال رسالتك تطلب تعيين جميع الحقول المتاحة في message الخاص بك. يشمل هذا النوع من المحتوى ما يلي:

  • مجموعة مشتركة من الحقول ليتم تفسيرها بواسطة جميع مثيلات التطبيقات التي تلقي الرسالة.
  • مجموعات حقول خاصة بالنظام الأساسي، مثل AndroidConfig وWebpushConfig يتم تفسيرها فقط من خلال مثيلات التطبيق التي تعمل على النظام الأساسي المحدد.

تمنحك عمليات الحظر الخاصة بالنظام الأساسي المرونة في تخصيص الرسائل المنصات المختلفة لضمان التعامل معها بشكل صحيح عند استلامها. تشير رسالة الأشكال البيانية ستأخذ خلفية FCM جميع المعلمات المحددة في الاعتبار وتخصِّص ورسالة لكل منصة.

متى تستخدم الحقول المشتركة

استخدِم الحقول الشائعة عند:

  • استهداف مثيلات التطبيقات على جميع الأنظمة الأساسية: Apple وAndroid والويب
  • إرسال رسائل إلى المواضيع

يمكن لجميع مثيلات التطبيقات، بغض النظر عن النظام الأساسي، تفسير العوامل الشائعة التالية الحقول:

حالات استخدام الحقول الخاصة بالنظام الأساسي

استخدِم الحقول الخاصة بالنظام الأساسي عندما تريد:

  • إرسال الحقول إلى أنظمة أساسية معيّنة فقط
  • إرسال الحقول الخاصة بالنظام الأساسي بالإضافة إلى الحقول المشتركة

عندما تريد إرسال قيم إلى أنظمة أساسية معيّنة فقط، لا تستخدم الحقول المشتركة؛ يستخدمون حقولاً خاصة بالنظام الأساسي. على سبيل المثال، لإرسال إشعار على أنظمة Apple الأساسية والويب فقط وليس Android، يجب استخدام مجموعتين منفصلتين من أحدهما لـ Apple والآخر للويب.

عندما ترسل رسائل تحتوي على خيارات التسليم، استخدم الحقول الخاصة بالنظام الأساسي لإعدادها. يمكنك تحديد قيم مختلفة لكل منصّة إذا التي تريدها. ومع ذلك، حتى عندما تريد تعيين نفس القيمة بشكل أساسي عبر يجب استخدام حقول خاصة بالأنظمة الأساسية. هذا لأن كل منصة القيمة بشكل مختلف قليلاً - على سبيل المثال، تُعد مدة البقاء على نظام Android كوقت انتهاء الصلاحية بالثواني، بينما يتم تحديده على Apple انتهاء الصلاحية date.

مثال: رسالة إشعار بخيارات التسليم الخاصة بالنظام الأساسي

يرسل طلب الإرسال التالي للإصدار الأول عنوان إشعار شائعًا المحتوى لجميع الأنظمة الأساسية، ولكنه يرسل أيضًا بعض عمليات الإلغاء الخاصة بالنظام الأساسي. على وجه التحديد، يجب أن يستوفي الطلب ما يلي:

  • ضبط مدّة طويلة الأمد على أنظمة Android والويب، مع ضبط أولوية رسائل أسماء نقاط الوصول (APN) (أنظمة Apple الأساسية) على إعداد منخفض
  • تضبط هذه السياسة المفاتيح المناسبة لتحديد نتيجة نقر المستخدم على الإشعار على نظامَي التشغيل Android وApple — click_action وcategory على التوالي.
{
  "message":{
     "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
     "notification":{
       "title":"Match update",
       "body":"Arsenal goal in added time, score is now 3-0"
     },
     "android":{
       "ttl":"86400s",
       "notification"{
         "click_action":"OPEN_ACTIVITY_1"
       }
     },
     "apns": {
       "headers": {
         "apns-priority": "5",
       },
       "payload": {
         "aps": {
           "category": "NEW_MESSAGE_CATEGORY"
         }
       }
     },
     "webpush":{
       "headers":{
         "TTL":"86400"
       }
     }
   }
 }

الاطّلاع على المستندات المرجعية للإصدار HTTP v1 للحصول على التفاصيل الكاملة حول المفاتيح المتاحة في عمليات حظر خاصة بالنظام الأساسي في نص الرسالة. لمزيد من المعلومات عن إنشاء طلبات إرسال تحتوي على نص الرسالة، راجع إنشاء طلبات الإرسال:

خيارات التسليم

توفّر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" مجموعة محدّدة من خيارات التسليم للرسائل المُرسَلة إلى أجهزة Android، ويسمح بخيارات مماثلة على أنظمة Apple الأساسية والويب. على سبيل المثال، "قابل للتصغير" توافق سلوك الرسالة على Android عبر collapse_key التابعة للمراسلة عبر السحابة الإلكترونية من Firebase، على Apple عبر apns-collapse-id، وعلى JavaScript/الويب من خلال Topic. للحصول على التفاصيل، يمكنك مراجعة الأوصاف الواردة في هذا القسم والمستندات المرجعية ذات الصلة.

الرسائل غير القابلة للتصغير والتصغير

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

بعض حالات الاستخدام المعتادة للرسائل غير القابلة للتصغير هي رسائل المحادثة أو الرسائل المهمة. على سبيل المثال، في أحد تطبيقات الرسائل الفورية، قد ترغب في تسليم كل رسالة، لأن كل رسالة لها محتوى مختلف.

بالنسبة إلى Android، هناك حد أقصى يبلغ 100 رسالة يمكن تخزينها بدون الانهيار. إذا كانت تم الوصول إلى الحد المسموح به، يتم تجاهل جميع الرسائل المخزنة. عند إعادة الجهاز عبر الإنترنت، تلقى رسالة خاصة تشير إلى الوصول إلى الحد المسموح به. يمكن للتطبيق بعد ذلك التعامل مع الموقف بشكل صحيح، وعادةً ما يتم ذلك عن طريق طلب إجراء المزامنة من خادم التطبيق.

الرسالة القابلة للتصغير هي رسالة قد يتم استبدالها جديدة إذا لم يتم تسليمها إلى الجهاز بعد.

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

لوضع علامة "قابلة للتصغير" على رسالة على نظام التشغيل Android، يجب تضمين معلَمة collapse_key في حمولة الرسالة. يكون مفتاح التصغير هو اسم حزمة التطبيق تلقائيًا تم تسجيلها في "وحدة تحكُّم Firebase". يمكن لخادم "المراسلة عبر السحابة الإلكترونية من Firebase" تخزين أربع رسائل مختلفة قابلة للتصغير في وقت واحد لكل كل جهاز باستخدام مفتاح تصغير مختلف. إذا تجاوزت هذا الرقم، تحتفظ خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" فقط أربعة مفاتيح تصغير، دون أي ضمانات بشأن المفاتيح التي يتم الاحتفاظ بها.

تكون رسائل المواضيع التي لا تتضمّن حمولة قابلة للتصغير تلقائيًا. رسائل الإشعارات قابلة للتصغير دائمًا، وستتجاهل المَعلمة collapse_key.

أيّها يجب أن أستخدم؟

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

استخدام السيناريو كيفية الإرسال
غير قابلة للتصغير كل رسالة مهمة لتطبيق العميل ويجب أن تكون تسليمه. باستثناء رسائل الإشعارات، لا يمكن تصغير جميع الرسائل بواسطة الافتراضي.
قابلة للطيّ عند وجود رسالة أحدث تعرض رسالة قديمة ذات صلة لا صلة لها بتطبيق العميل، تستبدل ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" الرسالة القديمة. مثل: الرسائل المستخدمة لبدء مزامنة البيانات من الخادم أو الرسائل القديمة رسائل الإشعارات. اضبط المَعلمة المناسبة في طلب الرسالة:
  • "collapseKey" على نظام التشغيل Android
  • "apns-collapse-id" على Apple
  • "Topic" على الويب
  • collapse_key في البروتوكولات القديمة (جميع الأنظمة الأساسية)

تحديد أولوية رسالة

لديك خياران لتعيين أولوية التسليم للرسائل التي تلي استلام الرسالة: أولوية عادية وعالية. رغم أن السلوك يختلف قليلاً عبر الأساسية، فإن تسليم الرسائل ذات الأولوية العادية والعالية الأولوية النحو التالي:

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

  • أولوية عالية: تحاول خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" منح أولوية عالية الرسائل على الفور حتى إذا كان الجهاز في وضع القيلولة. الرسائل ذات الأولوية العالية هي للمحتوى المرئي الحسّاس من حيث الوقت.

في ما يلي مثال لرسالة أولوية عادية تم إرسالها عبر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" بروتوكول HTTP v1 لإرسال إشعار إلى إحدى المجلات المشترك بأن المحتوى الجديد متوفر للتنزيل:

{
  "message":{
    "topic":"subscriber-updates",
    "notification":{
      "body" : "This week's edition is now available.",
      "title" : "NewsMagazine.com",
    },
    "data" : {
      "volume" : "3.21.15",
      "contents" : "http://www.news-magazine.com/world-week/21659772"
    },
    "android":{
      "priority":"normal"
    },
    "apns":{
      "headers":{
        "apns-priority":"5"
      }
    },
    "webpush": {
      "headers": {
        "Urgency": "high"
      }
    }
  }
}

لمزيد من التفاصيل الخاصة بالنظام الأساسي حول ضبط أولوية الرسالة:

تحديد عمر الرسالة

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

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

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

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

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

هناك مزايا أخرى لتحديد مدة عمل الرسالة وهي لا تطبِّق خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" تقييد الرسائل القابلة للتصغير على الرسائل التي تتضمن قيمة مدة البقاء 0 ثانية. توفّر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" أفضل معالجة للرسائل التي يجب تسليمه "الآن أو أبدًا". ضع في اعتبارك أن قيمة time_to_live من يعني الرقم 0 تجاهل الرسائل التي يتعذّر تسليمها فورًا. ومع ذلك، لأنه لا يتم تخزين مثل هذه الرسائل أبدًا، فإن هذا يوفر أفضل وقت استجابة إرسال رسائل تنبيه.

في ما يلي مثال لطلب يتضمن مدة البقاء:

{
  "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"
      }
    }
  }
}

فترة بقاء الرسالة

عندما ينشر خادم تطبيق رسالة إلى "المراسلة عبر السحابة الإلكترونية من Firebase" ويتلقّى رسالة ID مرة أخرى، فهذا لا يعني أنه تم تسليم الرسالة بالفعل إلى الخاص بك. بل يعني أنه تم قبوله للتسليم. ماذا يحدث لـ الرسالة بعد قبولها يعتمد على عدة عوامل.

وفي أفضل الحالات، إذا كان الجهاز متصلاً بخدمة "المراسلة عبر السحابة الإلكترونية من Firebase"، تشغيل الشاشة وليست هناك أي قيود تقييد، ستظهر تسليمه على الفور.

إذا كان الجهاز متصلاً ولكن في "القيلولة"، يتم تخزين رسالة ذات أولوية منخفضة خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" إلى أن يتم إيقاف ميزة "القيلولة" في الجهاز. و هذا هو المكان الذي تلعب فيه علامة collapse_key دورًا: إذا كانت هناك رسالة بالفعل تحتوي على نفس مفتاح التصغير (والرمز المميز للتسجيل) وفي انتظار التسليم، يتم تجاهل الرسالة القديمة وتحل الرسالة الجديدة مكانها (أي أنه تم تصغير الرسالة القديمة بواسطة الرسالة الجديدة). ومع ذلك، إذا كان تصغير بدون تعيين، يتم تخزين الرسائل الجديدة والقديمة للتسليم في المستقبل.

إذا لم يكن الجهاز متصلاً بخدمة "المراسلة عبر السحابة الإلكترونية من Firebase"، سيتم تخزين الرسالة حتى يتم إنشاء اتصال (مرة أخرى مع احترام القواعد الرئيسية للطي). عندما الاتصال، سلمت خدمة FCM جميع الرسائل المعلقة إلى الخاص بك. إذا لم يتم ربط الجهاز مرة أخرى مطلقًا (على سبيل المثال، إذا تمت إعادة تعيين إعدادات المصنع)، تنتهي مهلة الرسالة في النهاية تم تجاهلها من مساحة تخزين FCM. المهلة الافتراضية هي أربعة أسابيع، ما لم يتم ضبط العلامة time_to_live.

للحصول على مزيد من الإحصاءات حول تسليم رسالة:

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

وأخيرًا، عندما تحاول خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" تسليم رسالة إلى الجهاز تم إلغاء تثبيت التطبيق، وتتجاهل خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" هذه الرسالة على الفور إلى إلغاء الرمز المميز للتسجيل. المحاولات المستقبلية لإرسال رسالة إلى ذلك إلى حدوث خطأ NotRegistered في الجهاز.

تقييد البيانات والحصص

هدفنا هو تسليم كل رسالة يتم إرسالها عبر ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" بشكل دائم. ومع ذلك، يؤدي عرض كل رسالة في بعض الأحيان إلى تجربة مستخدم سيئة بشكل عام. وفي حالات أخرى، نحتاج إلى وضع حدود لضمان توفير خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" خدمة قابلة للتطوير لجميع المرسلين. أنواع الحدود والحصص الموضحة في هذا القسم في تحقيق التوازن بين هذه العوامل المهمة.

تقييد الرسائل بعد استلامها

تم تقديم حصص سابقة لكل مشروع في الدقيقة من واجهة برمجة التطبيقات HTTP v1. المراسلة. تغطي الحصة التلقائية البالغة 600 ألف رسالة في الدقيقة ما يزيد عن 99% من مع مطوّري برامج "المراسلة عبر السحابة الإلكترونية من Firebase" مع الحفاظ على استقرار النظام مما يقلل من تأثير المشروعات الشائكة.

أنماط حركة المرور المرتفعة إلى حدوث أخطاء تجاوز الحصة. في حصة زائدة يعرض النظام رمز حالة HTTP 429 (QUOTA_EXCEEDED) حتى تتم إعادة تعبئة الحصة في الدقيقة التالية. قد يتم أيضًا إرجاع 429 ردًا في حالات الحِمل الزائد، لذا نشجّعك بشدة على معالجة أخطاء 429 وفقًا الاقتراحات المنشورة:

تجدر الإشارة إلى ما يلي:

  • تقيس حصة عملية استلام الرسائل الإلكترونية الرسائل، وليس الطلبات.
  • ويتم احتساب أخطاء العميل (رمز حالة HTTP 400-499) (باستثناء 429).
  • تكون الحصص في الدقيقة، ولكن لا تتم محاذاة هذه الدقائق مع الساعة.

حصة المراقبة

يمكنك الاطّلاع على الحصة والاستخدام والأخطاء على Google Cloud Console:

  1. انتقِل إلى وحدة تحكُّم Google Cloud
  2. حدد واجهات برمجة التطبيقات الخدمات
  3. من قائمة الجدول، اختَر Firebase Cloud Messaging API.
  4. اختيار حصة و حدود النظام:

ملاحظة: لا تتوافق هذه الرسوم البيانية بدقة مع دقائق الحصة، مما يعني قد يتم عرض أخطاء 429 عندما يبدو أنّ عدد الزيارات أقل من الحصة المحدّدة.

طلب زيادة في الحصة

قبل طلب زيادة الحصة، تأكَّد مما يلي:

  • يزيد استخدامك بانتظام عن نسبة 80% من الحصة لمدة 5 دقائق متتالية على الأقل. في اليوم.
  • لديك < 5% نسبة أخطاء العميل، خاصةً أثناء ذروة عدد الزيارات.
  • تلتزم بأفضل الممارسات لإرسال الرسائل على نطاق واسع.

في حال استيفاء هذه المعايير، يمكنك إرسال طلب لزيادة الحصة لمدة تصل إلى +25% وسيبذل فريق "المراسلة عبر السحابة الإلكترونية من Firebase" قصارى جهده لتلبية الطلب (لا يمكن ضمان حدوث زيادة).

إذا كنت بحاجة إلى المزيد من حصة الرسائل التي تظهر بعد مرحلة الإطلاق بسبب موعد إطلاق وشيك حدث مؤقت، فاطلب حصتك قبل 15 يومًا على الأقل للسماح وقتًا كافيًا لمعالجة الطلب. للطلبات الكبيرة (>18 مليون رسالة في الدقيقة)، يجب إرسال ما لا يقل عن يجب إرسال إشعار قبل 30 يومًا. ما زالت عمليات الإطلاق وطلبات الأحداث الخاصة وفقًا لنسبة أخطاء العميل ومتطلبات أفضل الممارسات.

يمكنك أيضًا الاطّلاع على الأسئلة الشائعة حول حصص "المراسلة عبر السحابة الإلكترونية من Firebase".

الحد الأقصى للرسائل المرتبطة بالموضوع

إنّ معدّل إضافة أو إزالة الاشتراك في الموضوع يقتصر على 3,000 طلب في الثانية لكل مشروع.

للتعرُّف على معدلات إرسال الرسائل، يُرجى الاطّلاع على تقييد المعجبين.

تقييد تدفق البيانات

توزيع الرسائل هو عملية إرسال رسالة إلى أجهزة متعددة، مثل عند استهدافك لموضوعات ومجموعات، أو عند استخدام مؤلف الإشعارات استهداف الجماهير أو شرائح المستخدمين

ولا تتم عملية توزيع الرسائل على الفور، لذا أحيانًا يكون لديك العديد من عمليات التوزيع الممتدة بالتزامن. نضع حدًا لعدد الرسائل المتزامنة توزيعات موزّعة لكل مشروع إلى 1000. بعد ذلك، قد نرفض التوزيع الإضافي. الطلبات أو تأجيل توزيع الطلبات حتى تتم اكتمال عمليات توزيع التقدم.

يتأثر معدل التوزيع الفعلي القابل للتحقيق بعدد المشروعات وطلب توزيع موسَّع في نفس الوقت معدّل التوزيع بمقدار 10000 طلب في الثانية مشروع فردي ليس بالأمر الهين، ولكن هذا الرقم لا يعد ضمانًا ناتج الحِمل الإجمالي على النظام. من المهم ملاحظة أن تُقسَّم السعة المتاحة للنشر بين المشاريع وليس على مستوى التوزيع الموسَّع الطلبات. لذلك، إذا كان مشروعك له نطاقان ممتدان قيد التنفيذ، فيجب فقط نصف معدل التوزيع المتاح. الطريقة الموصى بها لزيادة هي أن يكون لديك توزيع نشط واحد فقط في كل مرة.

تقييد الرسائل القابلة للتصغير

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

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

إذا كانت حالة الاستخدام تتطلب أنماط إرسال متسلسلة عالية، فقد تكون الرسائل غير القابلة للتصغير هي الخيار الصحيح. بالنسبة إلى هذه الرسائل، تأكد من تضمين المحتوى في مثل هذه الرسائل لتقليل تكلفة البطارية.

نحدّ من الرسائل القابلة للتصغير إلى سلسلة من 20 رسالة لكل تطبيق على كل جهاز، مع إعادة تعبئة رسالة واحدة كل 3 دقائق.

تقييد خادم XMPP

نحدّ من المعدّل الذي يمكنك الاتصال بخوادم FCM XMPP بـ 400 اتصال في الدقيقة لكل مشروع. ينبغي ألا يمثل هذا مشكلة في تسليم الرسائل، لكن أمرًا مهمًا لضمان استقرار النظام. لكل مشروع، تتيح ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" 2,500 اتصال بالتوازي.

للمراسلة أثناء البث المباشر باستخدام XMPP وحدود "المراسلة عبر السحابة الإلكترونية من Firebase" الرسائل النهائية بسرعة 1,500,000 لكل دقيقة لكل مشروع لتجنب التحميل الزائد على خوادم الوجهة للتحميل.

الحد من الرسائل أثناء البث لكل جهاز بمعدّل 1,000 في الدقيقة للحماية من شحن البطارية من الأداء السيئ للتطبيق.

الحد الأقصى لمعدل الرسائل إلى جهاز واحد

على Android، يمكنك إرسال ما يصل إلى 240 رسالة في الدقيقة و5,000 رسالة في الساعة إلى جهاز واحد. الخاص بك. يهدف هذا الحد المرتفع إلى السماح بمجموعات الزيارات القصيرة الأجل، مثلاً عندما يتفاعل المستخدمون بسرعة عبر الدردشة ويمنع هذا الحد الأخطاء. في إرسال منطق من استنزاف بطارية أحد الأجهزة بدون قصد.

في أجهزة iOS، سنعرض رسالة خطأ عندما يتجاوز المعدّل حدود أسماء نقاط الوصول (APN).

منافذ FCM وجدار الحماية

إذا كانت مؤسستك تمتلك جدار حماية لتقييد عدد الزيارات إلى من الإنترنت، يجب إعداده للسماح للأجهزة الجوّالة بالاتصال مع ميزة "المراسلة عبر السحابة الإلكترونية من Firebase" لكي تتلقّى الأجهزة المتصلة بشبكتك الرسائل. تستخدم خدمة FCM عادةً المنفذ 5228، لكنها تستخدم أحيانًا 443 و5229 5230.

بالنسبة إلى الأجهزة التي تتصل بشبكتك، لا توفر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" عناوين IP محددة لأن نطاق عناوين IP لدينا يتغير بشكل متكرر جدًا كما تتغير قواعد جدار الحماية قد تصبح قديمة، مما يؤثر على تجربة المستخدم. من الناحية المثالية، يمكنك استخدام القائمة المسموح بها المنافذ 5228-5230 443 بدون قيود IP. ومع ذلك، إذا كان يجب الحصول على عنوان IP محظورة، يجب إضافة جميع عناوين IP المدرجة في goog.json إلى القائمة المسموح بها. يتم تحديث هذه القائمة الكبيرة بانتظام، وننصحك بتحديث القواعد على أساس شهري. المشكلات التي تسببها غالبًا ما تكون قيود IP لجدار الحماية متقطعة ويصعب تشخيصها.

نحن نوفّر مجموعة من أسماء النطاقات التي يمكن إدراجها في القائمة المسموح بها بدلاً من عنوان IP . في ما يلي أسماء المضيفين هذه. إذا بدأنا في استخدام أدوات فسوف نقوم بتحديث القائمة هنا. استخدام أسماء النطاقات لجدار الحماية أن يعمل أو لا يعمل في جهاز جدار الحماية.

منافذ TCP المطلوب فتحها:

  • 5228
  • 5229
  • 5230
  • 443

أسماء المضيفين المراد فتحها:

  • mtalk.google.com
  • mtalk4.google.com
  • mtalk-staging.google.com
  • mtalk-dev.google.com
  • alt1-mtalk.google.com
  • alt2-mtalk.google.com
  • alt3-mtalk.google.com
  • alt4-mtalk.google.com
  • alt5-mtalk.google.com
  • alt6-mtalk.google.com
  • alt7-mtalk.google.com
  • alt8-mtalk.google.com
  • android.apis.google.com
  • device-provisioning.googleapis.com
  • firebaseinstallations.googleapis.com

"ترجمة عنوان الشبكة" و/أو جدران الحماية لفحص حِزم البيانات بالحالة:

إذا كانت شبكتك تنفذ ترجمة عنوان الشبكة (NAT) أو حزمة Stateful Pack الفحص (SPI)، تنفيذ مهلة تبلغ 30 دقيقة أو أكثر لاتصالاتنا عبر المنافذ 5228-5230. وهذا يمكّننا من تقديم معلومات إمكانية الاتصال مع تقليل استهلاك البطارية الذي يستهلكه المستخدمون جوَّال الأجهزة.

تفاعلات شبكة VPN وتجاوزها

تتخذ خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" خطوات متنوعة لضمان الاتصال من الهاتف إلى الخادم موثوقًا ومتاحًا بالقدر الذي تكون فيه ممكن. يؤدي استخدام شبكة VPN إلى تعقيد هذه الجهود.

تخفي الشبكات الافتراضية الخاصة المعلومات الأساسية التي تحتاجها خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لتعديل بياناتها اتصال لزيادة الموثوقية إلى أقصى حد عمر البطارية في بعض الحالات، تكون الشبكات الافتراضية الخاصة نشطة تقطع الاتصالات طويلة العمر مما يؤدي إلى تجربة مستخدم سيئة بسبب التغاضي أو تأخر الرسائل أو ارتفاع تكلفة البطارية. عند ضبط شبكة VPN للسماح لنا لتنفيذ ذلك، نتجاوز شبكة VPN باستخدام اتصال مشفّر (عبر الشبكة الأساسية). wifi أو LTE) لضمان استخدام المستخدم. يقتصر استخدام خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" للشبكات الافتراضية الخاصة القابلة للتجاوز على قناة الإشعارات الفورية في "المراسلة عبر السحابة الإلكترونية من Firebase". زيارات "المراسلة عبر السحابة الإلكترونية من Firebase" الأخرى، مثل حركة بيانات التسجيل، تستخدم شبكة VPN إذا كانت نشطة. عندما ترسل خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" إذا تجاوز اتصال شبكة VPN، يعني ذلك أنّه يفقد المزايا الإضافية التي قد توفّرها شبكة VPN مثل إخفاء عناوين IP.

سيكون للشبكات الافتراضية الخاصة (VPN) طرق مختلفة للتحكم في ما إذا كان يمكنها المشروع. للحصول على تعليمات، يمكنك الاطّلاع على وثائق الشبكة الافتراضية الخاصة.

في حال عدم ضبط شبكة VPN بحيث يمكن تجاوزها، ستجري خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" استخدام شبكة VPN للاتصال بالخادم. وقد يؤدي ذلك إلى فترات تأخر الرسائل وقد تؤدي إلى زيادة طاقة البطارية استخدامه، حيث تعمل خدمة المراسلة عبر السحابة الإلكترونية على الحفاظ على الاتصال عبر شبكة VPN الاتصال.

بيانات الاعتماد

بناءً على ميزات "المراسلة عبر السحابة الإلكترونية من Firebase"، قد تحتاج إلى بيانات الاعتماد التالية من مشروع Firebase:

رقم تعريف المشروع معرّف فريد لمشروعك في Firebase، يُستخدم في الطلبات إلى نقطة نهاية HTTP للإصدار 1 من خدمة FCM. هذه القيمة متاح في لوحة الإعدادات في وحدة تحكُّم Firebase.
الرمز المميّز للتسجيل

سلسلة رمز مميّز فريدة تحدِّد كل مثيل لتطبيق عميل يجب إدخال الرمز المميّز للتسجيل لجهاز واحد وجهاز واحد المراسلة الجماعية. لاحظ أن الرموز المميزة للتسجيل يجب أن تبقى سرية.

معرّف المرسِل قيمة رقمية فريدة يتم إنشاؤها عند إنشاء مشروعك على Firebase متاح في علامة تبويب "المراسلة عبر السحابة الإلكترونية" في وحدة تحكُّم Firebase لوحة الإعدادات. يُستخدم معرّف المرسِل لتحديد كل المرسل يمكنه إرسال الرسائل إلى تطبيق العميل.
رمز الدخول يشير هذا المصطلح إلى رمز مميّز قصير الأجل من OAuth 2.0 يسمح بالطلبات المرسَلة إلى HTTP v1. واجهة برمجة التطبيقات. هذا الرمز المميّز مرتبط بحساب خدمة ينتمي إلى لمشروعك في Firebase. لإنشاء رموز الدخول وتدويرها، اتبع الخطوات التالية الخطوات الموضحة في السماح بطلبات الإرسال
مفتاح الخادم (للبروتوكولات القديمة **متوقّفة نهائيًا**)

خادم يفوّض خادم تطبيقك الوصول إلى خدمات Google، بما في ذلك إرسال الرسائل من خلال تم إيقاف "المراسلة عبر السحابة الإلكترونية من Firebase" نهائيًا والبروتوكولات القديمة.

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