البرنامج التعليمي: التكوين الأولي لتلقي إعلام من مراكز إعلامات 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 إلى مراكز الإعلامات
في Xcode، قم بإنشاء مشروع Xcode جديد وحدد قالب iOS Tab وApp.
عند تعيين خيارات مشروعك الجديد، تأكد من استخدام نفس اسم المنتجمعرف المؤسسة الذي استخدمته عند تعيين معرف الحزمة في مدخل Apple Developer. يجب تعبئة الحزمة المحددة في نافذة المشروع الجديد لمطابقة الحزمة المحددة في مدخل Apple Developer. وهذا الحقل مميِّز لحالة الأحرف.
في Project Navigator، حدد اسم المشروع ضمن "Targets"، ثم حدد علامة التبويب "Signing & Capabilities". تأكد من تحديد الفريق المناسب لحساب Apple Developer الخاص بك. يسحب XCode ملف التعريف المخصص الذي أنشأته مسبقاً استناداً إلى معرف الحزمة تلقائياً.
إذا لم يتم عرض ملف التعريف الجديد المخصص الذي أنشأته في Xcode، فحاول تحديث ملفات التعريف الخاصة بهويتك الخاصة بالتوقيع. انقر فوق Xcode على شريط القوائم، ثم انقر فوق "Preferences"، ومن ثمَّ انقر فوق علامة التبويب "Account"، وانقر فوق الزر "View Details" وحدد هوية توقيعك، ثم حدد بزر التحديث في الزاوية السفلية اليمنى.
في علامة التبويب القدرات والتوقيع، حدد + القدرة. انقر نقراً مزدوجاً على الإشعارات المنبثقة لتمكينها.
إضافة وحدات 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".
إضافة ملف يسمى DevSettings.plist أو تحريره يحتوي على خاصيتين،
CONNECTION_STRING
سلسلة الاتصال إلى Azure Notification Hub، واسمHUB_NAME
Azure Notification Hub.إضافة المعلومات بقصد توصيل 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>
في نفس الملف 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
على غرار الإرشادات السابقة، أضف ملف رأس آخر يسمى SetupViewController.h. استبدل محتويات ملف لرأس الجديد بالرمز التالي:
#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface SetupViewController : UIViewController @end NS_ASSUME_NONNULL_END
أضف ملف التنفيذ 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
للتحقق من عدم وجود أي حالات فشل، قم بإنشاء التطبيق وتشغيله على جهازك.
إرسال إشعارات الاختبار المؤقتة
يمكنك اختبار تلقي الإشعارات في التطبيق باستخدام خيار إرسال اختبار في مدخل Azure. يرسل إعلام الاختبار المؤقت إلى جهازك.
عادة ما يتم إرسال الإشعارات المنبثقة في خدمة back-end مثل Mobile Apps لـ ASP.NET باستخدام compatible library. إذا لم تكن المكتبة متوفرة على الخادم، يمكنك أيضًا استخدام واجهة برمجة تطبيقات REST مباشرة لإرسال رسائل الإعلام.
فيما يلي قائمة ببعض البرامج التعليمية الأخرى التي ننصح بمراجعتها لإرسال الإعلامات:
- تطبيقات Azure Mobile: للحصول على مثال حول كيفية إرسال إشعارات من تطبيقات الجوال المدمجة مع مراكز الإشعارات، راجع إضافة إشعارات دفع إلى تطبيق iOS الخاص بك.
- ASP.NET: استخدام Notification Hubs لإرسال إشعارات دفع للمستخدمين.
- Azure Notification Hubs Java SDK راجع كيفية استخدام مراكز الإعلام من Java لإرسال الإشعارات من Java. قد تم اختبار هذا في Eclipse لـAndroid Development.
- PHP: كيفية استخدام Notification Hubs من PHP.
تحقق من تلقي التطبيق الإشعارات المنبثقة
لاختبار الإعلامات المؤقتة على iOS، يلزم نشر التطبيق على جهاز iOS فعلي. لا يمكنك إرسال إشعارات دفع Apple باستخدام جهاز محاكاة iOS.
تشغيل التطبيق والتحقق من نجاح التسجيل، ثم اضغط موافق.
بعد ذلك، أرسل إعلام اختبار منبثقاً من مدخل Azure، كما هو موضح في القسم السابق.
يتم إرسال الإعلام المؤقت إلى كافة الأجهزة المسجلة لتلقي الإعلامات من مركز الإعلامات المحدد.
الخطوات التالية
في هذا المثال البسيط، يمكنك بث إعلامات مؤقتة إلى جميع أجهزة iOS المسجلة. لمعرفة كيفية إرسال الإعلامات المؤقتة إلى أجهزة iOS معينة، انتقل إلى البرنامج التعليمي الآتي:
برنامج تعليمي: إرسال إشعارات إلى أجهزة معينة
لمزيد من المعلومات، راجع المقالات التالية:
- نظرة عامة على Azure Notification Hubs
- Notification Hubs REST APIs
- Notification Hubs SDK للعماليات التي في الخلفية
- إعلام مراكز SDK على GitHub
- التسجيل مع الواجهة الخلفية للتطبيق
- إدارة التسجيلات
- العمل مع العلامات
- العمل مع القوالب المخصصة
- التحكم في الوصول إلى ناقل الخدمة مع توقيعات الوصول المشتركة
- إنشاء رموز SAS المميزة برمجياً
- حماية Apple: التشفير الشائع
- UNIX Epoch وقت
- HMAC