البرنامج التعليمي: أرسل إشعارات الدفع إلى تطبيقات Xamarin.iOS باستخدام Azure Notification Hubs

نظرة عامة

يوضح لك هذا البرنامج التعليمي كيفية استخدام Azure Notification Hubs لإرسال إشعارات الدفع إلى تطبيق iOS. يمكنك إنشاء تطبيق Xamarin.iOS فارغ يتلقى إشعارات الدفع باستخدام خدمة Apple Push Notification (APNs) .

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

في هذا البرنامج التعليمي، تقوم بإنشاء/تحديث التعليمات البرمجية للقيام بالمهام التالية:

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

المتطلبات الأساسية

  • اشتراك Azure. إذا لم تكن مشتركًا في Azure، فيمكنك إنشاء حساب مجاني على Azure قبل البدء.

  • أحدث إصدار من Xcode

  • جهاز متوافق مع iOS 10 (أو إصدار أحدث)

  • عضوية برنامج مطوري Apple.

  • Visual Studio for Mac

    إشعار

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

يُعَدّ إكمال هذا البرنامج التعليمي شرطًا أساسيًّا لجميع البرامج التعليمية الأخرى لـ Notification Hubs لتطبيقات Xamarin.iOS.

إنشاء ملف طلب توقيع الشهادة

تستخدم خدمة Apple Push Notification (APNs) شهادات لمصادقة إعلامات الدفع. اتبع هذه الإرشادات لإنشاء شهادة الدفع الضرورية لإرسال الإشعارات وتلقيها. للحصول على مزيدٍ من المعلومات عن هذه المفاهيم، راجع وثائق خدمة Apple Push Notification الرسمية.

إنشاء ملف طلب توقيع الشهادة (CSR) الذي يستخدمه Apple لإنشاء شهادة دفع موقعة.

  1. على جهاز Mac، قم بتشغيل أداة الوصول إلى سلسلة المفاتيح. يمكن فتحه من مجلد الأدوات المساعدة أو المجلد الآخر على لوحة التشغيل.

  2. حدد الوصول إلى سلسلة المفاتيح، ثم قم بتوسيع مساعد الشهادة، ثم حدد طلب شهادة من مرجع مصدق.

    Use Keychain Access to request a new certificate

    إشعار

    بشكل افتراضي، يحدد Keychain Access العنصر الأول في القائمة. قد تكون هذه مشكلة إذا كنت في فئة الشهادات ولم تكن هيئة إصدار شهادات علاقات المطور في Apple Worldwide العنصر الأول في القائمة. تأكد من وجود عنصر غير مفتاح أو تحديد مفتاح "المرجع المصدق لعلاقات المطور" في Apple Worldwide قبل إنشاء طلب توقيع الشهادة (CSR).

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

    Required certificate information

  4. أدخل اسمًا لملف CSR في حفظ باسم، وحدد الموقع في مكان، ثم حدد حفظ.

    Choose a file name for the certificate

    يحفظ هذا الإجراء ملف CSR في الموقع المحدد. الموقع الافتراضي هو سطح المكتب. تذكر الموقع الذي تم اختياره للملف.

بعد ذلك، سجل تطبيقك مع Apple، ومكن الإشعارات الفورية، وحمّل ملف CSR المصدر لإنشاء شهادة دفع.

سجّل التطبيق للحصول على إشعارات الدفع

