Использование тем с Firebase Cloud Messaging - PullRequest
0 голосов
/ 04 декабря 2018

Я настраиваю Firebase Cloud Messaging для отправки уведомлений в приложение iOS.И я хочу иметь возможность отправлять уведомления всем пользователям, которые согласились их получать.Прочитав и немного поэкспериментировав, я понимаю, что (для моего случая использования) я должен создать какую-то общую тему, а затем отправлять каждое уведомление в эту тему.У меня вопрос: как сначала создать тему, а затем как зарегистрировать (клиента) тему в моем приложении iOS Swift?

Хотя я пытался просмотреть информацию в сетипо этому я не нашел много.

Для информации использую Xcode Version 10.1, iOS 12.1 и Swift 4.2.

1 Ответ

0 голосов
/ 04 декабря 2018

Шаг 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...