Мое приложение для iOS работало до тех пор, пока я не обновил Xcode (10.2.1) до последней версии и не обновил модули с помощью «обновления модуля». Ранее я использовал Xcode 9.4.1 и swift 3. Я сделал обновление, потому что не мог загрузить в appstore с этой версией Xcode.
Остальные функции работают нормально (включая проверку подлинности телефона с помощью firebase), но все функции базы данных «Наблюдать» firebase никогда не срабатывают. Он успешно строится, ошибки не отображаются.
Я пытался безуспешно:
-Скачать файл plist из firebase.
- Установить правила базы данных в true для чтения и записи.
-Настройка цели развертывания до 11.0 и платформы podFile: ios, '11 .0 '
podFile:
platform :ios, '12.0'
target 'appname' do
use_frameworks!
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Storage'
pod 'SwiftyStoreKit'
pod 'Onboard'
pod 'SDWebImage'
pod 'IQKeyboardManagerSwift'
end
Firebase инициализируется в AppDelegate - didFinishLaunchingWithOptions:
FirebaseApp.configure()
До этого все работает как положено:
Auth.auth().signIn(with: credential) { (user,error) in
if error != nil {
print(error)
} else {
print(phone number: \(String(describing: user?.user.phoneNumber))")//this is successfully printed
let userInfo = user?.user.providerData[0]
print(Provider ID: \(String(describing: userInfo?.providerID))")//this is successfully printed
if let user = Auth.auth().currentUser {
let uid = user.uid
let ref = Database.database().reference()
ref.child("users").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild(uid) {
print("user already exists")//this never gets printed
} else {
let values: [String: AnyObject] = ["phoneNumber": user.phoneNumber as AnyObject]
let userRef = ref.child("users").child(uid)
userRef.updateChildValues(values, withCompletionBlock: { (err,ref) in//user never gets created in database but it is created in firebase
if err != nil {
print(err)
return
}
})
}
let tabBarController = CustomTabBarController()//this never gets executed
present(tabBarController, animated: true)
})
}
}
}