لإرسال إشعارات الدفع إلى تطبيق iOS، سجل طلبك مع Apple، وسجل أيضًا للحصول على الإشعارات الفورية.

  1. إذا لم تكن قد سجلت تطبيقك بالفعل، فاستعرض مدخل توفير iOS في مركز مطوري Apple. سجّل الدخول إلى المدخل باستخدام Apple ID، وحدد المعرفات. ثم حدد + لتسجيل تطبيق جديد.

    iOS Provisioning Portal App IDs page

  2. في شاشة تسجيل معرف جديد، حدد زر الاختيار معرفات التطبيق. بعد ذلك، حدد متابعة.

    iOS Provisioning Portal register new ID page

  3. حدِّث القيم الثلاث التالية لتطبيقك الجديد، ثم حدد متابعة:

    • الوصف:اكتب اسمًا وصفيًا لتطبيقك.

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

      iOS Provisioning Portal register app ID page

    • دفع الإخطارات: حدد خيار Push Notifications في قسم القدرات.

      Form to register a new App ID

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

      Confirm new App ID

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

  4. في صفحة الشهادات والمعرفات وملفات التعريف، ضمن المعرفات،حدد موقع عنصر سطر معرف التطبيق الذي قمت بإنشائه للتو، وحدد صفه لعرض شاشة تحرير تكوين معرف التطبيق.

إنشاء شهادة لمراكز الإعلام

يلزم توافر شهادة لتمكين مركز الإعلام للعمل مع APNS. يمكن إجراء ذلك بإحدى طريقتين:

  1. إنشاء .p12 التي يمكن تحميلها مباشرة إلى مركز الإعلامات.
  2. إنشاء .p8 التي يمكن استخدامها للمصادقة المستندة إلى الرمز المميز (الأسلوب الأحدث).

يحتوي النهج الأحدث على عدد من الفوائد (مقارنة باستخدام الشهادات) كما هو موثق في مصادقة (HTTP/2) المستندة إلى الرمز المميز ل APNS. بيد أنه تم اتخاذ خطوات لكلا النهجين.

الخيار 1: إنشاء شهادة دفع .p12 يمكن تحميلها مباشرة إلى مركز الإعلام

  1. مرر لأسفل إلى خيار Push Notifications المحدد، ثم حدد تكوين لإنشاء الشهادة.

    Edit App ID page

  2. تعرض نافذة شهادات SSL لخدمة Apple Push Notification. حدد الزر Create Certificate ضمن قسم Development SSL Certificate.

    Create certificate for App ID button

    يتم عرض شاشة إنشاء شهادة جديدة.

    إشعار

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

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

  4. بعد إنشاء المدخل للشهادة، حدد زر تنزيل. احفظ الشهادة، وتذكر الموقع الذي تم حفظها فيه.

    Generated certificate download page

    يتم تنزيل الشهادة وحفظها على الكمبيوتر في مجلد التنزيلات .

    Locate certificate file in the Downloads folder

    إشعار

    بشكل افتراضي، يتم تسمية شهادة التطوير التي تم تنزيلها aps_development.cer.

  5. انقر نقرا مزدوجا فوق aps_development.cer شهادة الدفع التي تم تنزيلها. يثبِّت هذا الإجراء الشهادة الجديدة في سلسلة المفاتيح، على النحو الموضح في الصورة التالية:

    Keychain access certificates list showing new certificate

    إشعار

    رغم أن الاسم في الشهادة قد يكون مختلفًا، إلا أنه سيتم تثبيت الاسم مسبقًا مع خدمات دفع iOS من Apple Development.

  6. في Keychain Access، انقر بزر الماوس الأيمن فوق شهادة الدفع الجديدة التي قمت بإنشائها في الفئة شهادات. حدد تصدير واسم الملف وحدد تنسيق .p12، ثم حدد حفظ.

    Export certificate as p12 format

    يمكنك اختيار حماية الشهادة بكلمة مرور؛ ولكن هذا اختياري. انقر فوق موافق إذا كنت تريد تجاوز إنشاء كلمة المرور. دون ملاحظة عن اسم الملف وموقع الشهادة .p12 المصدرة. يتم استخدامها لتمكين المصادقة مع APNs.

    إشعار

    قد يختلف اسم الملف وموقع .p12 عما هو مصور في هذا البرنامج التعليمي.

