برنامه مشتری Firebase Cloud Messaging را در iOS تنظیم کنید

برای برنامه های سرویس گیرنده iOS ، می توانید بارگیری اعلان و داده را تا 4000 بایت از طریق رابط APN های Firebase Cloud Messaging دریافت کنید.

برای نوشتن کد مشتری خود را در Objective-C و یا سویفت، توصیه می کنیم که شما در استفاده از API FIRMessaging . مثال شروع سریع کد نمونه برای هر دو زبان فراهم می کند.

برای فعال کردن ارسال اعلان های فشار از طریق APN ها ، به موارد زیر نیاز دارید:

  • یک کلید احراز هویت Apple Push Notification برای حساب برنامه نویس Apple شما. Firebase Cloud Messaging از این نشانه برای ارسال اعلان های فشار به برنامه شناسایی شده توسط شناسه برنامه استفاده می کند.

  • مشخصات برای تأمین آن ID برنامه با اطلاعیه های فشار را فعال کنید . همچنین ، برای آزمایش برنامه خود در حال توسعه ، به یک نمایه تأمین برای توسعه نیاز دارید تا به دستگاه های شما اجازه دهد برنامه ای را اجرا کنند که هنوز در App Store منتشر نشده است.

شما هر دو ایجاد در توسعه مرکز اپل کاربران .

چرخاندن روش در Firebase Cloud Messaging

FCM SDK روش انجام swizzling در دو حوزه کلیدی: نقشه برداری APN ها را رمز به ثبت نام FCM رمز و گرفتن تجزیه و تحلیل داده در طول پایین دست زدن پیام پاسخ به تماس . توسعه دهندگان که ترجیح می دهند به استفاده swizzling نمی توانید آن را با اضافه کردن پرچم غیر فعال کردن FirebaseAppDelegateProxyEnabled در فایل Info.plist برنامه و تنظیم آن را به NO (مقدار Boolean). مناطق مربوطه راهنماها نمونه های کدی را ارائه می دهند ، چه با روش همزن و چه بدون روش فعال.

Firebase را به پروژه iOS خود اضافه کنید

این بخش شامل وظایفی است که ممکن است در صورت فعال کردن سایر ویژگی های Firebase برای برنامه خود انجام داده باشید. برای FCM به طور خاص، شما نیاز به آپلود کلیدی APN ها احراز هویت خود را و ثبت نام برای اطلاعیه از راه دور .

پیش نیازها

  • موارد زیر را نصب کنید:

    • کد X.2 12 یا بالاتر
    • CocoaPods 1.10.0 یا بالاتر
  • اطمینان حاصل کنید که پروژه شما دارای این الزامات است:

    • پروژه شما باید iOS 10 یا بالاتر را هدف قرار دهد.
  • تنظیم یک دستگاه فیزیکی در iOS برای اجرای برنامه خود را، و تکمیل این وظایف:

    • به دست آوردن یک هشدار از طریق فشار اپل اعتبار کلید برای خود حساب اپل توسعهدهنده .
    • فعال کردن فشار اطلاعیه در Xcode متعلق به تحت برنامه> قابلیت های.

اگر شما در حال حاضر یک پروژه Xcode متعلق اند و فقط می خواهم سعی کنید از یک محصول فایربیس، شما می توانید یکی از ما را دانلود نمونه شروع سریع .

ایجاد پروژه Firebase

قبل از اینکه بتوانید Firebase را به برنامه iOS خود اضافه کنید ، باید یک پروژه Firebase ایجاد کنید تا به برنامه iOS خود متصل شوید. مشاهده درک پروژه فایربیس برای کسب اطلاعات بیشتر در مورد پروژه های فایربیس.

برنامه خود را با Firebase ثبت کنید

پس از انجام پروژه Firebase ، می توانید برنامه iOS خود را به آن اضافه کنید.

مشاهده درک پروژه فایربیس برای کسب اطلاعات بیشتر در مورد بهترین شیوه و ملاحظات برای اضافه کردن برنامه به یک پروژه فایربیس، از جمله نحوه اداره چندین انواع ساخت.

  1. رفتن به کنسول فایربیس .

  2. در مرکز صفحه مرور کلی پروژه، کلیک بر روی آیکون های iOS ( ) برای راه اندازی گردش کار راه اندازی شده است.

    اگر شما در حال حاضر یک برنامه اضافه به پروژه Firebase خود، کلیک کنید اضافه کردن برنامه برای نمایش گزینه های پلت فرم.

  3. ID بسته نرم افزاری برنامه خود را وارد کنید در iOS بسته نرم افزاری به حوزه ID.

  4. نام مستعار برنامه و فروشگاه App ID: (اختیاری) دیگر اطلاعات برنامه را وارد کنید.

  5. برنامه ثبت نام کلیک کنید.

یک فایل پیکربندی Firebase اضافه کنید

  1. برای به دست آوردن فایل پیکربندی فایربیس خود را IOS (کلیک کنید دانلود GoogleService-Info.plist GoogleService-Info.plist ).

  2. فایل پیکربندی خود را به ریشه پروژه Xcode خود منتقل کنید. در صورت درخواست ، انتخاب کنید تا فایل پیکربندی به همه اهداف اضافه شود.

اگر شما شناسه بسته نرم افزاری متعدد در پروژه خود را، شما باید هر ID بسته نرم افزاری با یک برنامه ثبت نام در کنسول فایربیس به طوری که هر برنامه می تواند خود را داشته مرتبط GoogleService-Info.plist فایل.

SDK های Firebase را به برنامه خود اضافه کنید

ما توصیه می کنیم با استفاده از CocoaPods به نصب کتابخانه فایربیس. با این حال، اگر شما ترجیح می CocoaPods استفاده نمی کند، شما می توانید قاب های SDK به طور مستقیم ادغام و یا استفاده از سویفت بسته بندی شده مدیریت به جای.

آیا شما استفاده از یکی از نمونه شروع سریع ؟ این پروژه Xcode و Podfile (با غلاف) در حال حاضر در حال حاضر، اما شما هنوز هم نیاز به اضافه کردن فایل پیکربندی Firebase خود و نصب غلاف.

  1. اگر قبلاً فایل Podfile ندارید ایجاد کنید:

    cd your-project-directory
    pod init
  2. به Podfile خود ، غلاف های Firebase را که می خواهید در برنامه خود استفاده کنید ، اضافه کنید.

    شما می توانید هر یک از اضافه محصولات فایربیس پشتیبانی به برنامه iOS خود را.

    برای یک تجربه بهینه با Firebase ابر پیام، توصیه می کنیم فعال کردن Google Analytics به در پروژه شما. همچنین ، به عنوان بخشی از راه اندازی Analytics ، باید Firebase SDK for Analytics را به برنامه خود اضافه کنید.

    تجزیه و تحلیل فعال است

    # 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'

    اطلاعات بیشتر در مورد جشنواره آمستردام، در سطح شناسه دستگاه تبلیغاتی، در اپل بدانید حریم خصوصی کاربر و داده ها استفاده کنید و از نرم افزار ردیابی شفافیت اسناد و مدارک.

    تجزیه و تحلیل فعال نیست

    # Add the pod for Firebase Cloud Messaging
    pod 'Firebase/Messaging'
  3. نصب غلاف، پس از آن خود را باز .xcworkspace فایل که این طرح در Xcode متعلق به:

    pod install
    open your-project.xcworkspace

کلید احراز هویت APN خود را بارگذاری کنید

کلید احراز هویت APN خود را در Firebase بارگذاری کنید. اگر شما در حال حاضر یک کلید APN ها احراز هویت دارند، مطمئن شوید که به ایجاد یک در توسعه مرکز اپل کاربران .

  1. در داخل پروژه خود را در فایربیس کنسول، را انتخاب کنید آیکون چرخ دنده، تنظیمات پروژه را انتخاب کنید، و سپس برگه ابر پیام انتخاب کنید.

  2. در کلید احراز هویت APN ها تحت پیکربندی برنامه های iOS، کلیک بر روی دکمه آپلود.

  3. مرور به محل که در آن کلید خود را نجات داد، آن را انتخاب کنید، و روی Open کلیک کنید. اضافه کردن شماره شناسایی کلید برای کلید (موجود در توسعه مرکز اپل کاربران ) و آپلود را کلیک کنید.

ابتدا Firebase را در برنامه خود فعال کنید

شما باید کد اولیه Firebase را به برنامه خود اضافه کنید. ماژول Firebase را وارد کنید و یک نمونه مشترک را مطابق شکل پیکربندی کنید:

  1. واردات ماژول فایربیس خود را 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 در هنگام راه اندازی برنامه یک کد ثبت برای نمونه برنامه مشتری ایجاد می کند. مشابه توکن دستگاه APN ، این توکن به شما امکان می دهد اعلان های هدفمند را به هر نمونه خاصی از برنامه خود ارسال کنید.

در راه همان است که در iOS به طور معمول ارائه یک دستگاه APN ها نشانه در شروع برنامه 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 غیرفعال شد: نگاشت کد APN ها و رمز ثبت نام شما

اگر روش جابجایی را غیرفعال کرده اید ، باید به طور صریح توکن APN خود را به رمز ثبت FCM نگاشت کنید. نادیده گرفتن روش didRegisterForRemoteNotificationsWithDeviceToken برای بازیابی APN ها رمز، و پس از آن مجموعه 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 خود را راه اندازی کردید ، آماده اید که مدیریت پیام و سایر رفتارهای پیشرفته تر را به برنامه خود اضافه کنید. برای اطلاعات بیشتر به این راهنماها مراجعه کنید: