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

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

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

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

طريقة الأزيز في Firebase Cloud Messaging

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

أضف Firebase إلى مشروع iOS

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

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

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

    • Xcode 10.3 أو أحدث
    • CocoaPods 1.4.0 أو أحدث
  • تأكد من أن مشروعك يفي بالمتطلبات التالية:

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

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

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

أنشئ مشروع Firebase

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

سجّل تطبيقك على Firebase

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

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

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

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

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

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

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

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

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

  1. انقر على تنزيل GoogleService-Info.plist للحصول على ملف تكوين GoogleService-Info.plist 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 Cloud Messaging ، نوصي بتمكين Google Analytics في مشروعك. أيضًا ، كجزء من إعداد Analytics ، تحتاج إلى إضافة Firebase SDK لـ Analytics إلى تطبيقك.

    تم تمكين Analytics

    # 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

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

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

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

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

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

تهيئة Firebase في تطبيقك

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

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

    سويفت

    import Firebase

    ج موضوعية

    @import Firebase;
  2. تكوين نسخة مشتركة من 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 رمز تسجيل لمثيل تطبيق العميل عند تشغيل التطبيق. على غرار رمز جهاز APN ، يتيح لك هذا الرمز المميز إرسال إشعارات موجهة إلى أي مثيل معين من تطبيقك.

بنفس الطريقة التي يقدم بها iOS عادةً رمز 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: تُسمى هذه الطريقة بشكل عام مرة واحدة لكل تطبيق تبدأ برمز التسجيل. عندما يتم استدعاء هذه الطريقة ، فهذا هو الوقت المثالي للقيام بما يلي:

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

يمكنك استرداد الرمز المميز مباشرة باستخدام exampleIDWithHandler:. يوفر رد الاتصال هذا InstanceIDResult الذي يحتوي على الرمز المميز. يتم توفير خطأ غير فارغ إذا فشل استرداد InstanceID بأي شكل من الأشكال.

سويفت

InstanceID.instanceID().instanceID { (result, error) in
  if let error = error {
    print("Error fetching remote instance ID: \(error)")
  } else if let result = result {
    print("Remote instance ID token: \(result.token)")
    self.instanceIDTokenMessage.text  = "Remote InstanceID token: \(result.token)"
  }
}

ج موضوعية

[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
                                                    NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Error fetching remote instance ID: %@", error);
  } else {
    NSLog(@"Remote instance ID token: %@", result.token);
    NSString* message =
      [NSString stringWithFormat:@"Remote InstanceID token: %@", result.token];
    self.instanceIDTokenMessage.text = message;
  }
}];

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

تحديث الرمز المميز للشاشة

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

سويفت

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
  print("Firebase registration token: \(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 ورمز التسجيل

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

سويفت

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

ج موضوعية

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

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

استيراد رموز APN الخاصة بالمستخدم الحالي

إذا كان لديك قاعدة مستخدمين حالية تريد تضمينها في تطبيق عميل FCM ، فاستخدم batchImport API التي يوفرها معرف المثيل. باستخدام واجهة برمجة التطبيقات هذه ، يمكنك استيراد رموز IPN الحالية لنظام التشغيل iOS بشكل مجمّع إلى FCM ، وتعيينها إلى رموز تسجيل جديدة صالحة.

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

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

FirebaseMessagingAutoInitEnabled = NO

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

سويفت

Messaging.messaging().autoInitEnabled = true

ج موضوعية

[FIRMessaging messaging].autoInitEnabled = YES;

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

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

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