Чтобы начать работу с FCM , создайте простейший вариант использования: отправка тестового уведомления из Notifications composer на устройство разработки, когда приложение находится в фоновом режиме на устройстве. На этой странице перечислены все шаги для достижения этого, от настройки до проверки — она может охватывать шаги, которые вы уже выполнили, если вы настроили клиентское приложение Apple для FCM .
Добавьте Firebase в свой проект Apple
В этом разделе рассматриваются задачи, которые вы могли выполнить, если вы уже включили другие функции Firebase для своего приложения. Для FCM вам нужно будет загрузить свой ключ аутентификации APNs и зарегистрироваться для удаленных уведомлений .
Предпосылки
Установите следующее:
- Xcode 16.2 или более поздняя версия
Убедитесь, что ваш проект соответствует следующим требованиям:
- Ваш проект должен быть ориентирован на эти или более поздние версии платформы:
- iOS13
- macOS 10.15
- tvOS 13
- watchOS 7
- Ваш проект должен быть ориентирован на эти или более поздние версии платформы:
Настройте физическое устройство Apple для запуска вашего приложения и выполните следующие задачи:
- Получите ключ аутентификации push-уведомлений Apple для своей учетной записи разработчика Apple .
- Включите Push-уведомления в XCode в разделе Приложение > Возможности .
- Войдите в Firebase, используя свой аккаунт Google.
Если у вас еще нет проекта Xcode и вы просто хотите опробовать продукт Firebase, вы можете загрузить один из наших примеров быстрого старта .
Создать проект Firebase
Прежде чем вы сможете добавить Firebase в свое приложение Apple, вам нужно создать проект Firebase для подключения к вашему приложению. Посетите Understand Firebase Projects, чтобы узнать больше о проектах Firebase.
Зарегистрируйте свое приложение в Firebase
Чтобы использовать Firebase в вашем приложении Apple, вам необходимо зарегистрировать ваше приложение в вашем проекте Firebase. Регистрация вашего приложения часто называется «добавлением» вашего приложения в ваш проект.
Перейдите в консоль Firebase .
В центре страницы обзора проекта щелкните значок iOS+, чтобы запустить рабочий процесс настройки.
Если вы уже добавили приложение в свой проект Firebase, нажмите «Добавить приложение» , чтобы отобразить параметры платформы.
Введите идентификатор пакета вашего приложения в поле идентификатора пакета .
Идентификатор пакета однозначно идентифицирует приложение в экосистеме Apple.
Найдите идентификатор вашего пакета: откройте свой проект в Xcode, выберите приложение верхнего уровня в навигаторе проектов, затем выберите вкладку «Общие» .
Значение поля «Идентификатор пакета» — это идентификатор пакета (например,
com.yourcompany.yourproject
).Имейте в виду, что значение идентификатора пакета чувствительно к регистру и его нельзя изменить для этого приложения Firebase после его регистрации в вашем проекте Firebase.
(Необязательно) Введите другую информацию о приложении: псевдоним приложения и идентификатор App Store .
Псевдоним приложения : внутренний, удобный идентификатор, который виден только вам в консоли Firebase
App Store ID : используется Firebase Dynamic Links для перенаправления пользователей на страницу App Store и Google Analytics для импорта событий конверсии в Google Ads . Если у вашего приложения еще нет App Store ID, вы можете добавить его позже в настройках проекта .
Нажмите «Зарегистрировать приложение» .
Добавьте файл конфигурации Firebase
Нажмите «Загрузить GoogleService-Info.plist» , чтобы получить файл конфигурации платформ Firebase Apple (
GoogleService-Info.plist
).Файл конфигурации Firebase содержит уникальные, но не секретные идентификаторы для вашего проекта. Чтобы узнать больше об этом файле конфигурации, посетите Understand Firebase Projects .
Вы можете повторно загрузить файл конфигурации Firebase в любое время.
Убедитесь, что имя файла конфигурации не дополнено дополнительными символами, например
(2)
.
Переместите ваш файл конфигурации в корень вашего проекта Xcode. Если будет предложено, выберите добавление файла конфигурации ко всем целям.
Если в вашем проекте несколько идентификаторов пакетов, необходимо связать каждый идентификатор пакета с зарегистрированным приложением в консоли Firebase , чтобы каждое приложение могло иметь свой собственный файл GoogleService-Info.plist
.
Добавьте Firebase SDK в свое приложение
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode откройте проект приложения и перейдите в меню Файл > Добавить пакеты .
- При появлении соответствующего запроса добавьте репозиторий Firebase Apple platform SDK:
- Выберите библиотеку Firebase Cloud Messaging .
- Добавьте флаг
-ObjC
в раздел «Другие флаги компоновщика» настроек сборки вашей цели. - Для оптимального опыта работы с Firebase Cloud Messaging мы рекомендуем включить Google Analytics в вашем проекте Firebase и добавить Firebase SDK для Google Analytics в ваше приложение. Вы можете выбрать либо библиотеку без сбора IDFA, либо с сбором IDFA. Ознакомьтесь с нашими часто задаваемыми вопросами о последней организации модулей в Google Analytics для Firebase SDK .
- По завершении Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk.git
Загрузите свой ключ аутентификации APNs
Загрузите свой ключ аутентификации APNs в Firebase. Если у вас еще нет ключа аутентификации APNs, обязательно создайте его в Apple Developer Member Center .
Внутри вашего проекта в консоли Firebase выберите значок шестеренки, выберите Параметры проекта , а затем выберите вкладку Облачные сообщения .
В разделе «Ключ аутентификации APNs» в разделе «Конфигурация приложения iOS» нажмите кнопку «Загрузить» .
Перейдите к месту, где вы сохранили свой ключ, выберите его и нажмите «Открыть» . Добавьте идентификатор ключа (доступен в Apple Developer Member Center ) и нажмите «Загрузить» .
Инициализируйте Firebase в вашем приложении
Вам нужно будет добавить код инициализации Firebase в ваше приложение. Импортируйте модуль Firebase и настройте общий экземпляр, как показано:
- Импортируйте модуль
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; // ...
- Настройте общий экземпляр
FirebaseApp
в методе делегата приложения applicationapplication(_: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];
- Если вы используете SwiftUI, вы должны создать делегат приложения и прикрепить его к структуре
App
черезUIApplicationDelegateAdaptor
илиNSApplicationDelegateAdaptor
. Вы также должны отключить 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()
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 предоставляет токен регистрации через метод FIRMessagingDelegate
's messaging:didReceiveRegistrationToken:
:. 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
вместо предоставления метода делегата. Свойство токена всегда имеет текущее значение токена.
Отправить уведомление
Установите и запустите приложение на целевом устройстве. На устройствах Apple вам нужно будет принять запрос на разрешение на получение удаленных уведомлений.
Убедитесь, что приложение работает в фоновом режиме на устройстве.
В консоли Firebase откройте страницу «Сообщения» .
Если это ваше первое сообщение, выберите Создать свою первую кампанию .
- Выберите Уведомления Firebase и нажмите Создать .
В противном случае на вкладке «Кампании» выберите «Новая кампания» , а затем «Уведомления» .
Введите текст сообщения. Все остальные поля необязательны.
Выберите Отправить тестовое сообщение на правой панели.
В поле Добавить токен регистрации FCM введите токен регистрации, полученный вами в предыдущем разделе данного руководства.
Выберите Тест .
После выбора Теста целевое клиентское устройство (с приложением в фоновом режиме) должно получить уведомление.
Для получения более подробной информации о доставке сообщений в ваше приложение см. панель отчетов FCM , которая регистрирует количество отправленных и открытых сообщений на устройствах Apple и Android, а также данные о «показах» (уведомлениях, просмотренных пользователями) для приложений Android.
Следующие шаги
Чтобы выйти за рамки уведомлений и добавить в свое приложение другие, более сложные функции, см.: