قم بإعداد تطبيق Firebase Cloud Messaging على نظام iOS

بالنسبة لتطبيقات عميل iOS ، يمكنك تلقي إعلام وحمولات بيانات تصل إلى 4000 بايت عبر واجهة Firebase Cloud Messaging APNs.

لكتابة رمز العميل الخاص بك في الهدف C أو سويفت، فإننا ننصح استخدام API FIRMessaging . على سبيل المثال التشغيل السريع يوفر نموذج التعليمات البرمجية لكلتا اللغتين.

لتمكين إرسال الإشعارات عبر APNs ، تحتاج إلى:

  • مفتاح مصادقة Apple Push Notification لحساب Apple Developer الخاص بك. يستخدم Firebase Cloud Messaging هذا الرمز المميز لإرسال إشعارات فورية إلى التطبيق المحدد بواسطة معرف التطبيق.

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

يمكنك إنشاء في كل من المطور أبل مركز عضو .

طريقة swizzling في Firebase Cloud Messaging

وFCM SDK swizzling طريقة ينفذ في مجالين رئيسيين: رسم ابنس استراتيجية الحد الخاص بك رمز لتسجيل FCM رمز والتقاط البيانات تحليلات خلال المصب معالجة رسائل الاستدعاء . المطورين الذين يفضلون عدم استخدام swizzling يمكن تعطيل من قبل إضافة علامة FirebaseAppDelegateProxyEnabled في ملف Info.plist التطبيق وتعيين إلى NO (قيمة منطقية). توفر المناطق ذات الصلة من الأدلة أمثلة على التعليمات البرمجية ، مع تمكين أسلوب swizzling أو بدونه.

أضف Firebase إلى مشروع iOS الخاص بك

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

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

  • قم بتثبيت ما يلي:

    • Xcode 12.2 أو أحدث
    • CocoaPods 1.10.0 أو أحدث
  • تأكد من أن مشروعك يلبي هذه المتطلبات:

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

    • الحصول على أبل دفع الإخطار مصادقة المفاتيح الخاصة بك أبل حساب المطور .
    • تمكين إخطارات دفع في كسكودي تحت التطبيقات> قدرات.

إذا لم يكن لديك بالفعل مشروع Xcode ونريد فقط أن يجرب منتج Firebase، يمكنك تحميل واحد من عينات التشغيل السريع .

أنشئ مشروع Firebase

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

سجّل تطبيقك في Firebase

بعد أن يكون لديك مشروع Firebase ، يمكنك إضافة تطبيق iOS الخاص بك إليه.

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

  1. انتقل إلى وحدة التحكم Firebase .

  2. في وسط الصفحة نظرة عامة المشروع، انقر فوق رمز دائرة الرقابة الداخلية ( ) لإطلاق سير العمل الإعداد.

    إذا كنت قد أضفت التطبيق لمشروع Firebase الخاص بك، انقر فوق إضافة التطبيق لعرض خيارات النظام الأساسي.

  3. أدخل رمز الرزمة التطبيق الخاص بك في دائرة الرقابة الداخلية حزمة حقل معرف.

  4. (اختياري) أدخل معلومات التطبيق أخرى: التطبيق الإسم المستعار و التطبيقات ID المتجر.

  5. انقر فوق تسجيل التطبيق.

أضف ملف تهيئة Firebase

  1. انقر فوق تحميل GoogleService-Info.plist للحصول على ملف التكوين Firebase الذي يعمل بنظام iOS ( GoogleService-Info.plist ).

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

إذا كان لديك عدة معرفات حزمة في المشروع، يجب إقران كل رمز الرزمة مع التطبيق المسجلين في وحدة تحكم Firebase بحيث يكون كل التطبيق يمكن أن يكون خاص بها GoogleService-Info.plist الملف.

أضف حزم Firebase SDK إلى تطبيقك

نوصي باستخدام CocoaPods لتثبيت المكتبات Firebase. ومع ذلك، إذا كنت تفضل عدم استخدام CocoaPods، يمكنك دمج الأطر SDK مباشرة أو استخدام سويفت مدير الحزم بدلا من ذلك.

هل تستخدم واحدة من عينات التشغيل السريع ؟ ومشروع Xcode وPodfile (مع القرون) موجودة بالفعل، ولكن عليك لا تزال بحاجة إلى إضافة ملف التكوين Firebase بك وتثبيت القرون.

  1. قم بإنشاء ملف Podfile إذا لم يكن لديك واحد بالفعل:

    cd your-project-directory
    pod init
  2. إلى Podfile الخاص بك ، أضف بودات Firebase التي تريد استخدامها في تطبيقك.

    يمكنك إضافة أي من المنتجات Firebase دعم لتطبيقات نظام التشغيل iOS الخاص بك.

    للحصول على تجربة الأمثل مع Firebase سحابة التراسل، ونحن نوصي تمكين جوجل تحليلات في المشروع. أيضًا ، كجزء من إعداد Analytics ، تحتاج إلى إضافة Firebase SDK للتحليلات إلى تطبيقك.

    تم تمكين التحليلات

    # Add the Firebase pod for Google Analytics
    pod 'Firebase/Analytics'
    
    # For Analytics without IDFA collection capability, use this pod instead
    # pod ‘Firebase/AnalyticsWithoutAdIdSupport’
    
    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'

    معرفة المزيد عن IDFA، معرف الإعلانات على مستوى الجهاز، في أبل خصوصية المستخدم واستخدام البيانات و التطبيقات تتبع الشفافية الوثائق.

    لم يتم تمكين التحليلات

    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'
  3. تثبيت القرون، ثم فتح الخاص بك .xcworkspace ملف لرؤية المشروع في كسكودي:

    pod install
    open your-project.xcworkspace

قم بتحميل مفتاح مصادقة APNs الخاص بك

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

  1. داخل المشروع الخاص بك في وحدة Firebase، حدد رمز الترس، اختر إعدادات المشروع، ومن ثم حدد علامة التبويب سحابة التراسل.

  2. في ابنس استراتيجية الحد مفتاح المصادقة تحت التكوين تطبيقات نظام التشغيل iOS، انقر فوق الزر تحميل.

  3. انتقل إلى الموقع حيث يمكنك حفظ المفتاح الخاص بك، حدده ثم انقر فوق فتح. إضافة المعرف الرئيسي للمفتاح (متوفر في المطور أبل مركز عضو ) وانقر فوق إيداع.

ابدأ تشغيل Firebase في تطبيقك

ستحتاج إلى إضافة رمز تهيئة Firebase إلى تطبيقك. قم باستيراد وحدة Firebase وتهيئة مثيل مشترك كما هو موضح:

  1. استيراد وحدة Firebase في حياتك UIApplicationDelegate :

    سويفت

    import Firebase

    ج موضوعية

    @import Firebase;
  2. تكوين ل FirebaseApp المشتركة المثال، عادة في التطبيق الخاص بك application:didFinishLaunchingWithOptions: الأسلوب:

    سويفت

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    ج موضوعية

    // Use Firebase library to configure APIs
    [FIRApp configure];

التسجيل للحصول على الإخطارات عن بعد

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

سويفت

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()

ج موضوعية

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[application registerForRemoteNotifications];

الوصول إلى رمز التسجيل

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

في بنفس الطريقة التي دائرة الرقابة الداخلية عادة ما توفر جهاز ابنس استراتيجية الحد رمزية على بدء التطبيق، يوفر FCM تسجيل رمزية عبر FIRMessagingDelegate الصورة messaging:didReceiveRegistrationToken: الأسلوب. يسترد FCM SDK رمزًا مميزًا جديدًا أو موجودًا أثناء التشغيل الأولي للتطبيق وعندما يتم تحديث الرمز المميز أو إبطاله. في جميع الحالات، SDK FCM يدعو messaging:didReceiveRegistrationToken: مع رمز صالح.

قد يتغير رمز التسجيل عندما:

  • تمت استعادة التطبيق على جهاز جديد
  • يقوم المستخدم بإلغاء تثبيت / إعادة تثبيت التطبيق
  • يمسح المستخدم بيانات التطبيق.

قم بتعيين مفوض المراسلة

للحصول على الرموز تسجيل وتنفيذ بروتوكول الرسائل مندوب ووضع FIRMessaging الصورة delegate الملكية بعد استدعاء [FIRApp configure] . على سبيل المثال، إذا مندوب طلبك يتوافق مع بروتوكول الرسائل مندوب، يمكنك تعيين مندوب في application:didFinishLaunchingWithOptions: لنفسها.

سويفت

Messaging.messaging().delegate = self

ج موضوعية

[FIRMessaging messaging].delegate = self;

إحضار رمز التسجيل الحالي

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

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

يمكنك استرداد رمز مباشرة باستخدام رمزي (إنجاز :) . يتم توفير خطأ غير فارغ إذا فشل استرداد الرمز المميز بأي شكل من الأشكال.

سويفت

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

ج موضوعية

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];

يمكنك استخدام هذه الطريقة في أي وقت للوصول إلى الرمز المميز بدلاً من تخزينه.

تحديث رمز المراقبة

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

سويفت

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
  )
  // TODO: If necessary send token to application server.
  // Note: This callback is fired at each app startup and whenever a new token is generated.
}

ج موضوعية

- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {
    NSLog(@"FCM registration token: %@", fcmToken);
    // Notify about received token.
    NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"];
    [[NSNotificationCenter defaultCenter] postNotificationName:
     @"FCMToken" object:nil userInfo:dataDict];
    // TODO: If necessary send token to application server.
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}

بدلا من ذلك، يمكنك الاستماع ل NSNotification اسمه kFIRMessagingRegistrationTokenRefreshNotification بدلا من توفير وسيلة مندوب. تحتوي خاصية الرمز المميز دائمًا على قيمة الرمز المميز الحالية.

تم تعطيل Swizzling: تعيين رمز APNs الخاص بك ورمز التسجيل المميز

إذا قمت بتعطيل طريقة swizzling ، فستحتاج إلى تعيين رمز APNs الخاص بك بشكل صريح إلى رمز تسجيل FCM. تجاوز الأساليب didRegisterForRemoteNotificationsWithDeviceToken لاسترداد ابنس استراتيجية الحد الرمز، ثم قم بتعيين FIRMessaging الصورة APNSToken الملكية:

سويفت

func application(application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  Messaging.messaging().apnsToken = deviceToken
}

ج موضوعية

// With "FirebaseAppDelegateProxyEnabled": NO
- (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [FIRMessaging messaging].APNSToken = deviceToken;
}

بعد إنشاء رمز تسجيل FCM ، يمكنك الوصول إليه والاستماع إلى أحداث التحديث باستخدام نفس الأساليب التي تم تمكين swizzling عليها.

منع التهيئة التلقائية

عندما يتم إنشاء رمز مميز لتسجيل FCM ، تقوم المكتبة بتحميل المعرف وبيانات التكوين إلى Firebase. إذا كنت ترغب في الحصول على اشتراك صريح من المستخدمين أولاً ، يمكنك منع إنشاء الرمز المميز في وقت التهيئة عن طريق تعطيل FCM. للقيام بذلك، إضافة قيمة الفوقية لديك Info.plist (ليس لديك GoogleService-Info.plist ):

FirebaseMessagingAutoInitEnabled = NO

لإعادة تمكين FCM ، يمكنك إجراء مكالمة وقت التشغيل:

سويفت

Messaging.messaging().autoInitEnabled = true

ج موضوعية

[FIRMessaging messaging].autoInitEnabled = YES;

تستمر هذه القيمة عبر عمليات إعادة تشغيل التطبيق بمجرد تعيينها.

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

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