مشاركة عبر


البرنامج التعليمي: التكوين الأولي لتلقي إعلام من مراكز إعلامات Azure

يوضح لك هذا البرنامج التعليمي كيفية استخدام مراكز إعلامات Azure لإرسال الإعلامات المؤقتة إلى تطبيق iOS، باستخدام SDK لمراكز إعلامات Azure لأجهزة Apple.

هذا البرنامج التعليمي يغطي الخطوات الآتية:

  • إنشاء نموذج تطبيق iOS.
  • توصيل تطبيق iOS إلى مراكز إعلامات Azure.
  • إرسال إعلامات الاختبار المؤقتة.
  • التحقق من تلقي التطبيق للإشعارات.

يمكنك تحميل الرمز الكامل لهذا البرنامج التعليمي من GitHub.

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

لإكمال هذا البرنامج التعليمي، ستحتاج إلى المتطلبات الأساسية التالية:

  • جهاز Mac يعمل بنظام تشغيل Xcode، بالإضافة إلى شهادة مطور صالحة مثبتة على Keychain لديك.
  • جهاز iPhone أو iPad يعمل بإصدار 10 من نظام تشغيل iOS أو أحدث.
  • جهازك الفعلي مسجل في Apple Portal،ومرتبط بالشهادة.

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

إشعار

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

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

  1. في Xcode، قم بإنشاء مشروع Xcode جديد وحدد قالب iOS Tab وApp.

    رسم تخطيطي يوضح إعداد Xcode للتطبيق الجديد

  2. عند تعيين خيارات مشروعك الجديد، تأكد من استخدام نفس اسم المنتجمعرف المؤسسة الذي استخدمته عند تعيين معرف الحزمة في مدخل Apple Developer. يجب تعبئة الحزمة المحددة في نافذة المشروع الجديد لمطابقة الحزمة المحددة في مدخل Apple Developer. وهذا الحقل مميِّز لحالة الأحرف.

  3. في Project Navigator، حدد اسم المشروع ضمن "Targets"، ثم حدد علامة التبويب "Signing & Capabilities". تأكد من تحديد الفريق المناسب لحساب Apple Developer الخاص بك. يسحب XCode ملف التعريف المخصص الذي أنشأته مسبقاً استناداً إلى معرف الحزمة تلقائياً.

    إذا لم يتم عرض ملف التعريف الجديد المخصص الذي أنشأته في Xcode، فحاول تحديث ملفات التعريف الخاصة بهويتك الخاصة بالتوقيع. انقر فوق Xcode على شريط القوائم، ثم انقر فوق "Preferences"، ومن ثمَّ انقر فوق علامة التبويب "Account"، وانقر فوق الزر "View Details" وحدد هوية توقيعك، ثم حدد بزر التحديث في الزاوية السفلية اليمنى.

    عرض التفاصيل

  4. في علامة التبويب القدرات والتوقيع، حدد + القدرة. انقر نقراً مزدوجاً على الإشعارات المنبثقة لتمكينها.

    الإمكانية

  5. إضافة وحدات Azure Notification Hubs SDK.

    يمكنك دمج Azure Notification Hubs SDK في تطبيقك باستخدام CocoaPods أو عن طريق إضافة الثنائيات يدويا إلى مشروعك.

    • التكامل عبر CocoaPods: أضف التبعيات التالية إلى podfile لتضمين Azure Notification Hubs SDK في تطبيقك:

      pod 'AzureNotificationHubs-iOS'
      
      • شغل تثبيت pod من أجل تثبيت pod الحديث وفتح xcworkspace.

        إذا رأيت خطأ مثل تعذر العثور على مواصفات AzureNotificationHubs-iOS أثناء تشغيل تثبيت pod، فقم بتشغيل pod repo update للحصول على أحدث pods من مستودع CocoaPods، ثم قم بتشغيل تثبيت pod.

    • التكامل عبر Carthage: أضف التبعيات التالية إلى Cartfile لتضمينthe Azure Notification Hubs SDK في التطبيق الخاص بك:

      github "Azure/azure-notificationhubs-ios"
      
      • بعد ذلك، تحديث تبعيات البنية:
      $ carthage update
      

      لمزيد من المعلومات حول استخدام Carthage راجع مستودع Carthage GitHub.

    • التكامل عن طريق نسخ الثنائيات في المشروع الخاص بك:

      يمكنك التكامل عن طريق نسخ الثنائيات في المشروع الخاص بك، كما يلي:

      • تحميل إطار عمل Azure Notification Hubs SDK المقدمة كملف مضغوط، وفك ضغطه.

      • في Xcode، انقر بزر الماوس الأيمن فوق مشروعك وانقر فوق الخيار إضافة ملفات إلى لإضافة مجلد WindowsAzureMessaging.framework إلى مشروع Xcode الخاص بك. حدد "Options" وتأكد من تحديد "Copy items if needed"، ثم انقر فوق "Add".

        أضف الإطار

  6. إضافة ملف يسمى DevSettings.plist أو تحريره يحتوي على خاصيتين، CONNECTION_STRING سلسلة الاتصال إلى Azure Notification Hub، واسم HUB_NAME Azure Notification Hub.

  7. إضافة المعلومات بقصد توصيل Azure Notification Hubs <string></string> مع القسم المناسب. استبدال العناصر النائبة الحرفية --HUB-NAME-- السلسلة --CONNECTION-STRING-- واسم المركز و DefaultListenSharedAccessSignature، على التوالي، كما تم الحصول عليها مسبقاً من المدخل:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>HUB_NAME</key>
      <string>--HUB-NAME--</string>
      <key>CONNECTION_STRING</key>
      <string>--CONNECTION-STRING--</string>
    </dict>
    </plist>
    
  8. في نفس الملف AppDelegate.m، استبدل جميع التعليمات البرمجية بعد didFinishLaunchingWithOptions بالرمز التالي:

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    #import <UserNotifications/UserNotifications.h>
    
    // Extend the AppDelegate to listen for messages using MSNotificationHubDelegate and User Notification Center
    @interface AppDelegate () <MSNotificationHubDelegate>
    
    @end
    
    @implementation AppDelegate
    
    @synthesize notificationPresentationCompletionHandler;
    @synthesize notificationResponseCompletionHandler;
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        NSString *path = [[NSBundle mainBundle] pathForResource:@"DevSettings" ofType:@"plist"];
        NSDictionary *configValues = [NSDictionary dictionaryWithContentsOfFile:path];
    
        NSString *connectionString = [configValues objectForKey:@"CONNECTION_STRING"];
        NSString *hubName = [configValues objectForKey:@"HUB_NAME"];
    
        if([connectionString length] != 0 && [hubName length] != 0) {
            [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
            [MSNotificationHub setDelegate:self];
            [MSNotificationHub initWithConnectionString:connectionString withHubName:hubName];
    
            return YES;
        }
    
        NSLog(@"Please setup CONNECTION_STRING and HUB_NAME in DevSettings.plist and restart application");
    
        exit(-1);
    }
    
    - (void)notificationHub:(MSNotificationHub *)notificationHub didReceivePushNotification:(MSNotificationHubMessage *)message {
        // Send message using NSNotificationCenter with the message
        NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:@"message"];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageReceived" object:nil userInfo:userInfo];
    }
    
    @end
    

    تتصل هذه التعليمة البرمجية بمركز الإعلامات باستخدام معلومات الاتصال التي حددتها في DevSettings.plist. ثم يعطي رمز الجهاز المميز إلى مركز الإعلامات، بحيث يمكن للمركز إرسال الإعلامات.

إنشاء ملف الرأس NotificationDetailViewController

  1. على غرار الإرشادات السابقة، أضف ملف رأس آخر يسمى SetupViewController.h. استبدل محتويات ملف لرأس الجديد بالرمز التالي:

    #import <UIKit/UIKit.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface SetupViewController : UIViewController
    
    @end
    
    NS_ASSUME_NONNULL_END
    
  2. أضف ملف التنفيذ SetupViewController.m. استبدال محتويات الملف بالتعليمات البرمجية التالية التي تطبيق أساليب UIViewController:

    #import "SetupViewController.h"
    
     static NSString *const kNHMessageReceived = @"MessageReceived";
    
     @interface SetupViewController ()
    
     @end
    
     @implementation SetupViewController
    
     - (void)viewDidLoad {
         [super viewDidLoad];
    
         // Listen for messages using NSNotificationCenter
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceivePushNotification:) name:kNHMessageReceived object:nil];
     }
    
     - (void)dealloc {
         // Clean up subscription to NSNotificationCenter
         [[NSNotificationCenter defaultCenter] removeObserver:self name:kNHMessageReceived object:nil];
     }
    
     - (void)didReceivePushNotification:(NSNotification *)notification {
         MSNotificationHubMessage *message = [notification.userInfo objectForKey:@"message"];
    
         // Create UI Alert controller with message title and body
         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message.title
                              message:message.body
                       preferredStyle:UIAlertControllerStyleAlert];
         [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]];
         [self presentViewController:alertController animated:YES completion:nil];
    
         // Dismiss after 2 seconds
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             [alertController dismissViewControllerAnimated:YES completion: nil];
         });
    
     }
    
     @end
    
  3. للتحقق من عدم وجود أي حالات فشل، قم بإنشاء التطبيق وتشغيله على جهازك.

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

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

إرسال اختبار

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

فيما يلي قائمة ببعض البرامج التعليمية الأخرى التي ننصح بمراجعتها لإرسال الإعلامات:

تحقق من تلقي التطبيق الإشعارات المنبثقة

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

  1. تشغيل التطبيق والتحقق من نجاح التسجيل، ثم اضغط موافق.

    تسجيل

  2. بعد ذلك، أرسل إعلام اختبار منبثقاً من مدخل Azure، كما هو موضح في القسم السابق.

  3. يتم إرسال الإعلام المؤقت إلى كافة الأجهزة المسجلة لتلقي الإعلامات من مركز الإعلامات المحدد.

    إرسال اختبار

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

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

برنامج تعليمي: إرسال إشعارات إلى أجهزة معينة

لمزيد من المعلومات، راجع المقالات التالية: