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

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

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

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

Предварительные условия

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

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

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

    • Получите ключ аутентификации Apple Push Notification для своей учетной записи Apple Developer .
    • Включите push-уведомления в XCode в разделе «Приложение» > «Возможности» .

Если у вас еще нет проекта 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 Apple ( GoogleService-Info.plist ).

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

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

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

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

  1. В Xcode, открыв проект приложения, выберите «Файл» > «Добавить пакеты» .
  2. При появлении запроса добавьте репозиторий Firebase SDK для платформ Apple:
  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.
  7. По завершении Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.

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

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

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

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

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

Инициализируйте 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, вам необходимо создать делегат приложения и прикрепить его к структуре вашего 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()

Цель-C

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

[application registerForRemoteNotifications];

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

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

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

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

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

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

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

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

Быстрый

Messaging.messaging().delegate = self

Цель-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)"
  }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

,

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

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

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

Предварительные условия

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

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

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

    • Получите ключ аутентификации Apple Push Notification для своей учетной записи Apple Developer .
    • Включите push-уведомления в XCode в разделе «Приложение» > «Возможности» .

Если у вас еще нет проекта 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 Apple ( GoogleService-Info.plist ).

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

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

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

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

  1. В Xcode, открыв проект приложения, выберите «Файл» > «Добавить пакеты» .
  2. При появлении запроса добавьте репозиторий Firebase SDK для платформ Apple:
  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.
  7. По завершении Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.

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

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

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

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

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

Инициализируйте 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, вам необходимо создать делегат приложения и прикрепить его к структуре вашего 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()

Цель-C

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

[application registerForRemoteNotifications];

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

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

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

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

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

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

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

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

Быстрый

Messaging.messaging().delegate = self

Цель-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)"
  }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

,

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

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

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

Предварительные условия

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

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

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

    • Получите ключ аутентификации Apple Push Notification для своей учетной записи Apple Developer .
    • Включите push-уведомления в XCode в разделе «Приложение» > «Возможности» .

Если у вас еще нет проекта 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 Apple ( GoogleService-Info.plist ).

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

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

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

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

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

Загрузите ключ аутентификации APNS

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

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

  2. В клавише аутентификации APNS в конфигурации приложения iOS нажмите кнопку «Загрузить» .

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

Инициализировать пожарную базу в вашем приложении

Вам нужно добавить код инициализации 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, вы должны создать делегат приложения и прикрепить его к своему App через UIApplicationDelegateAdaptor или NSApplicationDelegateAdaptor . Вы также должны отключить приложение Degate 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];

Получить доступ к токеном регистрации

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

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

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

Токен регистрации может измениться, когда:

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

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

Чтобы получить регистрационные токены, реализуйте протокол делегатов обмена сообщениями и установите свойство delegate FIRMessaging после вызова [FIRApp configure] . Например, если ваше делегат вашего приложения соответствует протоколу делегатов обмена сообщениями, вы можете установить делегат на 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 , а не поставлять метод делегата. Свойство токена всегда имеет текущее значение токена.

Отправить уведомление

  1. Установите и запустите приложение на целевом устройстве. На устройствах Apple вам нужно принять запрос на разрешение на получение удаленных уведомлений.

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

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

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

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

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

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

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

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

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

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

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

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

,

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

Добавьте Firebase в свой Apple Project

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

Предварительные условия

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

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

    • Ваш проект должен нацелиться на эти версии платформы или позже:
      • iOS 13
      • macOS 10.15
      • TVOS 13
      • Watchos 7
  • Установите физическое устройство Apple для запуска вашего приложения и выполнить эти задачи:

    • Получите ключ аутентификации Apple Push Push для вашей учетной записи Apple Developer .
    • Включите уведомления Push в XCode в разделе «Приложение»> «Возможности» .

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

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

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

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

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

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

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

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

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

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

  5. Нажмите приложение регистрации .

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

  1. Нажмите скачать Googleservice-info.plist , чтобы получить файл конфигурации Apple Apple Firebase ( GoogleService-Info.plist ).

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

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

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

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

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

Загрузите ключ аутентификации APNS

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

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

  2. В клавише аутентификации APNS в конфигурации приложения iOS нажмите кнопку «Загрузить» .

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

Инициализировать пожарную базу в вашем приложении

Вам нужно добавить код инициализации 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, вы должны создать делегат приложения и прикрепить его к своему App через UIApplicationDelegateAdaptor или NSApplicationDelegateAdaptor . Вы также должны отключить приложение Degate 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];

Получить доступ к токеном регистрации

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

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

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

Токен регистрации может измениться, когда:

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

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

Чтобы получить регистрационные токены, реализуйте протокол делегатов обмена сообщениями и установите свойство delegate FIRMessaging после вызова [FIRApp configure] . Например, если ваше делегат вашего приложения соответствует протоколу делегатов обмена сообщениями, вы можете установить делегат на 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 , а не поставлять метод делегата. Свойство токена всегда имеет текущее значение токена.

Отправить уведомление

  1. Установите и запустите приложение на целевом устройстве. На устройствах Apple вам нужно принять запрос на разрешение на получение удаленных уведомлений.

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

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

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

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

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

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

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

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

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

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

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

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