قوالب مراكز الإعلام

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

  • خلفية حيادية للنظام أساسي
  • إخطارات شخصية
  • استقلالية إصدار العميل
  • ترجمة سهلة

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

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

تتمثل الطريقة القياسية لإرسال إشعارات الدفع في إرسال حمولة محددة إلى خدمات إعلام النظام الأساسي (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 التي تتضمن إشعارات لأنواع مختلفة من المربعات).

تمكّن ميزة قالب Notification Hubs (مراكز الإعلام) تطبيق العميل من إنشاء تسجيلات خاصة، تسمى تسجيلات القوالب، والتي تتضمن، بالإضافة إلى مجموعة العلامات، قالباً. تمكّن ميزة قالب Notification Hubs تطبيق العميل من ربط الأجهزة بالقوالب سواء كنت تعمل مع عمليات التثبيت (المفضلة) أو التسجيلات. بالنظر إلى أمثلة الحمولة السابقة، فإن المعلومات الوحيدة المستقلة عن النظام الأساسي هي رسالة التنبيه الفعلية (مرحباً!). القالب عبارة عن مجموعة من الإرشادات الخاصة بمركز الإشعارات بشأن كيفية تنسيق رسالة مستقلة عن النظام الأساسي لتسجيل تطبيق العميل المحدد هذا. في المثال السابق، الرسالة المستقلة عن النظام الأساسي هي خاصية واحدة: message = Hello!.

يوضح الشكل التالي العملية:

رسم تخطيطي يوضح عملية استخدام القوالب عبر الأنظمة الأساسية

يكون قالب تسجيل تطبيق عميل iOS كما يلي:

{"aps": {"alert": "$(message)"}}

القالب المقابل لتطبيق عميل مخزن Windows هو:

<toast>
    <visual>
        <binding template=\"ToastText01\">
            <text id=\"1\">$(message)</text>
        </binding>
    </visual>
</toast>

لاحظ أنه تم استبدال الرسالة الفعلية بالتعبير $(message). يوجه هذا التعبير مركز الإشعارات، عندما يرسل رسالة إلى هذا التسجيل المحدد، لإنشاء رسالة تتبعها وتدرج القيمة المشتركة.

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

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

استخدام القوالب للتخصيص

ميزة أخرى لاستخدام القوالب هي القدرة على استخدام Notification Hubs (مراكز الإشعارات) لإجراء تخصيص الإخطارات لكل تسجيل. على سبيل المثال، ضع في اعتبارك تطبيق طقس يعرض لوحة بها أحوال الطقس في موقع معين. يمكن للمستخدم الاختيار بين درجة مئوية أو فهرنهايت، وتوقعات جوية لمدة خمسة أيام. باستخدام القوالب، يمكن لكل تثبيت لتطبيق العميل التسجيل بالتنسيق المطلوب (الدرجة المئوية لـ 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 الوصف
$ (دعم) إشارة إلى خاصية حدث بالاسم المحدد. أسماء الخصائص ليست حساسة لحالة الأحرف. يتحول هذا التعبير إلى قيمة نصية للخاصية أو في سلسلة فارغة إذا كانت الخاصية غير موجودة.
$(prop, n) كما هو مذكور أعلاه، ولكن يتم قص النص صراحةً عند n حرفاً، على سبيل المثال $ (title، 20) يقطع محتويات خاصية العنوان عند 20 حرفاً.
.(prop, n) كما هو مذكور أعلاه، لكن النص مُلحق بثلاث نقاط أثناء قصه. لا يتجاوز الحجم الإجمالي للسلسلة المقتطعة واللاحقة عدد n حرفاً. (العنوان، 20) بخاصية الإدخال "This is the title line" ينتج عنه This is the title...
%(prop) مشابه لـ $ (name) فيما عدا أن الإخراج مشفر بـ URI.
#(prop) تُستخدم في قوالب JSON (على سبيل المثال، لقوالب iOS وAndroid).

تعمل هذه الوظيفة تماماً مثل "$ (prop)" المحدد سابقاً، إلا عند استخدامها في قوالب JSON (على سبيل المثال، قوالب Apple). في هذه الحالة، إذا لم تكن هذه الوظيفة محاطة بـ "{'،'}" (على سبيل المثال، 'myJsonProperty': '# (name)')، ويتم تقييمها لرقم بتنسيق JavaScript، على سبيل المثال، regexp: (0|([1-9][0-9]*))(.[0-9]+)?((e|E)(+|-)?[0-9]+)?، فحينئذٍ سيكون ناتج JSON هو رقم.

على سبيل المثال، 'badge: '#(name)' becomes 'badge' : 40 (and not '40').
"text" أو "text" حرفي. تحتوي العناصر الحرفية على نص عشوائي محاط بعلامات اقتباس مفردة أو مزدوجة.
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>

الخطوات التالية

تعرف على Azure Notification Hubs