مشاركة عبر


تمكين الإعلامات المؤقتة في تطبيق الدردشة

توضح هذه المقالة كيفية إنشاء إشعارات دفع في تطبيق iOS باستخدام Azure Communication Services Chat SDK.

تنبه الإعلامات مستخدمي الرسائل الواردة في مؤشر ترابط الدردشة عندما لا يكون تطبيق الأجهزة المحمولة قيد التشغيل في المقدمة. تدعم Azure Communication Services إصدارين من الإعلامات المنبثقة:

  • الإصدار الأساسي: يظهر رقم شارة على أيقونة التطبيق، ويقوم الجهاز بتشغيل صوت إعلام، ويظهر شعار تنبيه منبثق.

    لقطة شاشة للإصدار الأساسي من إعلام الدفع.

  • الإصدار المتقدم: بالإضافة إلى الميزات المدعومة في الإصدار الأساسي، يمكنك تخصيص العنوان ومعاينة الرسالة في شعار التنبيه.

    لقطة شاشة للإصدار المتقدم من إعلام الدفع.

في هذا البرنامج التعليمي، سوف تتعلّم:

  • إعداد شهادة خدمة Apple Push Notification (APNs).
  • تكوين Xcode للإعلامات المنبثقة.
  • تنفيذ إصدار أساسي أو متقدم من الإعلامات المنبثقة.
  • اختبر الإعلامات على تطبيقك.
  • إعداد تجديد التسجيل التلقائي للإعلامات المنبثقة.

تنزيل التعليمات البرمجية

قم بتنزيل نموذج التعليمات البرمجية في GitHub Azure Samples إضافة دردشة إلى تطبيقك.

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

  • أكمل الخطوات الأساسية في مقالة إضافة دردشة إلى تطبيقك .

  • قم بإنشاء مركز إعلام Azure ضمن نفس الاشتراك مثل مورد Communication Services، ثم اربط مركز الإعلام بمورد Communication Services. راجع توفير مركز الإعلامات.

.p12 إنشاء شهادة APNs وتعيينها في مركز الإعلام

إذا لم تكن عميلا داخليا من Microsoft، فأكمل الخطوات الواردة في الإجراء التالي لإنشاء شهادة خدمة Apple Push Notification (APNs).

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

  1. سجل الدخول إلى مدخل مطور Apple.

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

    لقطة شاشة تعرض التحديدات لاختيار معرف التطبيق.

  3. في صفحة معرف التطبيق، حدد القدرات>الإعلامات المنبثقة، ثم حدد حفظ.

    لقطة شاشة تعرض خيارات لتحرير تكوين معرف التطبيق.

  4. في مربع الحوار تعديل قدرات التطبيق الذي يظهر، حدد تأكيد.

    لقطة شاشة تعرض زر تأكيد لتعديل قدرات التطبيق.

  5. في الصفحة الخاصة بمعرف التطبيق، حدد قدرات>الإعلامات المنبثقة>تكوين، ثم حدد أحد الخيارات التالية:

    • لاختبار الإعلامات المؤقتة أثناء تطوير تطبيق iOS، حدد الزر Create Certificate ضمن Development SSL Certificate.
    • لإرسال إعلامات الدفع في الإنتاج، حدد الزر Create Certificate ضمن Production SSL Certificate.

    لقطة شاشة تعرض خيارات إنشاء شهادة تطوير أو شهادة إنتاج.

  6. تظهر منطقة إنشاء شهادة جديدة في صفحة الشهادات والمعرفات وملفات التعريف.

    لقطة شاشة تعرض خيار تحميل طلب توقيع شهادة.

    في هذا المجال، يمكنك تحميل طلب توقيع شهادة (CSR):

    1. في علامة تبويب متصفح جديدة، اتبع صفحة تعليمات Apple هذه لإنشاء CSR وحفظ الملف ك App name.cer. تتضمن الإرشادات استخدام مساعد الشهادة لطلب شهادة وتعبئة معلومات الشهادة.

      لقطة شاشة تعرض التحديدات لطلب شهادة من مرجع مصدق.

      لقطة شاشة تعرض مثالا لملء معلومات الشهادة.

    2. اسحب ملف .cer إلى منطقة اختيار ملف . ثم حدد متابعة في الزاوية العلوية اليسرى.

      لقطة شاشة لمنطقة اختيار ملف شهادة.

  7. حدد تنزيل.

    لقطة شاشة للزر لتنزيل شهادة.

  8. احفظ الملف محليا بالتنسيق .p12 .

    لقطة شاشة تعرض منطقة حفظ ملف شهادة.

  9. افتح .cer الملف الذي قمت بتنزيله. في Keychain Access، حدد الشهادة، وانقر بزر الماوس الأيمن فوقها، ثم قم بتصدير الشهادة .p12 بتنسيق.

  10. انتقل إلى مركز الإعلامات. ضمن الإعدادات، حدد Apple (APNS). ثم املأ تفاصيل الشهادة:

    • بالنسبة إلى Authentication Mode، حدد Certificate.
    • لتحميل الشهادة.p12، قم بتحميل الملف الذي قمت بإنشائه.
    • بالنسبة إلى وضع التطبيق، حدد الوضع بناء على حاجتك.

    عند الانتهاء من إدخال جميع المعلومات، حدد حفظ.

    لقطة شاشة تعرض إعدادات التطبيق والشهادة لمركز الإعلامات.

تكوين Xcode

  1. في Xcode، انتقل إلى Signing & Capabilities.

  2. أضف إمكانية عن طريق تحديد + القدرة، ثم حدد دفع الإعلامات.

  3. أضف إمكانية أخرى عن طريق تحديد + القدرة، ثم حدد أوضاع الخلفية.

  4. ضمن أوضاع الخلفية، حدد الإعلامات عن بعد.

    لقطة شاشة تعرض إضافة الإعلامات المؤقتة وأوضاع الخلفية في Xcode.

  5. بالنسبة إلى Pod Target - AzureCore، قم بتعيين Require Only App-Extension-Safe API ك No.

تنفيذ الإعلامات المنبثقة

الإصدار الأساسي

إذا كنت ترغب في تنفيذ إصدار أساسي من الإعلامات المؤقتة، فستحتاج إلى التسجيل للحصول على إشعارات عن بعد باستخدام APNs. للحصول على التنفيذ ذي الصلة في AppDelegate.swift، راجع GitHub Azure Samples App delegate Swift code.

إصدار متقدم

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

تخزين البيانات لمفاتيح التشفير

إنشاء تخزين بيانات مستمر في أجهزة iOS. يحتاج تخزين البيانات هذا إلى مشاركة البيانات بين التطبيق الرئيسي وملحقات التطبيق.

في نموذج التعليمات البرمجية لهذا البرنامج التعليمي، اختر App Groups تخزين البيانات كما يلي:

  1. أضف إمكانية مجموعات التطبيقات إلى أهداف التطبيق (ملحقات التطبيقات والتطبيقات الرئيسية) باتباع الخطوات الواردة في مقالة Apple إضافة قدرات إلى تطبيقك.

  2. تكوين مجموعات التطبيقات باتباع الخطوات الواردة في مقالة Apple تكوين مجموعات التطبيقات. تأكد من أن التطبيق الرئيسي وملحقات التطبيق لديك لها نفس اسم الحاوية.

ملحق خدمة الإعلام

تنفيذ Notification Service Extension المجمع مع التطبيق الرئيسي. يقوم ملحق التطبيق هذا بفك تشفير حمولة الإعلامات المؤقتة عند استلام الجهاز لها.

  1. راجع إضافة ملحق تطبيق خدمة إلى مشروعك في وثائق Apple واتبع الخطوات.

  2. راجع تنفيذ أساليب معالج الملحق في وثائق Apple.

توفر Apple التعليمات البرمجية الافتراضية لفك تشفير البيانات، ويمكنك اتباع البنية العامة لهذا البرنامج التعليمي. ومع ذلك، لأنك تستخدم Chat SDK لفك التشفير، تحتاج إلى استبدال الجزء الذي يبدأ من // Try to decode the encrypted message data بمنطق مخصص.

للحصول على التنفيذ ذي الصلة في NotificationService.swift، راجع GitHub Azure Samples Notification Service for Swift.

تنفيذ بروتوكول PushNotificationKeyStorage

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

PushNotificationKeyStorage يحدد طريقتين:

  • onPersistKey(encryptionKey:expiryTime): تستمر هذه الطريقة في مفتاح التشفير في تخزين جهاز iOS الخاص بالمستخدم. يعين Chat SDK 45 دقيقة كوقت انتهاء صلاحية لمفتاح التشفير. إذا كنت تريد أن تكون الإعلامات المؤقتة سارية المفعول لأكثر من 45 دقيقة، فستحتاج إلى جدولة chatClient.startPushNotifications(deviceToken:) مكالمة بشكل متكرر (على سبيل المثال، كل 15 دقيقة) بحيث يمكن تسجيل مفتاح تشفير جديد قبل انتهاء صلاحية المفتاح القديم.

  • onRetrieveKeys() -> [String]: يسترد هذا الأسلوب المفاتيح الصالحة التي تم تخزينها مسبقا. لديك المرونة لتوفير التخصيص استنادا إلى تخزين البيانات الذي اخترته سابقا.

في ملحق البروتوكول، يوفر Chat SDK تنفيذا للأسلوب decryptPayload(notification:) -> PushNotificationEvent الذي يمكنك استخدامه. للحصول على التنفيذ ذي الصلة في NotificationService.swift، راجع GitHub Azure Samples Notification Service for Swift.

اختبار الإعلامات

  1. إنشاء مؤشر ترابط دردشة باستخدام المستخدم أ والمستخدم ب.

  2. قم بتنزيل مستودع GitHub لعينة التطبيقات.

  3. ضع قيم و <ACCESS_TOKEN> للمستخدم A <ACS_RESOURCE_ENDPOINT> في AppSettings.plist.

  4. قم بتعيين Enable Bitcode إلى No لهدفين من Pod: AzureCommunicationChat وTrouter.

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

  6. كمستخدم B، أرسل رسالة دردشة. تأكد من أن المستخدم أ يتلقى إعلاما منبثقا على جهاز iOS.

تنفيذ تجديد التسجيل

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

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

إشعار

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

الحل 1: مهام الخلفية

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

تصف الأقسام التالية كيفية استخدام مهام الخلفية لتجديد التسجيل.

تكوين التحديث التلقائي للرمز المميزة لوصول المستخدم

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

يبسط Chat SDK إدارة الرمز المميز عن طريق أتمتة عملية التحديث عند تنفيذ تحديث رمز مميز مخصص للوصول. أكمل الخطوات التالية لتكوين تطبيق الدردشة لدعم التحديث التلقائي للرمز المميز:

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

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

  2. بعد تكوين دالة Azure:

    1. احصل على عنوان URL لمصدر الرمز المميز من مدخل Microsoft Azure. يستخدم تطبيق الدردشة عنوان URL هذا لطلب رموز مميزة جديدة.

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

      يتوفر نموذج التعليمات البرمجية لمحدث الرمز المميز وتكامله مع عميل الدردشة في مستودع GitHub لعينة التطبيقات.

تمكين مهام الخلفية وجدولتها

لتنشيط مهام الخلفية وجدولتها في تطبيق iOS، اتبع الخطوات الواردة في مقالة Apple استخدام مهام الخلفية لتحديث تطبيقك.

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

الحل 2: الإعلام عن بعد

الإعلام عن بعد هو آلية لتطبيقات iOS لتشغيل مهام الخلفية استجابة للمشغلات الخارجية. يمكنك استخدام الإعلامات عن بعد لمهام مثل تحديث التسجيلات دون تدخل المستخدم.

لاستخدام الإعلامات عن بعد لتشغيل مهمة في الخلفية:

  1. تنفيذ آلية التشغيل.

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

  2. إعداد مركز إعلام.

    توفر خدمة Azure Notification Hubs بنية تحتية للإعلامات المؤقتة قابلة للتطوير يمكنها إرسال إعلامات إلى أي نظام أساسي (iOS وAndroid وWindows وما إلى ذلك) من أي نهاية خلفية (سحابة أو محلية).

    يمكنك إعادة استخدام مركز الإعلامات نفسه الذي تستخدمه للإعلامات المؤقتة العادية. إذا كنت ترغب في إعداد واحدة جديدة، فشاهد وثائق Azure Notification Hubs.

  3. تكوين تطبيق وظائف Azure للإعلامات العادية.

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

  4. معالجة الإعلامات في تطبيقك.

    في تطبيق iOS، قم بتنفيذ أسلوب مثيل التطبيق لتشغيل تحديث تلقائي للتسجيل عند تلقي إشعار صامت.

لمزيد من المعلومات، راجع مقالة Apple إعداد خادم إعلام عن بعد.