2016-11-29 6 views
3

В настоящее время я пытаюсь внедрить CloudBase Firebase, следуя официальным документам Firebase.iOS: токен Firebase, возвращающий нуль

Я установил сертификаты и профили обеспечения с включенными Push Notifications. Я также установил все необходимые фреймворки (FirebaseMessaging, Firebase) с помощью CocoaPods, и они, похоже, работают нормально.

В делегате приложения я попытался инициализировать токен для обмена облачными облаками Firebase с помощью кода ниже.

let token = FIRInstanceID.instanceID().token()! 

Я также установить GCM на разрешенное и есть значение идентификатор отправителя GCM в GoogleService-Info.plist.

ошибка, что я получаю выглядит следующим образом:

2016-11-29 16:11:12.358 Firebasesample[3852:122151] Firebase automatic screen reporting is enabled. Call +[FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen class name. To disable automatic screen reporting, set the flag FirebaseAutomaticScreenReportingEnabled to NO in the Info.plist

2016-11-29 16:11:12.419: Firebase messaging not setup correctly, nil senderID. fatal error: unexpectedly found nil while unwrapping an Optional value

Заранее спасибо за любые советы/помощь.

+0

Вы назвали 'FIRApp.configure()'? – chengsam

+0

Я сделал. Прежде чем пытаться использовать Firebase Cloud Messaging, я уже включил Firebase Analytics в свое приложение, и это сработало нормально. – sabrinazuraimi

+1

Вы добавили наблюдателя для ключа 'firInstanceIDTokenRefresh' для получения наиболее обновленного токена? Вызов 'FIRInstanceID.instanceID(). Token()!' В первый раз возвращает nil. – chengsam

ответ

3

уже ответил на комментарий без реализации:

Убедитесь, что вы следуете руководство по установке на https://firebase.google.com/docs/cloud-messaging/ios/client.

В вашем didFinishLaunchingWithOptions добавьте следующий метод (после FIRApp.configure()).

NotificationCenter.default.addObserver(self, selector: #selector(tokenRefreshNotification(_:)), name: NSNotification.Name.firInstanceIDTokenRefresh, object: nil) 

Когда маркер обновляется, он будет вызывать:

func tokenRefreshNotification(_ notification: Notification) { 

    guard let token = FIRInstanceID.instanceID().token() else { 
     QL3("No firebase token, aborting registering device") 
     return nil 
    } 

    //register your token somewhere.. 
    registerToken(token) 
} 
1

Для тех, кто по-прежнему возникают проблемы на получить маркер, может быть, потому, что маркер еще не был сформирован.

В руководстве (https://firebase.google.com/docs/cloud-messaging/ios/client) Вы можете найти эту часть:

When you need the current token, retrieve it. This may return null if the token has not yet been generated.

Я надеюсь, что это помогает.

Смежные вопросы