【发布时间】:2019-05-29 12:05:54
【问题描述】:
我的 iOS 应用程序一直在工作,直到我更新到最新的 Xcode (10.2.1) 并使用“pod update”更新了 pod。我之前使用的是 Xcode 9.4.1 和 swift 3。我进行了更新,因为我无法使用该版本的 Xcode 上传到应用商店。
其余功能工作正常(包括 firebase 电话身份验证),但从未触发所有“观察”firebase 数据库功能。它构建成功并且没有显示错误。
我试过没有成功:
-从 firebase 下载 plist 文件。
-将数据库规则设置为 true 以进行读写。
-将部署目标设置为 11.0 和 podFile 平台:ios, '11.0'
pod 文件:
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
在 AppDelegate 中初始化的 Firebase - 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)
})
}
}
}
【问题讨论】:
-
回答这个问题真的很难,因为这个问题可能涉及很多方面;从应用程序和 Firebase 的设置方式到身份验证问题再到规则。甚至可能是互联网问题。我正在运行 XCode 10.2.1、Firebase 6.0.0,我的应用程序刚刚构建并成功运行。我们可以看看您的 podFile,以及您是如何初始化 Firebase 的吗?
-
我编辑了答案,这是正确的信息吗?我认为这不是互联网问题,当我加载旧版本的应用程序时,它可以工作,与连接到同一个 firebase 项目的另一个应用程序相同。我正在 iPhone 6 (iOS 12.3) 上进行测试。
-
podfile 和初始化看起来都正确。所以你有两个版本的应用程序,旧的可以工作,新的不能。您是否在 Firebase 控制台中将新应用添加到项目并下载了 that 应用的更新 plist?每个单独的应用都需要有自己的 plist。
-
我有 2 个应用程序,是的,1 个在我更新之前工作,但在更新后不工作,另一个在之前和之后工作。是的,它们都已添加到 firebase 项目中。
-
仍然可以运行的应用我没有更新 pod 或任何东西,因为我在应用商店中不需要它。
标签: xcode firebase firebase-realtime-database