الخيار 2: إنشاء شهادة .p8 التي يمكن استخدامها للمصادقة المستندة إلى الرمز المميز

  1. دون التفاصيل التالية:

    • بادئة معرف التطبيق (هذا هو معرف الفريق)
    • معرف الحزمة
  2. مرة أخرى في الشهادات والمعرفات وملفات التعريف، انقر فوق المفاتيح.

    إشعار

    إذا كان لديك مفتاح مكون لـ APNS،يمكنك إعادة استخدام شهادة .p8 التي قمت بتنزيلها مباشرةً بعد إنشائها. إذا كان الأمر كذلك، يمكنك تجاهل الخطوات من 3 إلى 5.

  3. انقر فوق زر + (أو زر إنشاء مفتاح) لإنشاء مفتاح جديد.

  4. قم بتوفير قيمة اسم مفتاح مناسبة، ثم تحقق من خيار خدمة Apple Push Notifications (APNs)، ثم انقر فوق متابعة، متبوعا بالتسجيلعلى الشاشة التالية.

  5. انقر فوق تنزيل ثم انقل ملف .p8 (مسبوقا AuthKey_) إلى دليل محلي آمن، ثم انقر فوق تم.

    إشعار

    تأكد من الاحتفاظ بملف .p8 في مكان آمن (وحفظ نسخة احتياطية). بعد تنزيل المفتاح الخاص بك، لا يمكن إعادة تنزيله عند إزالة نسخة الخادم.

  6. على المفاتيح، انقر فوق المفتاح الذي قمت بإنشائه للتو (أو مفتاح موجود إذا اخترت استخدام ذلك بدلاً من ذلك).

  7. دَوّن قيمة معرف المفتاح.

  8. افتح شهادة .p8 في تطبيق مناسب من اختيارك مثل Visual Studio Code ثم دون قيمة المفتاح. هذه هي القيمة بين -----BEGIN PRIVATE KEY----- و-----END PRIVATE KEY-----.

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    إشعار

    هذه هي قيمة الرمز المميز التي سيتم استخدامها لاحقا لتكوين Notification Hub.

في نهاية هذه الخطوات، يجب أن يكون لديك المعلومات التالية لاستخدامها لاحقا في تكوين مركز الإعلامات الخاص بك مع معلومات APNs:

  • معرف الفريق (راجع الخطوة 1)
  • معرف الحزمة (راجع الخطوة 1)
  • معرف المفتاح (راجع الخطوة 7)
  • قيمة الرمز المميز أي قيمة مفتاح .p8 (راجع الخطوة 8)

إنشاء ملف تعريف توفير للتطبيق

  1. راجع مدخل توفير iOS، وحدد الشهادات والمعرفات وملفات التعريف، ثم وحدد ملفات التعريف من القائمة اليمنى، ثم حدد + لإنشاء ملف تعريف جديد. تظهر شاشة تسجيل ملف تعريف توفير جديد.

  2. حدد تطوير تطبيقات iOS ضمن التطوير كنوع ملف تعريف التوفير، ثم حدد متابعة.

    Provisioning profile list

  3. بعد ذلك، حدد معرف التطبيق الذي أنشأته من القائمة المنسدلة معرف التطبيق، وحدد متابعة.

    Select the App ID

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

    1. إذا رأيت لا توجد شهادات متوفرة، حدد إنشاء شهادة.
    2. في قسم البرامج، حدد تطوير Apple. بعد ذلك، حدد متابعة.
    3. في شاشة إنشاء شهادة جديدة، حدد اختر ملفا.
    4. استعرض للوصول إلى شهادة طلب توقيع الشهادة التي قمت بإنشائها سابقًا، وحددها، ثم حدد فتح.
    5. حدد متابعة.
    6. قم بتنزيل شهادة التطوير، وتذكر الموقع الذي تم حفظها فيه.
  5. ارجع إلى صفحة الشهادات والمعرفات وملفات التعريف، وحدد ملفات التعريف من القائمة اليسرى، ثم حدد + لإنشاء ملف تعريف جديد. تظهر شاشة تسجيل ملف تعريف توفير جديد.

  6. في نافذة تحديد الشهادات، حدد شهادة التطوير التي أنشأتها. بعد ذلك، حدد متابعة.

  7. بعد ذلك، حدد الأجهزة التي تريد استخدامها للاختبار، وحدد متابعة.

  8. وأخيرا، اختر اسما لملف التعريف في Provisioning Profile Name، وحدد Generate.

    Choose a provisioning profile name

  9. عند إنشاء ملف تعريف التوفير الجديد، حدد تنزيل. تذكر الموقع الذي تم حفظه فيه.

  10. استعرض للوصول إلى موقع ملف تعريف التوفير، ثم انقر نقرًا مزدوجًا فوقه لتثبيته على جهاز تطوير Xcode.

