Как и когда я могу сохранить токен пользователя APN для обмена сообщениями в Firebase? - PullRequest
0 голосов
/ 05 июня 2019

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

Я попытался сделать это в appdelegate здесь:

    // This function is added here only for debugging purposes, and can be removed if swizzling is enabled.
    // If swizzling is disabled then this function must be implemented so that the APNs token can be paired to
    // the FCM registration token.

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        print("APNs token retrieved: \(deviceToken)")
        let ref = Database.database().reference()
        ref.child("APNRegistrationToken").child((Auth.auth().currentUser?.uid)!).child("token").setValue(deviceToken)//Save the users token for use when reciving notification
        // With swizzling disabled you must set the APNs token here.
        // Messaging.messaging().apnsToken = deviceToken
    }
}

Это приводит к ошибке (учитывая, что в некоторых случаях пользователь еще не зарегистрировался, и по этой причине отсутствует currentUser.uid (как правило, я не думаю, что у меня есть доступ к uid, даже когда пользователь зарегистрировался)., в приложении делегат))

Как и где мне сохранить токен APN?

1 Ответ

0 голосов
/ 05 июня 2019

Я удивлен, что нет простых ответов, но вот как вы это делаете:

Вам нужно сохранить только в одном месте, в appdelegate:

    func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(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.
    saveTokenToFire(deviceToken: fcmToken)//Save to a chosen location in DB
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...