یک پیام آزمایشی به یک برنامه اپل پس‌زمینه ارسال کنید

برای شروع کار با FCM ، ساده‌ترین مورد استفاده را بسازید: ارسال یک پیام اعلان آزمایشی از سازنده Notifications به یک دستگاه توسعه‌دهنده زمانی که برنامه در پس‌زمینه دستگاه است. در این صفحه تمام مراحل برای رسیدن به این هدف، از راه‌اندازی تا تأیید، فهرست می‌شود - اگر یک برنامه مشتری Apple برای FCM راه‌اندازی کرده باشید، ممکن است مراحلی را که قبلاً انجام داده‌اید پوشش دهد.

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

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

پیش نیازها

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

    • Xcode 15.2 یا بالاتر
  • اطمینان حاصل کنید که پروژه شما این شرایط را برآورده می کند:

    • پروژه شما باید این نسخه های پلتفرم یا جدیدتر را هدف قرار دهد:
      • iOS 13
      • macOS 10.15
      • tvOS 13
      • watchOS 7
  • یک دستگاه اپل فیزیکی را برای اجرای برنامه خود تنظیم کنید و این کارها را کامل کنید:

    • یک کلید تأیید اعتبار Apple Push Notification برای حساب Apple Developer خود دریافت کنید.
    • Push Notifications را در XCode در قسمت App > Capabilities فعال کنید.

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

یک پروژه Firebase ایجاد کنید

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

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

برای استفاده از Firebase در برنامه Apple خود، باید برنامه خود را در پروژه Firebase خود ثبت کنید. ثبت برنامه شما اغلب "افزودن" برنامه شما به پروژه شما نامیده می شود.

  1. به کنسول Firebase بروید.

  2. در مرکز صفحه نمای کلی پروژه، روی نماد iOS+ کلیک کنید تا گردش کار راه اندازی شود.

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

  3. شناسه بسته نرم افزاری خود را در قسمت شناسه بسته وارد کنید.

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

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

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

  1. برای دریافت فایل پیکربندی پلتفرم های اپل Firebase ( GoogleService-Info.plist ) روی Download GoogleService-Info.plist کلیک کنید.

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

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

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

برای نصب و مدیریت وابستگی های Firebase از Swift Package Manager استفاده کنید.

  1. در Xcode، با باز بودن پروژه برنامه، به File > Add Packages بروید.
  2. هنگامی که از شما خواسته شد، مخزن SDK پلتفرم های Apple Firebase را اضافه کنید:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. کتابخانه Firebase Cloud Messaging را انتخاب کنید.
  5. پرچم -ObjC را به بخش Other Linker Flags تنظیمات ساخت هدف خود اضافه کنید.
  6. برای تجربه بهینه با Firebase Cloud Messaging ، توصیه می‌کنیم Google Analytics در پروژه Firebase خود فعال کنید و Firebase SDK برای Google Analytics را به برنامه خود اضافه کنید. شما می توانید کتابخانه را بدون مجموعه IDFA یا با مجموعه IDFA انتخاب کنید.
  7. پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگی های شما در پس زمینه می کند.

کلید احراز هویت APN خود را آپلود کنید

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

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

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

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

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

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

  1. ماژول FirebaseCore را در UIApplicationDelegate خود و همچنین هر ماژول Firebase دیگری که نماینده برنامه شما استفاده می‌کند، وارد کنید. به عنوان مثال، برای استفاده از Cloud Firestore و Authentication :

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    سویفت

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    هدف-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. یک نمونه اشتراک‌گذاری شده FirebaseApp در روش application(_:didFinishLaunchingWithOptions:) پیکربندی کنید:

    SwiftUI

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

    سویفت

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

    هدف-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. اگر از SwiftUI استفاده می‌کنید، باید یک نماینده برنامه ایجاد کنید و آن را از طریق UIApplicationDelegateAdaptor یا NSApplicationDelegateAdaptor به ساختار App خود متصل کنید. همچنین باید swizzling نمایندگی برنامه را غیرفعال کنید. برای اطلاعات بیشتر، دستورالعمل های SwiftUI را ببینید.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

برای اطلاعیه از راه دور ثبت نام کنید

در هنگام راه اندازی یا در نقطه مورد نظر در جریان برنامه خود، برنامه خود را برای اعلان های راه دور ثبت کنید. مطابق شکل registerForRemoteNotifications تماس بگیرید:

سویفت

UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

هدف-C

[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
    UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
    requestAuthorizationWithOptions:authOptions
    completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // ...
    }];

[application registerForRemoteNotifications];

به رمز ثبت نام دسترسی پیدا کنید

برای ارسال پیام به یک دستگاه خاص، باید رمز ثبت نام آن دستگاه را بدانید. از آنجایی که برای تکمیل این آموزش باید توکن را در قسمتی در Notifications composer وارد کنید، پس از بازیابی آن حتماً آن را کپی کنید یا به طور ایمن ذخیره کنید.

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

همانطور که پلتفرم‌های اپل معمولاً یک توکن دستگاه APN را در شروع برنامه ارائه می‌کنند، FCM یک نشانه ثبت نام را از طریق روش messaging:didReceiveRegistrationToken: FIRMessagingDelegate ارائه می‌کند. FCM SDK یک توکن جدید یا موجود را در طول راه‌اندازی اولیه برنامه و هر زمان که توکن به‌روزرسانی یا باطل شود، بازیابی می‌کند. در همه موارد، FCM SDK messaging:didReceiveRegistrationToken: با یک توکن معتبر فراخوانی می‌کند.

نشانه ثبت نام ممکن است زمانی تغییر کند که:

  • برنامه در یک دستگاه جدید بازیابی می شود
  • کاربر برنامه را حذف/نصب مجدد می کند
  • کاربر داده های برنامه را پاک می کند.

نماینده پیام رسانی را تنظیم کنید

برای دریافت نشانه‌های ثبت‌نام، پروتکل ارسال پیام را پیاده‌سازی کنید و پس از فراخوانی [FIRApp configure] ویژگی delegate FIRMessaging را تنظیم کنید. برای مثال، اگر نماینده برنامه شما با پروتکل نماینده پیام‌رسانی مطابقت دارد، می‌توانید نماینده را روی application:didFinishLaunchingWithOptions: روی خودش تنظیم کنید.

سویفت

Messaging.messaging().delegate = self

هدف-C

[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)"
  }
}

هدف-C

[[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.
}

هدف-C

- (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 گوش دهید. ویژگی token همیشه دارای مقدار رمز فعلی است.

پیام اعلان ارسال کنید

  1. برنامه را روی دستگاه مورد نظر نصب و اجرا کنید. در دستگاه‌های اپل، باید درخواست مجوز برای دریافت اعلان‌های از راه دور را بپذیرید.

  2. مطمئن شوید که برنامه در پس‌زمینه دستگاه است.

  3. در کنسول Firebase ، صفحه پیام‌رسانی را باز کنید.

  4. اگر این اولین پیام شماست، ایجاد اولین کمپین خود را انتخاب کنید.

    1. پیام‌های اعلان Firebase را انتخاب کنید و ایجاد را انتخاب کنید.
  5. در غیر این صورت، در تب Campaigns ، کمپین جدید و سپس Notifications را انتخاب کنید.

  6. متن پیام را وارد کنید تمام فیلدهای دیگر اختیاری هستند.

  7. از قسمت سمت راست گزینه Send test message را انتخاب کنید.

  8. در فیلد با عنوان افزودن نشانه ثبت FCM ، نشانه ثبت نامی را که در بخش قبلی این راهنما به دست آورده اید، وارد کنید.

  9. تست را انتخاب کنید.

پس از انتخاب تست ، دستگاه مشتری مورد نظر (با برنامه در پس‌زمینه) باید اعلان را دریافت کند.

برای اطلاعات بیشتر در مورد تحویل پیام به برنامه خود، به داشبورد گزارش FCM مراجعه کنید، که تعداد پیام‌های ارسال شده و باز شده در دستگاه‌های Apple و Android را به همراه داده‌های «impressions» (اعلان‌هایی که کاربران مشاهده می‌کنند) را برای برنامه‌های Android ثبت می‌کند.

مراحل بعدی

برای فراتر رفتن از پیام‌های اعلان و افزودن سایر رفتارهای پیشرفته‌تر به برنامه خود، ببینید: