REST Resource: projects.messages

المرجع: رسالة

رسالة يجب إرسالها عبر "خدمة المراسلة عبر السحابة الإلكترونية من Firebase".

تمثيل JSON
{
  "name": string,
  "data": {
    string: string,
    ...
  },
  "notification": {
    object (Notification)
  },
  "android": {
    object (AndroidConfig)
  },
  "webpush": {
    object (WebpushConfig)
  },
  "apns": {
    object (ApnsConfig)
  },
  "fcm_options": {
    object (FcmOptions)
  },

  // Union field target can be only one of the following:
  "token": string,
  "topic": string,
  "condition": string
  // End of list of possible types for union field target.
}
الحقول
name

string

النتائج فقط. معرِّف الرسالة المُرسَلة، بتنسيق projects/*/messages/{message_id}.

data

map (key: string, value: string)

الإدخال فقط. حمولة المفتاح/القيمة العشوائية التي يجب أن تكون بترميز UTF-8 يجب ألا يكون المفتاح كلمة محجوزة ("من" أو "message_type" أو أي كلمة تبدأ بـ "google." أو "gcm.notification."). عند إرسال الحمولات التي تحتوي على حقول بيانات فقط إلى أجهزة iOS، لا يتم السماح إلا بالأولوية العادية ("apns-priority": "5") في ApnsConfig.

عنصر يحتوي على قائمة بأزواج "key": value مثال: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object (Notification)

الإدخال فقط. نموذج إشعار أساسي لاستخدامه في جميع المنصات

android

object (AndroidConfig)

الإدخال فقط. الخيارات الخاصة بنظام التشغيل Android للرسائل المُرسَلة من خلال خادم اتصال "المراسلة عبر السحابة الإلكترونية من Firebase"

webpush

object (WebpushConfig)

الإدخال فقط. خيارات بروتوكول Webpush.

apns

object (ApnsConfig)

الإدخال فقط. خدمة الإشعارات الفورية في Apple.

fcm_options

object (FcmOptions)

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

حقل الاتحاد target. مطلوب. الإدخال فقط. الهدف لإرسال رسالة إليه. يمكن أن يكون target واحدًا فقط مما يلي:
token

string

الرمز المميز للتسجيل المطلوب إرسال رسالة إليه.

topic

string

اسم الموضوع المطلوب إرسال رسالة إليه، مثلاً "الطقس". ملاحظة: "/topics/" بادئة واحدة فقط.

condition

string

الشرط المطلوب لإرسال رسالة إليه، مثلاً: "foo" في المواضيع && "bar" في المواضيع".

الإشعار

نموذج إشعار أساسي لاستخدامه على جميع الأنظمة الأساسية

تمثيل JSON
{
  "title": string,
  "body": string,
  "image": string
}
الحقول
title

string

عنوان الإشعار.

body

string

النص الأساسي للإشعار.

image

string

يحتوي على عنوان URL للصورة التي سيتم تنزيلها على الجهاز وعرضها في إشعار. ويمكن استخدام ملفات JPEG وPNG وBMP بشكل كامل على مختلف الأنظمة الأساسية. لا تعمل صور GIF والفيديوهات المتحركة إلا على نظام التشغيل iOS. وWebP وHEIF لديهم مستويات متفاوتة من الدعم عبر الأنظمة الأساسية وإصدارات الأنظمة الأساسية. الحد الأقصى لحجم الصورة في نظام التشغيل Android هو 1 ميغابايت. استخدام الحصة وتأثيرات/تكاليف استضافة الصور على "مساحة تخزين Firebase" على النحو التالي: https://firebase.google.com/pricing

إعدادات Android

الخيارات الخاصة بنظام التشغيل Android للرسائل المُرسَلة من خلال خادم اتصال "المراسلة عبر السحابة الإلكترونية من Firebase"

تمثيل JSON
{
  "collapse_key": string,
  "priority": enum (AndroidMessagePriority),
  "ttl": string,
  "restricted_package_name": string,
  "data": {
    string: string,
    ...
  },
  "notification": {
    object (AndroidNotification)
  },
  "fcm_options": {
    object (AndroidFcmOptions)
  },
  "direct_boot_ok": boolean
}
الحقول
collapse_key

string

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

priority

enum (AndroidMessagePriority)

أولوية الرسالة. يمكن أن تكون الإعدادات "عادية" و"مرتفع" القيم. للمزيد من المعلومات، يمكنك الاطّلاع على ضبط أولوية رسالة.

ttl

string (Duration format)

المدة (بالثواني) التي يجب الاحتفاظ خلالها بالرسالة في مساحة تخزين FCM إذا كان الجهاز غير متصل بالإنترنت. الحد الأقصى لوقت توفّر الدعم هو 4 أسابيع، والقيمة التلقائية هي 4 أسابيع في حال عدم ضبط القيمة. اضبط القيمة على 0 إذا كنت تريد إرسال الرسالة فورًا. بتنسيق JSON، يتم ترميز نوع المدة كسلسلة بدلاً من كائن، حيث تنتهي السلسلة باللاحقة "s". (إشارة إلى الثواني) ويسبقها عدد الثواني، مع التعبير عن الثانية بالنانو ثانية في شكل ثوانٍ كسرية. على سبيل المثال، يجب ترميز 3 ثوانٍ و0 نانو ثانية بتنسيق JSON كـ "3s"، بينما يجب التعبير عن 3 ثوانٍ و1 نانو ثانية بتنسيق JSON على النحو التالي "3.000000001s". وسيتم تقريب ttl إلى أقرب ثانية.

مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام "s" مثال: "3.5s"

restricted_package_name

string

اسم حزمة التطبيق التي يجب أن يتطابق فيها الرمز المميّز للتسجيل من أجل تلقّي الرسالة.

data

map (key: string, value: string)

حمولة المفتاح/القيمة العشوائية وفي حال توفّره، سيتم إلغاء google.firebase.fcm.v1.Message.data.

عنصر يحتوي على قائمة بأزواج "key": value مثال: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object (AndroidNotification)

إشعار لإرساله إلى أجهزة Android.

fcm_options

object (AndroidFcmOptions)

خيارات الميزات التي توفّرها حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لنظام التشغيل Android

direct_boot_ok

boolean

في حال ضبط السياسة على "صحيح"، سيتم السماح بتسليم الرسائل إلى التطبيق عندما يكون الجهاز في وضع التشغيل المباشر. يُرجى الاطِّلاع على دعم وضع التشغيل المباشر.

أولوية رسائل Android

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

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

إشعار Android

إشعار لإرساله إلى أجهزة Android.

تمثيل JSON
{
  "title": string,
  "body": string,
  "icon": string,
  "color": string,
  "sound": string,
  "tag": string,
  "click_action": string,
  "body_loc_key": string,
  "body_loc_args": [
    string
  ],
  "title_loc_key": string,
  "title_loc_args": [
    string
  ],
  "channel_id": string,
  "ticker": string,
  "sticky": boolean,
  "event_time": string,
  "local_only": boolean,
  "notification_priority": enum (NotificationPriority),
  "default_sound": boolean,
  "default_vibrate_timings": boolean,
  "default_light_settings": boolean,
  "vibrate_timings": [
    string
  ],
  "visibility": enum (Visibility),
  "notification_count": integer,
  "light_settings": {
    object (LightSettings)
  },
  "image": string,
  "bypass_proxy_notification": boolean,
  "proxy": enum (Proxy)
}
الحقول
title

string

عنوان الإشعار. وفي حال توفّره، سيتم إلغاء google.firebase.fcm.v1.Notification.title.

body

string

النص الأساسي للإشعار. وفي حال توفّره، سيتم إلغاء google.firebase.fcm.v1.Notification.body.

icon

string

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

color

string

لون رمز الإشعار، يتم التعبير عنه بتنسيق #rrggbb.

sound

string

الصوت الذي سيتم تشغيله عندما يتلقّى الجهاز الإشعار. يتوافق مع "الخيار التلقائي". أو اسم ملف مورد صوتي مجمّع في التطبيق يجب أن تكون الملفات الصوتية متوفّرة في الملف /res/raw/.

tag

string

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

click_action

string

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

body_loc_key

string

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

body_loc_args[]

string

قيم سلسلة متغيرة يتم استخدامها بدلاً من محددات التنسيق في body_loc_key لاستخدامها في ترجمة النص الأساسي إلى أقلمة المستخدم الحالية راجِع التنسيق والنمط للاطّلاع على مزيد من المعلومات.

title_loc_key

string

تمثّل هذه السمة مفتاح سلسلة العنوان في موارد سلسلة التطبيق والمطلوب استخدامها لترجمة نص العنوان حسب الترجمة الحالية للمستخدم. يُرجى الاطّلاع على موارد السلسلة لمزيد من المعلومات.

title_loc_args[]

string

قيم سلسلة المتغير المطلوب استخدامها بدلاً من محددات التنسيق في title_loc_key من أجل استخدامها لترجمة نص العنوان إلى أقلمة المستخدم الحالية راجِع التنسيق والنمط للاطّلاع على مزيد من المعلومات.

channel_id

string

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

ticker

string

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

sticky

boolean

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

event_time

string (Timestamp format)

اضبط وقت وقوع الحدث في الإشعار. يتم ترتيب الإشعارات في اللوحة حسب هذا الوقت. يتمّ تمثيل نقطة زمنية باستخدام protobuf.Timestamp.

طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: "2014-10-02T15:01:23Z" و"2014-10-02T15:01:23.045123456Z".

local_only

boolean

يمكنك تحديد ما إذا كان هذا الإشعار ذا صلة بالجهاز الحالي فقط أم لا. يمكن إرسال بعض الإشعارات إلى الأجهزة الأخرى لعرضها عن بُعد، مثل ساعة Wear OS. يمكن ضبط هذا التلميح لاقتراح عدم تلقّي إشعارات بشأن هذا الإشعار. يمكنك الاطّلاع على أدلة Wear OS.

notification_priority

enum (NotificationPriority)

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

default_sound

boolean

إذا تم ضبط السياسة على "صحيح"، يمكنك استخدام الصوت التلقائي في إطار عمل Android للإشعار. يتم تحديد القيم التلقائية في config.xml.

default_vibrate_timings

boolean

إذا تم ضبطها على "صحيح"، استخدِم نمط الاهتزاز التلقائي لإطار عمل Android للإشعار. يتم تحديد القيم التلقائية في config.xml. إذا تم ضبط default_vibrate_timings على "صحيح" وتم أيضًا ضبط vibrate_timings، يتم استخدام القيمة التلقائية بدلاً من قيمة vibrate_timings التي يحدّدها المستخدم.

default_light_settings

boolean

في حال ضبطها على "صحيح"، يمكنك استخدام إعدادات مصباح LED التلقائية في إطار عمل Android لإرسال الإشعارات. يتم تحديد القيم التلقائية في config.xml. في حال ضبط default_light_settings على "صحيح" وضبط light_settings أيضًا، يتم استخدام قيمة light_settings التي يحدّدها المستخدم بدلاً من القيمة التلقائية.

vibrate_timings[]

string (Duration format)

اضبط نمط الاهتزاز لاستخدامه. مرِّر خلال مجموعة من protobuf.Duration لتفعيل الهزّاز أو إيقافه. تشير القيمة الأولى إلى أن Duration يجب الانتظار قبل تشغيل الهزّاز. وتشير القيمة التالية إلى Duration لإبقاء الهزّاز قيد التشغيل. تتناوب القيم اللاحقة بين Duration لإيقاف الهزّاز وتشغيل الهزّاز. في حال ضبط vibrate_timings وضبط default_vibrate_timings على true، يتم استخدام القيمة التلقائية بدلاً من قيمة vibrate_timings التي حدّدها المستخدم.

مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام "s" مثال: "3.5s"

visibility

enum (Visibility)

اضبط Notification.visibility للإشعار.

notification_count

integer

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

light_settings

object (LightSettings)

إعدادات للتحكّم في معدل وميض مصباح LED في الإشعار ولونه في حال توفّر مصباح LED على الجهاز يتحكم نظام التشغيل في إجمالي مدة الوميض.

image

string

يحتوي على عنوان URL للصورة التي سيتم عرضها في الإشعار. وفي حال توفّره، سيتم إلغاء google.firebase.fcm.v1.Notification.image.

bypass_proxy_notification
(deprecated)

boolean

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

proxy

enum (Proxy)

يتيح هذا الإعداد التحكّم في وقت استخدام خادم وكيل للإشعار.

أولوية الإشعار

مستويات أولوية الإشعار.

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

مستوى الرؤية

مستويات رؤية مختلفة للإشعار.

تعدادات
VISIBILITY_UNSPECIFIED وفي حال عدم تحديد قيمة هذه السمة، يتم ضبط القيمة التلقائية على Visibility.PRIVATE.
PRIVATE يمكنك عرض هذا الإشعار على جميع شاشات القفل، مع إخفاء معلومات حساسة أو خاصة على شاشات القفل الآمنة.
PUBLIC يمكنك عرض هذا الإشعار بالكامل على جميع شاشات القفل.
SECRET يُرجى عدم إظهار أي جزء من هذا الإشعار على شاشة قفل آمنة.

إعدادات الإضاءة

إعدادات التحكّم في مصباح LED للإشعار

تمثيل JSON
{
  "color": {
    object (Color)
  },
  "light_on_duration": string,
  "light_off_duration": string
}
الحقول
color

object (Color)

مطلوب. اضبط color من مصباح LED باستخدام google.type.Color.

light_on_duration

string (Duration format)

مطلوب. يمكنك تحديد معدّل الوميض لمضات LED مع light_off_duration. تم تحديد درجة الدقة من خلال proto.Duration.

مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام "s" مثال: "3.5s"

light_off_duration

string (Duration format)

مطلوب. يمكنك تحديد معدّل الوميض لمضات LED مع light_on_duration. تم تحديد درجة الدقة من خلال proto.Duration.

مدة بالثواني مكونة من تسعة أرقام كسور كحد أقصى وتنتهي بالأرقام "s" مثال: "3.5s"

اللون

يمثل لونًا في مساحة ألوان RGBA. تم تصميم هذا التمثيل لتبسيط عملية التحويل من وإلى تمثيلات الألوان بلغات مختلفة على مدى الاكتفاء. على سبيل المثال، يمكن تقديم حقول هذا التمثيل بشكل بسيط إلى الدالة الإنشائية java.awt.Color في Java؛ يمكن أيضًا تقديمه بطريقة تافهة لطريقة +colorWithRed:green:blue:alpha في UIColor على نظام iOS؛ ومن خلال القليل من العمل، يمكن تنسيقه بسهولة إلى سلسلة CSS rgba() في JavaScript.

لا تحتوي هذه الصفحة المرجعية على معلومات عن مساحة اللون المطلقة التي يجب استخدامها لتفسير قيمة النموذج اللوني أحمر أخضر أزرق، على سبيل المثال، sRGB وAdobe RGB وDCI-P3 وBT.2020. وبشكل تلقائي، يجب أن تفترض التطبيقات مساحة اللون sRGB.

عندما يلزم تحديد مساواة الألوان، تنطبق عمليات التنفيذ، ما لم يوثق خلاف ذلك، على اعتبار لونين متساويين إذا كانت جميع قيم الأحمر والأخضر والأزرق وألفا تختلف على الأكثر 1e-5.

مثال (Java):

 import com.google.type.Color;

 // ...
 public static java.awt.Color fromProto(Color protocolor) {
   float alpha = protocolor.hasAlpha()
       ? protocolor.getAlpha().getValue()
       : 1.0;

   return new java.awt.Color(
       protocolor.getRed(),
       protocolor.getGreen(),
       protocolor.getBlue(),
       alpha);
 }

 public static Color toProto(java.awt.Color color) {
   float red = (float) color.getRed();
   float green = (float) color.getGreen();
   float blue = (float) color.getBlue();
   float denominator = 255.0;
   Color.Builder resultBuilder =
       Color
           .newBuilder()
           .setRed(red / denominator)
           .setGreen(green / denominator)
           .setBlue(blue / denominator);
   int alpha = color.getAlpha();
   if (alpha != 255) {
     result.setAlpha(
         FloatValue
             .newBuilder()
             .setValue(((float) alpha) / denominator)
             .build());
   }
   return resultBuilder.build();
 }
 // ...

مثال (iOS / Obj-C):

 // ...
 static UIColor* fromProto(Color* protocolor) {
    float red = [protocolor red];
    float green = [protocolor green];
    float blue = [protocolor blue];
    FloatValue* alpha_wrapper = [protocolor alpha];
    float alpha = 1.0;
    if (alpha_wrapper != nil) {
      alpha = [alpha_wrapper value];
    }
    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
 }

 static Color* toProto(UIColor* color) {
     CGFloat red, green, blue, alpha;
     if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
       return nil;
     }
     Color* result = [[Color alloc] init];
     [result setRed:red];
     [result setGreen:green];
     [result setBlue:blue];
     if (alpha <= 0.9999) {
       [result setAlpha:floatWrapperWithValue(alpha)];
     }
     [result autorelease];
     return result;
}
// ...

مثال (JavaScript):

// ...

var protoToCssColor = function(rgb_color) {
   var redFrac = rgb_color.red || 0.0;
   var greenFrac = rgb_color.green || 0.0;
   var blueFrac = rgb_color.blue || 0.0;
   var red = Math.floor(redFrac * 255);
   var green = Math.floor(greenFrac * 255);
   var blue = Math.floor(blueFrac * 255);

   if (!('alpha' in rgb_color)) {
      return rgbToCssColor(red, green, blue);
   }

   var alphaFrac = rgb_color.alpha.value || 0.0;
   var rgbParams = [red, green, blue].join(',');
   return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};

var rgbToCssColor = function(red, green, blue) {
  var rgbNumber = new Number((red << 16) | (green << 8) | blue);
  var hexString = rgbNumber.toString(16);
  var missingZeros = 6 - hexString.length;
  var resultBuilder = ['#'];
  for (var i = 0; i < missingZeros; i++) {
     resultBuilder.push('0');
  }
  resultBuilder.push(hexString);
  return resultBuilder.join('');
};

// ...
تمثيل JSON
{
  "red": number,
  "green": number,
  "blue": number,
  "alpha": number
}
الحقول
red

number

مقدار اللون الأحمر في اللون كقيمة في الفاصل [0, 1].

green

number

مقدار اللون الأخضر في اللون كقيمة في الفاصل [0, 1].

blue

number

مقدار اللون الأزرق في اللون كقيمة في الفاصل [0, 1].

alpha

number

الجزء من هذا اللون الذي يجب تطبيقه على البكسل. أي أن لون البكسل النهائي يتم تحديده من خلال المعادلة:

pixel color = alpha * (this color) + (1.0 - alpha) * (background color)

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

الوكيل

يتيح هذا الإعداد التحكّم في وقت استخدام خادم وكيل للإشعار.

تعدادات
PROXY_UNSPECIFIED وفي حال عدم تحديد قيمة هذه السمة، يتم ضبط القيمة التلقائية على Proxy.IF_PRIORITY_LOWERED.
ALLOW جرِّب تشغيل هذا الإشعار كخادم وكيل.
DENY عدم استخدام خادم وكيل لهذا الإشعار.
IF_PRIORITY_LOWERED لا تحاول ضبط خادم وكيل لهذا الإشعار إلا إذا تم خفض AndroidMessagePriority من HIGH إلى NORMAL على الجهاز.

AndroidFcmOptions

خيارات الميزات التي توفّرها حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لنظام التشغيل Android

تمثيل JSON
{
  "analytics_label": string
}
الحقول
analytics_label

string

التصنيف المرتبط ببيانات الإحصاءات الخاصة بالرسالة

WebpushConfig

خيارات بروتوكول Webpush.

تمثيل JSON
{
  "headers": {
    string: string,
    ...
  },
  "data": {
    string: string,
    ...
  },
  "notification": {
    object
  },
  "fcm_options": {
    object (WebpushFcmOptions)
  }
}
الحقول
headers

map (key: string, value: string)

عناوين HTTP التي تم تحديدها في بروتوكول webpush. راجِع بروتوكول Webpush للاطّلاع على العناوين المتوافقة، مثل: "TTL": "15".

عنصر يحتوي على قائمة بأزواج "key": value مثال: { "name": "wrench", "mass": "1.3kg", "count": "3" }

data

map (key: string, value: string)

حمولة المفتاح/القيمة العشوائية وفي حال توفّره، سيتم إلغاء google.firebase.fcm.v1.Message.data.

عنصر يحتوي على قائمة بأزواج "key": value مثال: { "name": "wrench", "mass": "1.3kg", "count": "3" }

notification

object (Struct format)

خيارات "إشعارات الويب" ككائن JSON. يتوافق مع خصائص مثيل الإشعارات على النحو المحدّد في Web Notification API. "العنوان" في حال توفّره و"body" تلغي الحقول google.firebase.fcm.v1.Notification.title وgoogle.firebase.fcm.v1.Notification.body.

fcm_options

object (WebpushFcmOptions)

خيارات الميزات التي توفّرها "حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" للويب.

WebpushFcmOptions

خيارات الميزات التي توفّرها "حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" للويب.

تمثيل JSON
{
  "link": string,
  "analytics_label": string
}
الحقول
analytics_label

string

التصنيف المرتبط ببيانات الإحصاءات الخاصة بالرسالة

إعداد ApnsConfig

خدمة الإشعارات الفورية في Apple.

تمثيل JSON
{
  "headers": {
    string: string,
    ...
  },
  "payload": {
    object
  },
  "fcm_options": {
    object (ApnsFcmOptions)
  }
}
الحقول
headers

map (key: string, value: string)

عناوين طلبات HTTP المحددة في خدمة الإشعارات الفورية في Apple. يمكنك الرجوع إلى عناوين طلبات أسماء نقاط الوصول (APN) للاطّلاع على العناوين المتوافقة مثل apns-expiration وapns-priority.

تضبط الخلفية قيمة تلقائية في apns-expiration على 30 يومًا وقيمة تلقائية لـ apns-priority على 10 في حال عدم ضبطها بشكل صريح.

عنصر يحتوي على قائمة بأزواج "key": value مثال: { "name": "wrench", "mass": "1.3kg", "count": "3" }

payload

object (Struct format)

حمولة أسماء نقاط الوصول (APN) ككائن JSON، بما في ذلك قاموس aps والحمولة المخصّصة يُرجى الاطّلاع على مرجع مفتاح Payload. وفي حال توفّرها، يتم إلغاء google.firebase.fcm.v1.Notification.title وgoogle.firebase.fcm.v1.Notification.body.

fcm_options

object (ApnsFcmOptions)

خيارات الميزات التي توفّرها حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لنظام التشغيل iOS

ApnsFcmOptions

خيارات الميزات التي توفّرها حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لنظام التشغيل iOS

تمثيل JSON
{
  "analytics_label": string,
  "image": string
}
الحقول
analytics_label

string

التصنيف المرتبط ببيانات الإحصاءات الخاصة بالرسالة

image

string

يحتوي على عنوان URL للصورة التي سيتم عرضها في الإشعار. وفي حال توفّره، سيتم إلغاء google.firebase.fcm.v1.Notification.image.

خيارات FcmOptions

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

تمثيل JSON
{
  "analytics_label": string
}
الحقول
analytics_label

string

التصنيف المرتبط ببيانات الإحصاءات الخاصة بالرسالة

الطُرق

send

إرسال رسالة إلى هدف محدّد (رمز مميَّز للتسجيل أو موضوع أو شرط)