观察更新到 xcode 10.2.1 后数据库功能不起作用

Posted

技术标签:

【中文标题】观察更新到 xcode 10.2.1 后数据库功能不起作用【英文标题】:Observe database functions not working after updating to xcode 10.2.1 【发布时间】: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 或任何东西,因为我在应用商店中不需要它。 【参考方案1】:

问题是 cocoapods 版本,我有 1.5.3。一旦我更新到 1.7.2,一切都会按预期工作。

【讨论】:

以上是关于观察更新到 xcode 10.2.1 后数据库功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章

更新 Xcode 12 后如何修复操作按钮?

Xcode 10 签名错误:Frameworks/libswiftsimd.dylib:代码对象根本没有签名

Xcode 项目更新到 Xcode 到 6.3 后显示错误

xCode 8 会自动更新 NSManagedObject,是吗?

为啥我的 Xcode 插件(如 clang 格式)在更新到新版本的 Xcode 后不再工作了?

xcodebuild 更新到 xcode 4.3 后移动