Чтобы начать работу с FCM , создайте простейший сценарий использования: отправка тестового уведомления из компоновщика уведомлений на устройство разработки, когда приложение работает в фоновом режиме. На этой странице перечислены все необходимые шаги, от настройки до проверки. Возможно, вы уже выполнили их, если настроили клиентское приложение Apple для FCM .
Добавьте Firebase в свой проект Apple
В этом разделе рассматриваются задачи, которые вы, возможно, выполнили, если уже включили другие функции Firebase в своём приложении. В частности, для FCM вам потребуется загрузить ключ аутентификации APNs и зарегистрироваться для получения удалённых уведомлений .
Предпосылки
Установите следующее:
- Xcode 16.2 или более поздняя версия
Убедитесь, что ваш проект соответствует следующим требованиям:
- Ваш проект должен быть ориентирован на эти версии платформ или более поздние:
- iOS 13
- macOS 10.15
- tvOS 13
- watchOS 7
- Ваш проект должен быть ориентирован на эти версии платформ или более поздние:
Настройте физическое устройство Apple для запуска вашего приложения и выполните следующие задачи:
- Получите ключ аутентификации push-уведомлений Apple для своей учетной записи разработчика Apple .
- Включите Push-уведомления в XCode в разделе Приложение > Возможности .
- Войдите в Firebase, используя свою учетную запись Google.
Если у вас еще нет проекта Xcode и вы просто хотите опробовать продукт Firebase, вы можете загрузить один из наших примеров быстрого старта .
Создать проект Firebase
Прежде чем добавить Firebase в приложение Apple, необходимо создать проект Firebase для подключения к нему. Подробнее о проектах Firebase можно узнать в разделе «Понимание проектов Firebase».
Зарегистрируйте свое приложение в Firebase
Чтобы использовать Firebase в приложении Apple, необходимо зарегистрировать приложение в проекте Firebase. Регистрация приложения часто называется «добавлением» приложения в проект.
Перейдите в консоль Firebase .
В центре страницы обзора проекта щелкните значок iOS+, чтобы запустить рабочий процесс настройки.
Если вы уже добавили приложение в свой проект Firebase, нажмите «Добавить приложение» , чтобы отобразить параметры платформы.
Введите идентификатор пакета вашего приложения в поле идентификатора пакета .
Идентификатор пакета однозначно идентифицирует приложение в экосистеме Apple.
Найдите идентификатор своего пакета: откройте свой проект в Xcode, выберите приложение верхнего уровня в навигаторе проекта, затем выберите вкладку Общие .
Значение поля «Идентификатор пакета» — это идентификатор пакета (например,
com.yourcompany.yourproject
).Имейте в виду, что значение идентификатора пакета чувствительно к регистру и его нельзя изменить для этого приложения Firebase после его регистрации в вашем проекте Firebase.
(Необязательно) Введите другую информацию о приложении: псевдоним приложения и идентификатор App Store .
Псевдоним приложения : внутренний, удобный идентификатор, который виден только вам в консоли Firebase
Идентификатор App Store : используется Firebase Dynamic Links для перенаправления пользователей на вашу страницу App Store , а также Google Analytics для импорта событий конверсии в Google Ads . Если у вашего приложения ещё нет идентификатора App Store, вы можете добавить его позже в настройках проекта .
Нажмите «Зарегистрировать приложение» .
Добавьте файл конфигурации Firebase
Нажмите «Загрузить GoogleService-Info.plist» , чтобы получить файл конфигурации Firebase вашего приложения (
GoogleService-Info.plist
).Файл конфигурации Firebase содержит уникальные, но не секретные идентификаторы вашего проекта и приложения. Подробнее об этом файле конфигурации см. в статье «Подробнее о проектах Firebase» .
Вы можете снова загрузить файл конфигурации Firebase в любое время.
Убедитесь, что к имени файла конфигурации не добавлены дополнительные символы, например
(2)
.
Переместите файл конфигурации в корневой каталог проекта Xcode. При появлении запроса выберите добавление файла конфигурации во все целевые объекты.
Если в вашем проекте несколько идентификаторов пакетов, необходимо связать каждый идентификатор пакета с зарегистрированным приложением в консоли Firebase , чтобы каждое приложение могло иметь свой собственный файл GoogleService-Info.plist
.
Добавьте Firebase SDK в свое приложение
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode откройте проект приложения и перейдите в Файл > Добавить пакеты .
- При появлении запроса добавьте репозиторий Firebase Apple Platforms 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 .
Внутри вашего проекта в консоли Firebase выберите значок шестеренки, выберите Настройки проекта , а затем выберите вкладку Облачные сообщения .
В разделе «Ключ аутентификации APNs» в настройках приложения iOS нажмите кнопку «Загрузить» .
Перейдите к месту сохранения ключа, выберите его и нажмите «Открыть» . Добавьте идентификатор ключа (доступен в Центре разработчиков Apple ) и нажмите «Загрузить» .
Инициализируйте 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
в методе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];
- Если вы используете 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 всегда содержит текущее значение токена.
Отправить уведомление
Установите и запустите приложение на целевом устройстве. На устройствах Apple вам потребуется принять запрос на разрешение получать удалённые уведомления.
Убедитесь, что приложение работает в фоновом режиме на устройстве.
В консоли Firebase откройте страницу «Сообщения» .
Если это ваше первое сообщение, выберите Создать свою первую кампанию .
- Выберите Уведомления Firebase и нажмите Создать .
В противном случае на вкладке «Кампании» выберите «Новая кампания» , а затем «Уведомления» .
Введите текст сообщения. Остальные поля необязательны для заполнения.
Выберите Отправить тестовое сообщение на правой панели.
В поле Добавить регистрационный токен FCM введите регистрационный токен, полученный вами в предыдущем разделе данного руководства.
Выберите Тест .
После выбора Теста целевое клиентское устройство (с приложением в фоновом режиме) должно получить уведомление.
Для получения более подробной информации о доставке сообщений в ваше приложение см. панель отчетности FCM , на которой регистрируется количество отправленных и открытых сообщений на устройствах Apple и Android, а также данные о «показах» (уведомлениях, увиденных пользователями) для приложений Android.
Следующие шаги
Чтобы выйти за рамки уведомлений и добавить в свое приложение другие, более сложные функции, см.: