1. مقدمة
تاريخ آخر تعديل: 6/1/2020
المراسلة عبر السحابة الإلكترونية من Firebase (FCM) هي حل مراسلة من عدّة أنظمة أساسية يتيح لك إرسال الرسائل بشكل موثوق بدون أي تكلفة.
وباستخدام ميزة "المراسلة عبر السحابة الإلكترونية من Firebase"، يمكنك إعلام أحد تطبيقات البرنامج بتوفّر رسائل إلكترونية جديدة أو بيانات أخرى لمزامنتها. يمكنك إرسال رسائل إشعارات لتعزيز إعادة جذب المستخدمين والاحتفاظ بهم. بالنسبة إلى حالات الاستخدام مثل المراسلة الفورية، يمكن أن تنقل الرسالة حمولة تصل إلى 4 كيلوبايت إلى تطبيق عميل.
كيف تعمل هذه الميزة؟
تشمل عملية تنفيذ "المراسلة عبر السحابة الإلكترونية من Firebase" مكوّنَين أساسيَّين للإرسال والاستلام:
- بيئة موثوق بها، مثل وظائف السحابة الإلكترونية لبرنامج Firebase أو خادم التطبيقات الذي يمكن من خلاله إنشاء الرسائل واستهدافها وإرسالها
- تطبيق عميل لنظام التشغيل iOS أو Android أو على الويب (JavaScript) يتلقّى الرسائل من خلال خدمة النقل الخاصة بالنظام الأساسي المناسب
نظرة عامة حول تصميم "المراسلة عبر السحابة الإلكترونية من Firebase"
تعتمد خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" على المجموعة التالية من المكوّنات التي تنشئ الرسائل وتنقلها وتستلمها:
- استخدام الأدوات لإنشاء طلبات الرسائل أو إنشائها يوفر مؤلف الإشعارات خيارًا مستندًا إلى واجهة المستخدم الرسومية لإنشاء طلبات الإشعارات. لإجراء التشغيل الآلي الكامل والحصول على دعم لجميع أنواع الرسائل، عليك إنشاء طلبات الرسائل في بيئة خادم موثوق بها تتوافق مع حزمة SDK للمشرف في Firebase أو بروتوكولات خادم "المراسلة عبر السحابة الإلكترونية من Firebase". ويمكن أن تتمثل هذه البيئة في وظائف السحابة الإلكترونية لبرنامج Firebase أو Google App Engine أو خادم التطبيقات الخاص بك.
- تقبل الواجهة الخلفية لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" (من بين وظائف أخرى) طلبات الرسائل، وتوزِّع الرسائل من خلال المواضيع، وتنشئ البيانات الوصفية للرسائل مثل معرّف الرسالة.
- يشير ذلك المصطلح إلى طبقة نقل على مستوى النظام الأساسي توجِّه الرسالة إلى الجهاز المستهدَف وتعالج تسليم الرسائل وتطبّق الإعدادات الخاصة بالنظام الأساسي عند الاقتضاء. وتشمل طبقة النقل هذه ما يلي:
- طبقة النقل على Android (ATL) لأجهزة Android التي تتضمّن "خدمات Google Play"
- خدمة الإشعارات الفورية في Apple (APNs) لأجهزة iOS
- بروتوكول Web Push لتطبيقات الويب
- حزمة تطوير البرامج لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" على جهاز المستخدم، حيث يتم عرض الإشعار أو التعامل مع الرسالة وفقًا لحالة المقدّمة/الخلفية للتطبيق وأي منطق ذي صلة للتطبيق
ما الذي ستنشئه
في هذا الدرس التطبيقي حول الترميز، ستضيف الإشعارات الفورية إلى نموذج تطبيق iOS من خلال خدمة "المراسلة عبر السحابة الإلكترونية من Firebase".
المعلومات التي ستطّلع عليها
- كيفية اشتراك مستخدم وإلغاء الاشتراك فيه في ميزة "الرسائل الفورية"
- كيفية التعامل مع الرسائل الفورية الواردة
- كيفية عرض إشعار
- كيفية الردّ على النقرات على الإشعارات
المتطلبات
- Xcode 11.0 أو إصدار أحدث
- الإصدار 1.9.0 من CocoaPods أو إصدار أحدث
- حساب مطوِّر على Apple
- جهاز iOS فعلي لتشغيل تطبيقك
- معرفة أساسية بـ Swift
2. بدء الإعداد
تنزيل نموذج الرمز
في هذا الدرس التطبيقي حول الترميز، ستنشئ تطبيقك التجريبي، ولكن إذا كنت تريد الاطّلاع على نموذج التطبيق الحالي وتشغيله، يمكنك تنزيل نموذج رمز البدء السريع.
هناك طريقتان للحصول على العيّنة:
- استنساخ مستودع Git:
$ git clone https://github.com/firebase/quickstart-ios.git
- تنزيل ملف ZIP:
في حال تنزيل المصدر كملف ZIP، سيؤدي فك ضغطه إلى الحصول على المجلد الجذر quickstart-ios
.
إنشاء تطبيق جديد
يمكنك إنشاء تطبيقك التجريبي باتّباع الخطوات التالية (تتوفّر الخطوات أدناه في XCode 12.3):
- افتح XCode واختَر إنشاء مشروع Xcode جديد.
- اختَر التطبيق وانقر على التالي.
- أدخِل اسم المنتج (مثل MessagingExample)
- اختَر فريق (إذا لم تكن قد أنشأت فريقًا، يمكنك ضبطه في حساب المطوّر على Apple).
- أدخل معرّف المؤسسة (على سبيل المثال،
com.
your-name
) - أدخل معرف الحزمة (على سبيل المثال،
com.
your-name
.MessagingExample
، يجب أن يكون فريدًا بين جميع تطبيقات iOS). - حدد مخطط القصة في القائمة المنسدلة الواجهة.
- اختر تفويض تطبيق UIKit في القائمة المنسدلة رحلة المستخدِم.
- اختَر Swift في اللغة.
- انقر على التالي.
ستحتاج إلى معرِّف الحزمة عند إنشاء مفتاح APN وتسجيل تطبيقك في مشروع Firebase.
3- ضبط أسماء نقاط الوصول (APN)
إنشاء مفتاح المصادقة
يصف هذا القسم كيفية إنشاء مفتاح مصادقة لمعرّف تطبيق تم تفعيله للإشعارات الفورية. إذا كان لديك مفتاح حالي، يمكنك استخدام هذا المفتاح بدلاً من إنشاء مفتاح جديد.
لإنشاء مفتاح مصادقة:
- في حساب المطوِّر، انتقِل إلى الشهادات والمعرِّفات الملفات الشخصية، وانتقِل إلى المفاتيح.
- انقر فوق الزر "Add" (إضافة) (+) في أعلى الجانب الأيسر.
- يُرجى إدخال وصف لمفتاح مصادقة أسماء نقاط الوصول (APNs).
- ضِمن "الخدمات الأساسية"، ضَع علامة في مربّع اختيار أسماء نقاط الوصول (APN) وانقر على متابعة.
- انقر على تسجيل ثم تنزيل. احتفِظ بمفتاحك في مكان آمن. يتم تنزيل هذه البيانات لمرة واحدة، ولا يمكن استرداد المفتاح لاحقًا.
إنشاء رقم تعريف تطبيق
رقم تعريف التطبيق هو معرّف يعرّف التطبيق بشكلٍ فريد. كاصطلاح، يتم تمثيله بنطاق معكوس.
- انتقِل إلى Apple Developer Member Center وسجِّل الدخول.
- انتقِل إلى الشهادات والمعرّفات والملفات الشخصية.
- انتقِل إلى المعرِّفات.
- انقر على الزر + لإنشاء رقم تعريف تطبيق جديد.
- انقر على زرّ الاختيار معرّفات التطبيقات، ثم انقر على متابعة.
- اختَر تطبيق، ثم انقر على متابعة.
- لإنشاء رقم تعريف التطبيق الجديد:
- أدخِل اسمًا لرقم تعريف التطبيق.
- أدخِل رقم تعريف الفريق. يجب أن تتطابق هذه القيمة مع رقم تعريف الفريق في علامة التبويب "العضوية".
- في القسم لاحقة رقم تعريف التطبيق، اختَر رقم تعريف التطبيق الفاضح، ثم أدخِل رقم تعريف الحزمة.
- في قسم خدمات التطبيقات، تأكَّد من وضع علامة في المربّع بجانب الإشعارات الفورية.
- انقر على متابعة وتأكَّد من صحة الإدخال الذي أدخلته:
- يجب أن تتطابق قيمة المعرّف مع تسلسل قيم رقم تعريف الفريق ومعرّف الحزمة.
- يجب أن تكون الإشعارات الفورية قابلة للضبط.
- انقر على تسجيل لإنشاء رقم تعريف التطبيق.
إنشاء الملف الشخصي
لاختبار تطبيقك أثناء تطويره، تحتاج إلى ملف شخصي للتطوير من أجل السماح لأجهزتك بتشغيل تطبيق لم يتم نشره بعد على App Store.
- انتقِل إلى Apple Developer Member Center وسجِّل الدخول.
- انتقِل إلى الشهادات والمعرّفات والملفات الشخصية.
- في القائمة المنسدلة في أعلى يمين الشاشة، اختَر iOS، tvOS، watchOS إذا لم يسبق لك إجراء ذلك، ثم انتقِل إلى الملفات الشخصية.
- انقر على الزر + لإنشاء ملف شخصي جديد.
- اختَر تطوير تطبيقات iOS كنوع الملف الشخصي لإدارة الحسابات، ثم انقر على متابعة.
- في القائمة المنسدلة، اختَر رقم تعريف التطبيق الذي تريد استخدامه، ثمّ انقر على متابعة.
- اختَر شهادة تطوير iOS الخاصة برقم تعريف التطبيق الذي اخترته في الخطوة السابقة، ثم انقر على متابعة.
- اختَر أجهزة iOS التي تريد تضمينها في الملف الشخصي لإدارة الحسابات، ثم انقر على متابعة. تأكد من اختيار جميع الأجهزة التي تريد استخدامها للاختبار.
- أدخِل اسمًا لهذا الملف الشخصي لإدارة الحسابات (مثل MessagingExampleProfile)، ثم انقر على Generate (إنشاء).
- انقر على تنزيل لحفظ الملف الشخصي لإدارة الحسابات في جهاز Mac.
- انقر مرّتين على ملف الملف الشخصي لإدارة الحسابات لتثبيته.
4. إضافة Firebase إلى مشروع iOS
إنشاء مشروع على Firebase
قبل أن تتمكن من إضافة Firebase إلى تطبيقك على iOS، يجب إنشاء مشروع Firebase لربطه بتطبيق iOS. انتقِل إلى مقالة فهم مشاريع Firebase للاطّلاع على مزيد من المعلومات عن مشاريع Firebase.
- في وحدة تحكُّم Firebase، انقر على إضافة مشروع، ثم اختَر اسم مشروع أو أدخِله.
إذا كان لديك مشروع حالي على Google Cloud Platform (GCP)، يمكنك اختيار المشروع من القائمة المنسدلة لإضافة موارد Firebase إلى هذا المشروع.
- (اختياري) إذا كنت تنشئ مشروعًا جديدًا، يمكنك تعديل رقم تعريف المشروع.
يعيّن Firebase تلقائيًا معرّفًا فريدًا لمشروعك في Firebase. انتقِل إلى صفحة "فهم مشاريع Firebase" للتعرّف على كيفية استخدام Firebase لرقم تعريف المشروع.
- انقر على متابعة.
- يمكنك إعداد "إحصاءات Google" لمشروعك، ما يمكّنك من الحصول على أفضل تجربة باستخدام أي من منتجات Firebase التالية:
- Firebase Crashlytics
- توقعات Firebase
- المراسلة عبر السحابة الإلكترونية من Firebase
- المراسلة داخل تطبيق Firebase
- الإعداد عن بُعد في Firebase
- اختبار A/B من Firebase
اختَر استخدام حساب حالي على "إحصاءات Google" أو إنشاء حساب جديد عندما يُطلب منك ذلك. إذا اختَرت إنشاء حساب جديد، اختَر موقع إعداد التقارير في "إحصاءات Google"، ثم اقبل إعدادات مشاركة البيانات وبنود "إحصاءات Google" لمشروعك.
- انقر على إنشاء مشروع (أو إضافة Firebase إذا كنت تستخدم مشروع Google Cloud Platform حالي).
يوفّر Firebase تلقائيًا الموارد لمشروعك على Firebase. عند اكتمال العملية، سيتم نقلك إلى صفحة النظرة العامة لمشروع Firebase في وحدة تحكُّم Firebase.
تسجيل تطبيقك في Firebase
بعد إنشاء مشروع على Firebase، يمكنك إضافة تطبيق iOS إليه.
انتقِل إلى قسم فهم مشاريع Firebase للاطّلاع على مزيد من المعلومات عن أفضل الممارسات والاعتبارات المتعلقة بإضافة التطبيقات إلى مشروع Firebase، بما في ذلك كيفية التعامل مع صيغ إنشاء متعددة.
- انتقِل إلى "وحدة تحكُّم Firebase".
- في منتصف صفحة "نظرة عامة على المشروع"، انقر على رمز iOS لبدء عملية الإعداد.
إذا سبق وأضفت تطبيقًا إلى مشروع Firebase، انقر على "إضافة تطبيق" لعرض خيارات النظام الأساسي.
- أدخِل معرّف حزمة التطبيق في الحقل معرّف حزمة iOS.
- (اختياري) أدخِل معلومات التطبيق الأخرى: اسم التطبيق ورقم تعريف متجر التطبيقات.
- انقر على تسجيل التطبيق.
إضافة ملف إعداد Firebase
- انقر على تنزيل GoogleService-Info.plist للحصول على ملف إعداد Firebase iOS (
GoogleService-Info.plist
). - انقل ملف التكوين إلى جذر مشروع Xcode. اختَر إضافة ملف الإعداد إلى جميع الأهداف، إذا طُلب منك ذلك.
إذا كان لديك العديد من معرّفات الحِزم في مشروعك، عليك ربط كل معرّف حزمة بتطبيق مسجَّل في وحدة تحكُّم Firebase حتى يكون لكل تطبيق ملف GoogleService-Info.plist
خاص به.
أغلِق XCode.
إضافة حِزم تطوير البرامج (SDK) لمنصة Firebase إلى تطبيقك
ننصحك باستخدام CocoaPods لتثبيت مكتبات Firebase. أما إذا كنت تفضّل عدم استخدام CocoaPods، يمكنك دمج إطارات عمل حزمة تطوير البرامج (SDK) مباشرةً أو استخدام الإصدار التجريبي من أداة Swift Package Manager.
- أنشئ ملف Podfile إذا لم يكن لديك ملف بالفعل. إذا كنت تستخدم عينة البدء السريع، فإن مشروع Xcode وPodfile (مع مجموعات) موجودان بالفعل.
$ cd MessagingExample $ pod init
- إلى Podfile، إضافة مجموعات Firebase التي تريد استخدامها في تطبيقك.
يمكنك إضافة أيٍّ من منتجات Firebase المتوافقة إلى تطبيق iOS.
في نموذج البدء السريع، تمت إضافة حزم تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" و"إحصاءات Google".
# Add the Firebase pod for Google Analytics pod 'Firebase/Analytics' # Add the pod for Firebase Cloud Messaging pod 'Firebase/Messaging'
- ثبِّت المجموعات، ثم افتح ملف
.xcworkspace
للاطّلاع على المشروع في Xcode:
$ pod install
- افتح
MessagingExample.xcworkspace
، وانقر على التالي في وحدة تحكُّم Firebase.
إعداد Firebase في تطبيقك
سيتعيّن عليك إضافة رمز إعداد Firebase إلى تطبيقك.
عليك استيراد وحدة Firebase وإعداد مثيل مشترك (في نموذج البدء السريع، تكون وحدة Firebase قد تم استيرادها من قبل).
- استورِد وحدة Firebase في
UIApplicationDelegate
:
AppDelegate.swift
import UIKit
import Firebase // Add this line
- اضبط مثيلاً مشتركًا في FirebaseApp، عادةً باستخدام طريقة
application:didFinishLaunchingWithOptions:
لتطبيقك:
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure() // Add this line
return true
}
- انقر على التالي في "وحدة تحكُّم Firebase".
- تتم إضافة حِزم تطوير البرامج (SDK) لمنصة Firebase إلى تطبيقك. انقر على متابعة إلى وحدة التحكّم.
5- إعداد برنامج "المراسلة عبر السحابة الإلكترونية من Firebase"
تحميل مفتاح مصادقة أسماء نقاط الوصول (APN)
حمِّل مفتاح مصادقة أسماء نقاط الوصول إلى Firebase.
- في وحدة تحكم Firebase، ضمن مشروعك، اختَر رمز الترس، ثمّ اختَر إعدادات المشروع (Project Settings)، ثم اختَر علامة التبويب المراسلة عبر السحابة الإلكترونية.
- في مفتاح مصادقة أسماء نقاط الوصول (APN) ضمن ضبط تطبيق iOS، انقر على الزر تحميل.
- انتقِل إلى الموقع الجغرافي الذي حفظت فيه المفتاح، واختَره، ثم انقر على فتح. أضِف رقم تعريف المفتاح للمفتاح (المتوفّر في الشهادات والمعرّفات والملفات الشخصية في Apple Developer Member Center) وانقر على تحميل.
التسجيل لتلقّي الإشعارات عن بُعد
يمكنك تسجيل التطبيق لتلقّي الإشعارات عن بُعد، سواء عند بدء التشغيل أو في المرحلة المطلوبة من مسار تقديم الطلب.
سبق أن تمت إضافة registerForRemoteNotifications
في نموذج البدء السريع.
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
// [START register for remote notifications]
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
// [END register for remote notifications]
return true
}
يمكنك تعيين خاصية تفويض UNUserNotificationCenter
عن طريق إضافة هذه الأسطر في نهاية AppDelegate.swift.
AppDelegate.swift
@available(iOS 10, *)
extension AppDelegate : UNUserNotificationCenterDelegate {
// Receive displayed notifications for iOS 10 devices.
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let userInfo = notification.request.content.userInfo
// Print full message.
print(userInfo)
// Change this to your preferred presentation option
completionHandler([[.alert, .sound]])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
// Print full message.
print(userInfo)
completionHandler()
}
}
إعداد مفوَّض المراسلة
لتلقّي الرموز المميّزة للتسجيل، يجب تنفيذ بروتوكول تفويض المراسلة وضبط السمة delegate
في FIRMessaging
بعد طلب [FIRApp configure]
. على سبيل المثال، إذا كان مفوَّض تطبيقك متوافقًا مع بروتوكول التفويض بالمراسلة، يمكنك ضبط المفوَّض على application:didFinishLaunchingWithOptions:
على نفسه (في نموذج البدء السريع، سبق أن تم ضبطه).
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
Messaging.messaging().delegate = self // Add this line
// [START register for remote notifications]
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
// [END register for remote notifications]
return true
}
يمكنك تعيين خاصية تفويض FIRMessaging
عن طريق إضافة هذه الأسطر في نهاية AppDelegate.swift.
AppDelegate.swift
extension AppDelegate : MessagingDelegate {
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
print("Firebase registration token: \(String(describing: fcmToken))")
let dataDict:[String: String] = ["token": fcmToken ?? ""]
NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict)
}
}
إضافة الإمكانيات
لقد أضفت إمكانية الإشعارات الفورية في قسم "إنشاء معرّف تطبيق"، ولكن عليك أيضًا إضافة هذه الإمكانية على XCode من خلال الخطوات التالية (تتوفّر الخطوات أدناه في XCode 12.3):
- انقر على اسم المشروع في منطقة المستكشف.
- انقر على توقيع & الإمكانات.
- انقر على + القدرة.
- انقر مرّتين على أوضاع الخلفية.
- انقر على + القدرة مرة أخرى.
- انقر مرّتين على الإشعارات الفورية.
- انتقِل إلى الإشعارات عن بُعد في أقسام أوضاع الخلفية.
6- إرسال رسالة إشعار
يمكنك إرسال رسالة اختبار من خلال اتّباع الخطوات التالية:
- ثبِّت التطبيق وشغِّله على الجهاز المستهدَف. يجب قبول طلب الإذن بتلقّي الإشعارات عن بُعد.
- احصل على الرمز المميز للتسجيل في سجل XCode.
- تأكَّد من تشغيل التطبيق في الخلفية على الجهاز.
- افتح أداة إنشاء الإشعارات واختَر إشعار جديد.
- أدخِل نص الرسالة.
- اختَر إرسال رسالة اختبار.
- في الحقل الذي يحمل اسم إضافة رمز مميَّز للتسجيل عبر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"، أدخِل الرمز المميّز للتسجيل الذي حصلت عليه في الخطوة 2.
- انقر على اختبار.
بعد النقر على اختبار، من المفترض أن يتلقّى جهاز العميل المستهدف (مع تشغيل التطبيق في الخلفية) الإشعار في مركز الإشعارات.
للحصول على إحصاءات بشأن تسليم الرسائل إلى تطبيقك، راجِع لوحة بيانات إعداد تقارير "المراسلة عبر السحابة الإلكترونية من Firebase" التي تُسجِّل عدد الرسائل المُرسَلة والمفتوحة على أجهزة iOS وAndroid.
7. تهانينا
تهانينا، لقد أرسلت رسالة اختبار بنجاح.
هناك المزيد من الوظائف والإعدادات في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" مثل الاشتراك في المواضيع.
يُرجى الاطّلاع على مستند المطوّر الرسمي إذا كنت مهتمًا به.
الخطوات التالية
اطّلِع على بعض هذه الدروس التطبيقية حول الترميز.