إنشاء مركز إعلامات

في هذا القسم ، يمكنك إنشاء مركز إعلام، وتكوين المصادقة مع APNs باستخدام إما شهادة الدفع .p12 أو المصادقة القائمة على الرمز المميز. إذا كنت ترغب في استخدام مركز إعلام قمت بإنشائه بالفعل، يمكنك تخطي الخطوة 5.

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. حدد كل الخدمات في القائمة اليسرى. A screenshot showing select All Services for an existing namespace.

  3. اكتب Notification Hubs في مربع النص Filter services . حدد رمز النجمة بجوار اسم الخدمة لإضافة الخدمة إلى قسم FAVORITES في القائمة اليمنى. حدد مراكز الإعلامات.

    A screenshot showing how to filter for notification hubs.

  4. في صفحة مراكز الإعلام حدد إنشاء على شريط الأدوات.

    A screenshot showing how to create a new notification hub.

  5. في علامة التبويب أساسيات في صفحة مركز الإعلام، بادر باتخاذ الخطوات التالية:

    1. في الاشتراك، حدد اسم اشتراك Azure الذي تريد استخدامه، ثم حدد مجموعة موارد موجودة، أو أنشئ واحداً جديداً.

    2. أدخل اسماً فريداً لمساحة الاسم الجديدة في تفاصيل مساحة الاسم.

    3. تحتوي مساحة الاسم على مركز إعلام واحد أو أكثر، لذا اكتب اسم المركز في تفاصيل مركز الإعلام.

    4. حدد قيمة من القائمة المنسدلة الموقع. تحدد هذه القيمة الموقع الذي تريد إنشاء المحور فيه.

      Screenshot showing notification hub details.

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

    6. اختر خيار التعافي من الكوارث: لا شيء أو منطقة استرداد مقترنة أو منطقة استرداد مرنة. إذا اخترت منطقة الاسترداد المقترنة، يتم عرض منطقة تجاوز الفشل. إذا حددت منطقة استرداد مرنة، فاستخدم القائمة المنسدلة للاختيار من قائمة مناطق الاسترداد.

      Screenshot showing availability zone details.

    7. حدد إنشاء.

  6. عند اكتمال النشر، حدد Go to resource.

تكوين مركز الإعلامات بمعلومات APNs

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

إشعار

إذا قمت بإنشاء تطبيقك باستخدام App Store أو ملف تعريف التوزيع المخصص، فاستخدم Production for Application Mode. سيسمح هذا لجهازك بإرسال إشعارات دفع للمستخدمين الذين اشتروا تطبيقك من المتجر.

الخيار 1: استخدام شهادة دفع.p12

  1. حدد شهادة.

  2. حدد أيقونة الملف.

  3. حدد الملف .p12 الذي قمت بتصديره سابقا، ثم حدد فتح.

  4. إذا لزم الأمر، حدد كلمة المرور الصحيحة.

  5. حدد وضع Sandbox.

    Configure APNs certification in Azure portal

  6. حدد حفظ.

الخيار 2: استخدام المصادقة المستندة إلى الرمز المميز

  1. حدد الرمز المميز.

  2. أدخل القيم التالية التي حصلت عليها سابقًا:

    • معرف المفتاح
    • معرف الحزمة
    • معرّف الفريق
    • الرمز المميز
  3. اختر بيئة الاختيار

  4. حدد حفظ.

لقد قمت الآن بتكوين مركز الإعلامات باستخدام APNs. لديك أيضًا سلاسل الاتصال لتسجيل التطبيق الخاص بك، وإرسال إشعارات الدفع.

توصيل تطبيقك بمركز الإشعارات

إنشاء مشروع جديد

  1. في Visual Studio، قم بإنشاء مشروع iOS جديد وحدد قالب تطبيق العرض الفردي، وانقر فوق التالي

    Visual Studio - Select Application Type

  2. أدخل اسم التطبيق ومعرف المؤسسة، ثم انقر فوق التالي، ثم إنشاء

  3. من طريقة عرض الحل، انقر نقرا مزدوجا فوق Info.plist وضمن Identity تأكد من تطابق معرف الحزمة مع المعرف المستخدم عند إنشاء ملف تعريف التوفير الخاص بك. ضمن توقيع تأكد من تحديد حساب المطور الخاص بك ضمن الفريق، يتم تحديد "إدارة التوقيع تلقائيا" وتحديد شهادة التوقيع وملف تعريف التوفير تلقائيا.

    Visual Studio- iOS App Config

  4. من طريقة عرض الحل، انقر نقرا مزدوجا Entitlements.plist فوق وتأكد من تحديد تمكين الإعلامات المنبثقة .

    Visual Studio- iOS Entitlements Config

  5. أضف حزمة Azure Messaging. في طريقة عرض الحل، انقر بزر الماوس الأيمن فوق المشروع وحدد إضافة إضافة>حزم NuGet. ابحث عن Xamarin.Azure.NotificationHubs.iOS وأضف الحزمة إلى مشروعك.

  6. أضف ملفا جديدا إلى الفئة الخاصة بك، وقم بتسمياته Constants.cs وأضف المتغيرات التالية واستبدل العناصر النائبة الحرفية للسلسلة ب hubname و DefaultListenSharedAccessSignature المذكور سابقا.

    // Azure app-specific connection string and hub path
    public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>";
    public const string NotificationHubName = "<Azure Notification Hub Name>";
    
  7. في AppDelegate.cs، أضف العبارة التالية باستخدام:

    using WindowsAzure.Messaging.NotificationHubs;
    using UserNotifications
    
  8. إنشاء تنفيذ في MSNotificationHubDelegateAppDelegate.cs:

    public class AzureNotificationHubListener : MSNotificationHubDelegate
    {
        public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
        {
    
        }
    }
    
  9. في AppDelegate.cs، قم بتحديث FinishedLaunching() لمطابقة التعليمات البرمجية التالية:

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        // Set the Message listener
        MSNotificationHub.SetDelegate(new AzureNotificationHubListener());
    
        // Start the SDK
        MSNotificationHub.Start(ListenConnectionString, NotificationHubName);
    
        return true;
    }
    
  10. في AppDelegate.cs، قم بتنفيذ DidReceivePushNotification الأسلوب للفئة AzureNotificationHubListener :

    public override void DidReceivePushNotification(MSNotificationHub notificationHub, MSNotificationHubMessage message)
    {
        // This sample assumes { aps: { alert: { title: "Hello", body: "World" } } }
        var alertTitle = message.Title ?? "Notification";
        var alertBody = message.Body;
    
        var myAlert = UIAlertController.Create(alertTitle, alertBody, UIAlertControllerStyle.Alert);
        myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
        UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null);
    }
    
  11. قم بتشغيل التطبيق على جهازك.

إرسال إشعارات الاختبار المؤقتة

يمكنك اختبار تلقي الإشعارات في التطبيق باستخدام خيار إرسال اختبار في مدخل Azure. يرسل إعلام الاختبار المؤقت إلى جهازك.

Azure portal - Test Send

عادة ما يتم إرسال الإشعارات المنبثقة في خدمة back-end مثل Mobile Apps لـ ASP.NET باستخدام compatible library. إذا لم تكن المكتبة متاحة للواجهة الخلفية الخاصة بك، فيمكنك أيضًا استخدام واجهة برمجة تطبيقات REST مباشرةً لإرسال رسائل التنبيه.

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

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