Отправьте тестовое сообщение в фоновое приложение Apple.

Чтобы начать работу с FCM , создайте простейший сценарий использования: отправка тестового уведомления из компоновщика уведомлений на устройство разработки, когда приложение работает в фоновом режиме. На этой странице перечислены все необходимые шаги, от настройки до проверки. Возможно, вы уже выполнили их, если настроили клиентское приложение Apple для FCM .

Добавьте Firebase в свой проект Apple

В этом разделе рассматриваются задачи, которые вы, возможно, выполнили, если уже включили другие функции Firebase в своём приложении. В частности, для FCM вам потребуется загрузить ключ аутентификации APNs и зарегистрироваться для получения удалённых уведомлений .

Предпосылки

  • Установите следующее:

    • Xcode 16.2 или более поздняя версия
  • Убедитесь, что ваш проект соответствует следующим требованиям:

    • Ваш проект должен быть ориентирован на эти версии платформ или более поздние:
      • iOS 13
      • macOS 10.15
      • tvOS 13
      • watchOS 7
  • Настройте физическое устройство Apple для запуска вашего приложения и выполните следующие задачи:

Если у вас еще нет проекта Xcode и вы просто хотите опробовать продукт Firebase, вы можете загрузить один из наших примеров быстрого старта .

Создать проект Firebase

Прежде чем добавить Firebase в приложение Apple, необходимо создать проект Firebase для подключения к нему. Подробнее о проектах Firebase можно узнать в разделе «Понимание проектов Firebase».

Зарегистрируйте свое приложение в Firebase

Чтобы использовать Firebase в приложении Apple, необходимо зарегистрировать приложение в проекте Firebase. Регистрация приложения часто называется «добавлением» приложения в проект.

  1. Перейдите в консоль Firebase .

  2. В центре страницы обзора проекта щелкните значок iOS+, чтобы запустить рабочий процесс настройки.

    Если вы уже добавили приложение в свой проект Firebase, нажмите «Добавить приложение» , чтобы отобразить параметры платформы.

  3. Введите идентификатор пакета вашего приложения в поле идентификатора пакета .

  4. (Необязательно) Введите другую информацию о приложении: псевдоним приложения и идентификатор App Store .

  5. Нажмите «Зарегистрировать приложение» .

Добавьте файл конфигурации Firebase

  1. Нажмите «Загрузить GoogleService-Info.plist» , чтобы получить файл конфигурации Firebase вашего приложения ( GoogleService-Info.plist ).

  2. Переместите файл конфигурации в корневой каталог проекта Xcode. При появлении запроса выберите добавление файла конфигурации во все целевые объекты.

Если в вашем проекте несколько идентификаторов пакетов, необходимо связать каждый идентификатор пакета с зарегистрированным приложением в консоли Firebase , чтобы каждое приложение могло иметь свой собственный файл GoogleService-Info.plist .

Добавьте Firebase SDK в свое приложение

Используйте Swift Package Manager для установки и управления зависимостями Firebase.

  1. В Xcode откройте проект приложения и перейдите в Файл > Добавить пакеты .
  2. При появлении запроса добавьте репозиторий Firebase Apple Platforms SDK:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Выберите библиотеку Firebase Cloud Messaging .
  5. Добавьте флаг -ObjC в раздел «Другие флаги компоновщика» настроек сборки вашей целевой системы.
  6. Для оптимальной работы с Firebase Cloud Messaging рекомендуем включить Google Analytics в вашем проекте Firebase и добавить Firebase SDK для Google Analytics в приложение. Вы можете выбрать библиотеку без сбора IDFA или со сбором IDFA. См. раздел часто задаваемых вопросов о текущей организации модулей в Google Analytics для Firebase SDK .
  7. После завершения Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.

Загрузите свой ключ аутентификации APNs

Загрузите свой ключ аутентификации APNs в Firebase. Если у вас ещё нет ключа аутентификации APNs, обязательно создайте его в Центре разработчиков Apple .

  1. Внутри вашего проекта в консоли Firebase выберите значок шестеренки, выберите Настройки проекта , а затем выберите вкладку Облачные сообщения .

  2. В разделе «Ключ аутентификации APNs» в настройках приложения iOS нажмите кнопку «Загрузить» .

  3. Перейдите к месту сохранения ключа, выберите его и нажмите «Открыть» . Добавьте идентификатор ключа (доступен в Центре разработчиков Apple ) и нажмите «Загрузить» .

