Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

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

لكتابة رمز العميل الخاص بك في Objective-C أو Swift ، نوصي باستخدام FIRMessaging API . يوفر مثال البدء السريع نموذج التعليمات البرمجية لكلتا اللغتين.

طريقة swizzling في Firebase Cloud Messaging

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

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

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

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

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

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

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

    • احصل على مفتاح مصادقة Apple Push Notification لحساب Apple Developer الخاص بك.
    • تمكين دفع الإخطارات في XCode ضمن التطبيق> القدرات .

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

أنشئ مشروع Firebase

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

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

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

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

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

  2. في وسط صفحة نظرة عامة على المشروع ، انقر فوق أيقونة iOS ( ) لبدء سير عمل الإعداد.

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

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

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

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

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

  1. انقر فوق تنزيل GoogleService-Info.plist للحصول على ملف تهيئة GoogleService-Info.plist iOS ( GoogleService-Info.plist ).

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

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

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

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

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

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

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

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

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

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

    # Add the Firebase pod for Google Analytics
    pod 'Firebase/Analytics'
    # Add the pod for Firebase Cloud Messaging pod 'Firebase/Messaging'

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

    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'
  3. ثبّت .xcworkspace ، ثم افتح ملف .xcworkspace لترى المشروع في Xcode:

    pod install
    open your-project.xcworkspace

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

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

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

  2. في مفتاح مصادقة APN ضمن تكوين تطبيق iOS ، انقر فوق الزر تحميل .

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

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

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

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

    سويفت

    import Firebase

    ج موضوعية

    @import Firebase;
  2. قم FirebaseApp مثيل FirebaseApp المشترك ، عادةً في تطبيق تطبيقك application:didFinishLaunchingWithOptions: method:

    سويفت

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

    ج موضوعية

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

التسجيل في الإخطارات عن بعد

سواء عند بدء التشغيل ، أو عند النقطة المطلوبة في تدفق التطبيق الخاص بك ، قم بتسجيل التطبيق الخاص بك للإشعارات عن بعد. registerForRemoteNotifications المكالمات 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 رمزًا مميزًا جديدًا أو موجودًا أثناء التشغيل الأولي للتطبيق وعندما يتم تحديث الرمز المميز أو إبطاله. في جميع الحالات ، تستدعي FCM SDK 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 الخاصة بـ 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 الخاص بك ، فأنت جاهز لإضافة معالجة الرسائل وسلوكيات أخرى أكثر تقدمًا إلى تطبيقك راجع هذه الأدلة لمزيد من المعلومات: