Прежде всего, у меня нет проблем для FCM, токен firebase никогда не является нулевым при каждом вызове tokenRefreshNotification. Но после того, как я добавлю Google analytics, у меня возникла странная проблема для токена Firebase. Каждый раз, когда я выключить и включить уведомление в моих настройках приложения используетсятокен firebase имеет значение null, а токен обновляется постоянно в моем testFlight.
UIApplication.shared.registerForRemoteNotifications()
мой tokenRefreshNotification, называется непрерывно, и это не останавливает цикл, пока я не заставить закрыть приложения. Сначала мое приложение аварийно, и когда я пытаюсь проследить его с помощью NsLog, я обнаружил, что токен Firebase равен нулю. Проблема возникает только тогда, когда я использую свои приложения, установленные из TestFlight/production. Когда я пытаюсь выполнить его из моего Xcode-конструктора, токен firebase имеет значение null только один раз, но второй вызов, токен firebase существует и перестает работать.
Для Google Analytics он отлично работает, и в моем сервисе GoogleService-info.plist я установил IS_ANALYTICS_ENABLED в YES и IS_GCM_ENABLED для YES. Для другого, IS_ADS_ENABLED = YES, IS_APPINVITE_ENABLED = НЕТ, и IS_SIGNIN_ENABLED = YES
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FIRApp.configure()
NotificationCenter.default.addObserver(self, selector: #selector(self.registerNotification), name: NSNotification.Name(rawValue: "registerNotification"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.tokenRefreshNotification(_:)), name: .firInstanceIDTokenRefresh, object: nil)
setupGoogleAnalytics()
return true
}
//when firebase token is null, this function is working continously until my firebase token is exist
func tokenRefreshNotification(_ notification: Notification) {
print("token Refresh")
if FIRInstanceID.instanceID().token() == nil{
NSLog("firebase token is null")
}
if (UserDefaults.standard.object(forKey: "id") != nil) && FIRInstanceID.instanceID().token() != nil{
FIRInstanceID.instanceID().getWithHandler({ (instanceID, error) in
NSLog("instanceID: \(instanceID!)")
//save firebase token to my database, sorry i can`t show it
})
}
// Connect to FCM since connection may have failed when attempted before having a token.
connectToFcm()
}
Примечание: При первом запуске, я назвал мой RegisterForRemoteNotifications, в TestFlight версии, когда tokenRefreshNotification называется, то firebase маркер имеет нулевое значение, но второй вызов, токен firebase существует, поэтому он может остановиться. Но, когда я запускаю свое приложение из Xcode, первый вызов является успешным, потому что токен firebase не равен нулю.
<3 Я думал, что я единственный. – Warpling
Привет, объясните, зачем использовать FIRInstanceIDAPNSTokenType.unknown, но не FIRInstanceIDAPNSTokenType.prod? –
как я знаю, неизвестный тип может быть адаптируемым, его можно использовать для разработки или производства –