قوالب مراكز الإشعارات
تمكن القوالب تطبيق العميل من تحديد التنسيق الدقيق للإعلامات التي يريد تلقيها. باستخدام القوالب، يمكن للتطبيق تحقيق العديد من الفوائد المختلفة، بما في ذلك ما يلي:
- واجهة خلفية لا أدرية للمنصة
- إشعارات مخصصة
- استقلالية إصدار العميل
- سهولة التعريب
يوفر هذا القسم مثالين متعمقين حول كيفية استخدام القوالب لإرسال إشعارات لا تعرف النظام الأساسي تستهدف جميع أجهزتك عبر الأنظمة الأساسية، ولتخصيص إشعارات البث لكل جهاز.
استخدام القوالب عبر الأنظمة الأساسية
تتمثل الطريقة القياسية لإرسال إشعارات الدفع في إرسال حمولة محددة إلى خدمات إشعارات النظام الأساسي (WNS و APNS) لكل إشعار يتم إرساله. على سبيل المثال، لإرسال تنبيه إلى APNS، الحمولة هي كائن JSON من النموذج التالي:
{"aps": {"alert" : "Hello!" }}
لإرسال رسالة نخب مشابهة على تطبيق Windows Store، تكون حمولة XML كما يلي:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">Hello!</text>
</binding>
</visual>
</toast>
يمكنك إنشاء حمولات مماثلة لمنصات MPNS (Windows Phone) و FCM (Android).
يجبر هذا المطلب الواجهة الخلفية للتطبيق على إنتاج حمولات مختلفة لكل نظام أساسي ، ويجعل الواجهة الخلفية مسؤولة بشكل فعال عن جزء من طبقة العرض التقديمي للتطبيق. تتضمن بعض المخاوف الترجمة والتخطيطات الرسومية (خاصة بالنسبة لتطبيقات Windows Store التي تتضمن إعلامات لأنواع مختلفة من اللوحات).
تمكن ميزة قالب مراكز الإشعارات تطبيق العميل من إنشاء تسجيلات خاصة، تسمى تسجيلات القالب، والتي تتضمن، بالإضافة إلى مجموعة العلامات، قالبا. تمكن ميزة قالب مراكز الإشعارات تطبيق العميل من إقران الأجهزة بالقوالب سواء كنت تعمل مع عمليات التثبيت (المفضلة) أو التسجيلات. بالنظر إلى أمثلة الحمولة السابقة ، فإن المعلومات الوحيدة المستقلة عن النظام الأساسي هي رسالة التنبيه الفعلية (مرحبا!). القالب عبارة عن مجموعة من الإرشادات لمركز الإعلام حول كيفية تنسيق رسالة مستقلة عن النظام الأساسي لتسجيل تطبيق العميل المحدد هذا. في المثال السابق، تكون الرسالة المستقلة عن النظام الأساسي خاصية واحدة: message = Hello!.
ويوضح الشكل التالي العملية:

قالب تسجيل تطبيق عميل iOS هو كما يلي:
{"aps": {"alert": "$(message)"}}
القالب المقابل لتطبيق عميل متجر Windows هو:
<toast>
<visual>
<binding template=\"ToastText01\">
<text id=\"1\">$(message)</text>
</binding>
</visual>
</toast>
لاحظ أن الرسالة الفعلية يتم استبدالها بالتعبير $(message). يرشد هذا التعبير مركز الإعلام، كلما أرسل رسالة إلى هذا التسجيل المحدد، لإنشاء رسالة تتبعه وتدرج القيمة المشتركة.
إذا كنت تعمل مع نموذج التثبيت ، فإن مفتاح "قوالب" التثبيت يحمل JSON من قوالب متعددة. إذا كنت تعمل مع نموذج التسجيل ، فيمكن لتطبيق العميل إنشاء تسجيلات متعددة من أجل استخدام قوالب متعددة ؛ على سبيل المثال، قالب لرسائل التنبيه وقالب لتحديثات اللوحة. يمكن لتطبيقات العميل أيضا مزج التسجيلات الأصلية (التسجيلات بدون قالب) وتسجيلات القوالب.
يرسل مركز الإعلام إشعارا واحدا لكل قالب دون النظر فيما إذا كان ينتمي إلى تطبيق العميل نفسه أم لا. يمكن استخدام هذا السلوك لترجمة الإعلامات المستقلة عن النظام الأساسي إلى المزيد من الإشعارات. على سبيل المثال، يمكن ترجمة نفس الرسالة المستقلة عن النظام الأساسي إلى مركز الإعلام بسلاسة في تنبيه منبثق وتحديث تجانب، دون الحاجة إلى أن تكون الواجهة الخلفية على دراية بها. قد تقوم بعض الأنظمة الأساسية (على سبيل المثال، iOS) بطي إشعارات متعددة إلى نفس الجهاز إذا تم إرسالها خلال فترة زمنية قصيرة.
استخدام القوالب للتخصيص
ميزة أخرى لاستخدام القوالب هي القدرة على استخدام مراكز الإشعارات لإجراء تخصيص الإشعارات لكل تسجيل. على سبيل المثال، ضع في اعتبارك تطبيق الطقس الذي يعرض لوحة مع الظروف الجوية في موقع معين. يمكن للمستخدم الاختيار بين درجة مئوية أو فهرنهايت ، وتوقعات لمدة يوم واحد أو خمسة أيام. باستخدام القوالب، يمكن لكل تثبيت تطبيق عميل التسجيل للحصول على التنسيق المطلوب (1 يوم مئوية، 1 يوم فهرنهايت، 5 أيام مئوية، 5 أيام فهرنهايت)، وجعل الواجهة الخلفية ترسل رسالة واحدة تحتوي على جميع المعلومات المطلوبة لملء هذه القوالب (على سبيل المثال، توقعات لمدة خمسة أيام مع درجات مئوية وفهرنهايت).
قالب توقعات يوم واحد مع درجات الحرارة المئوية هو كما يلي:
<tile>
<visual>
<binding template="TileWideSmallImageAndText04">
<image id="1" src="$(day1_image)" alt="alt text"/>
<text id="1">Seattle, WA</text>
<text id="2">$(day1_tempC)</text>
</binding>
</visual>
</tile>
تحتوي الرسالة المرسلة إلى مركز الإعلام على كافة الخصائص التالية:
| day1_image | day2_image | day3_image | day4_image | day5_image |
|---|---|---|---|---|
| day1_tempC | day2_tempC | day3_tempC | day4_tempC | day5_tempC |
| day1_tempF | day2_tempF | day3_tempF | day4_tempF | day5_tempF |
باستخدام هذا النمط ، ترسل الواجهة الخلفية رسالة واحدة فقط دون الحاجة إلى تخزين خيارات تخصيص محددة لمستخدمي التطبيق. يوضح الشكل التالي هذا السيناريو:

كيفية تسجيل القوالب
للتسجيل باستخدام القوالب باستخدام نموذج التثبيت (المفضل)، أو نموذج التسجيل، راجع إدارة التسجيل.
لغة تعبير القالب
تقتصر القوالب على تنسيقات مستندات XML أو JSON. أيضا ، يمكنك فقط وضع التعبيرات في أماكن محددة ؛ على سبيل المثال، سمات العقدة أو قيم XML، قيم خصائص السلسلة ل JSON.
يوضح الجدول التالي اللغة المسموح بها في القوالب:
| Expression | الوصف |
|---|---|
| $(دعامة) | الإشارة إلى خاصية حدث بالاسم المحدد. أسماء الخصائص ليست حساسة لحالة الأحرف. يتم حل هذا التعبير في القيمة النصية للخاصية أو في سلسلة فارغة إذا لم تكن الخاصية موجودة. |
| $(الدعامة، ن) | كما هو موضح أعلاه ، ولكن يتم قص النص صراحة عند n الأحرف ، على سبيل المثال $ (العنوان ، 20) يقص محتويات خاصية العنوان في 20 حرفا. |
| . (الدعامة ، ن) | كما هو موضح أعلاه ، ولكن النص لاحق بثلاث نقاط أثناء قصه. لا يتجاوز الحجم الإجمالي للسلسلة المقطوعة واللاحقة الأحرف n. (العنوان ، 20) مع خاصية الإدخال "هذا هو سطر العنوان" ينتج عنه هذا هو العنوان ... |
| ٪ (الدعامة) | على غرار $ (الاسم) باستثناء أن الإخراج مشفر ب URI. |
| #(دعامة) | تستخدم في قوالب JSON (على سبيل المثال، لقوالب iOS وAndroid). تعمل هذه الوظيفة تماما مثل "$ (prop)" المحددة مسبقا ، باستثناء عند استخدامها في قوالب JSON (على سبيل المثال ، قوالب Apple). في هذه الحالة ، إذا لم تكن هذه الوظيفة محاطة ب "{','}" (على سبيل المثال ، 'myJsonProperty' : '#(name)') ، ويتم تقييمها إلى رقم بتنسيق جافا سكريبت ، على سبيل المثال ، regexp: (0|( [1-9] [0-9]*))(.[ 0-9]+)? (ه| ه)(+|-)؟ [0-9]+)؟، ثم الإخراج JSON هو رقم. على سبيل المثال، تصبح "الشارة: '#(الاسم)" 'شارة': 40 (وليس '40'). |
| "نص" أو "نص" | حرفيا. تحتوي الحروف الحرفية على نص تعسفي محاط بعلامات اقتباس مفردة أو مزدوجة. |
| expr1 + expr2 | يقوم عامل التشغيل تسلسلي بضم تعبيرين في سلسلة واحدة. |
يمكن أن تكون التعبيرات أي من الأشكال السابقة.
عند استخدام التسلسل ، يجب أن يكون التعبير بأكمله محاطا ب {}. على سبيل المثال، {$(prop) + ‘ - ’ + $(prop2)}.
على سبيل المثال، القالب التالي ليس قالب XML صالح:
<tile>
<visual>
<binding $(property)>
<text id="1">Seattle, WA</text>
</binding>
</visual>
</tile>
كما هو موضح سابقا ، عند استخدام التسلسل ، يجب لف التعبيرات بين قوسين مجعدين. على سبيل المثال:
<tile>
<visual>
<binding template="ToastText01">
<text id="1">{'Hi, ' + $(name)}</text>
</binding>
</visual>
</tile>