Инициализируйте 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
    // ...
          

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Если вы используете SwiftUI, необходимо создать делегат приложения и прикрепить его к структуре App через UIApplicationDelegateAdaptor или NSApplicationDelegateAdaptor . Также необходимо отключить подмену делегата приложения. Подробнее см. в инструкциях по 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()

Objective-C

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

[application registerForRemoteNotifications];

Доступ к регистрационному токену

Чтобы отправить сообщение на конкретное устройство, вам необходимо знать его регистрационный токен. Поскольку для выполнения этого руководства вам потребуется ввести токен в поле в редакторе уведомлений , обязательно скопируйте его или сохраните в безопасном месте после получения.

По умолчанию FCM SDK генерирует регистрационный токен для экземпляра клиентского приложения при запуске приложения. Подобно токену устройства APNs, этот токен позволяет отправлять целевые уведомления любому конкретному экземпляру вашего приложения.

Подобно тому, как платформы Apple обычно предоставляют токен устройства APNs при запуске приложения, FCM предоставляет токен регистрации через messaging:didReceiveRegistrationToken: класса FIRMessagingDelegate . FCM SDK извлекает новый или существующий токен при первом запуске приложения, а также при каждом обновлении или аннулировании токена. Во всех случаях FCM SDK вызывает messaging:didReceiveRegistrationToken: с действительным токеном.

Регистрационный токен может измениться в следующих случаях:

  • Приложение восстановлено на новом устройстве.
  • Пользователь удаляет/переустанавливает приложение
  • Пользователь очищает данные приложения.

Установить делегата обмена сообщениями

Чтобы получать регистрационные токены, реализуйте протокол делегата обмена сообщениями и установите свойство delegate FIRMessaging после вызова [FIRApp configure] . Например, если ваш делегат приложения соответствует протоколу делегата обмена сообщениями, вы можете установить делегат в application:didFinishLaunchingWithOptions: на самого себя.

Быстрый

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Получение текущего регистрационного токена

Регистрационные токены доставляются методом messaging:didReceiveRegistrationToken: Этот метод обычно вызывается один раз при запуске приложения с регистрационным токеном. Вызов этого метода — идеальный момент для:

  • Если регистрационный токен новый, отправьте его на сервер приложений.
  • Подпишите токен регистрации на темы. Это требуется только для новых подписок или в случаях, когда пользователь переустановил приложение.

Вы можете получить токен напрямую, используя token(completion:) . Если получение токена по какой-либо причине не удалось, возвращается ненулевая ошибка.

Быстрый

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

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

Objective-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. Установите и запустите приложение на целевом устройстве. На устройствах Apple вам потребуется принять запрос на разрешение получать удалённые уведомления.

  2. Убедитесь, что приложение работает в фоновом режиме на устройстве.

  3. В консоли Firebase откройте страницу «Сообщения» .

  4. Если это ваше первое сообщение, выберите Создать свою первую кампанию .

    1. Выберите Уведомления Firebase и нажмите Создать .
  5. В противном случае на вкладке «Кампании» выберите «Новая кампания» , а затем «Уведомления» .

  6. Введите текст сообщения. Остальные поля необязательны для заполнения.

  7. Выберите Отправить тестовое сообщение на правой панели.

  8. В поле Добавить регистрационный токен FCM введите регистрационный токен, полученный вами в предыдущем разделе данного руководства.

  9. Выберите Тест .

После выбора Теста целевое клиентское устройство (с приложением в фоновом режиме) должно получить уведомление.

Для получения более подробной информации о доставке сообщений в ваше приложение см. панель отчетности FCM , на которой регистрируется количество отправленных и открытых сообщений на устройствах Apple и Android, а также данные о «показах» (уведомлениях, увиденных пользователями) для приложений Android.

Следующие шаги

Чтобы выйти за рамки уведомлений и добавить в свое приложение другие, более сложные функции, см.: