Шаг 1: Настройка Firebase
Если вы еще не добавили Firebase в свой проект, все это задокументировано здесь: https://firebase.google.com/docs/ios/setup
Вам потребуетсяначать настройку Firebase.Для моего проекта я запустил настройку в AppDelegate при запуске приложения.
class AppDelegate: UIResponder, UIApplicationDelegate, MessagingDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
Messaging.messaging().delegate = self
...
}
...
}
Шаг 2. Запрос авторизации
Предполагается, что у вас есть все ключи аутентификации APN /Сертификаты, настроенные на вашем портале Apple Developer Portal и в настройках Firebase Cloud Messaging,
https://developer.apple.com/account/ios/certificate/ https://console.firebase.google.com/u/0/project/FIREBASE_PROJECT_NAME/settings/cloudmessaging/ios:APP_BUNDLE_ID
Далее вам потребуется запросить авторизацию для push-уведомлений на устройстве.Я поместил это в один из первых UIViewControllers моего проекта.
class FirstViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound], completionHandler: { (success, error) in
guard success else { return }
UIApplication.shared.registerForRemoteNotifications()
})
}
}
Шаг 3: Маркер устройства
После регистрации для удаленного уведомления на шаге 2 с:
UIApplication.shared.registerForRemoteNotifications()
Вам потребуется реализовать эту функцию делегата в вашем AppDelegate:
class AppDelegate: UIResponder, UIApplicationDelegate, MessagingDelegate {
...
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
}
...
}
Обратите внимание, что полученный deviceToken находится в NSData, а требуемый apbToken Firebase находится в String.
Шаг 4: Подписка на тему
Помните ссылку на делегат, которую мы установили для AppDelegate на шаге 1?
Messaging.messaging().delegate = self
Вам потребуется реализоватьего функция делегата, позволяющая приложению узнать, что оно Firebase действительно получило токен и готово подписаться на тему.
class AppDelegate: UIResponder, UIApplicationDelegate, MessagingDelegate {
...
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
Messaging.messaging().subscribe(toTopic: "/topics/example")
}
...
}
Шаг 5: Проверка
Один простой способ проверить, успешно ли подписано ваше приложение на тему, - отправить push-уведомление через консоль Firebase.
https://console.firebase.google.com/u/0/project/FIREBASE_PROJECT_NAME/notification