【问题标题】:How do I eliminate these common Firebase warnings related to using SwiftUI?如何消除这些与使用 SwiftUI 相关的常见 Firebase 警告?
【发布时间】:2021-06-05 02:37:55
【问题描述】:

我在我的 SwiftUI/Combine 应用程序中使用 Firebase,我注意到了几个我想解决的警告。他们没有破坏事情,但我想解决它们。我在使用具有最新 Swift 包依赖项的 Xcode 12.4 时收到这些警告:GoogleUtilities 7.2.2 和 Firebase 7.7.0。

这是控制台中出现的第一个警告:

[GoogleUtilities/AppDelegateSwizzler][I-SWZ001014] App Delegate does not conform to UIApplicationDelegate protocol.

作为参考,这是我配置 Firebase 的方式:

import SwiftUI
import Firebase

@main
struct MyApp: App {
    
    @StateObject var authState = AuthState()
    
    init() {
        FirebaseApp.configure()
    }
    
    var body: some Scene {
        
        WindowGroup {
            RootView()
                .environmentObject(authState)
        }
    }
}

这是第二个警告,在我使用 .navigationBarTitle 修饰符设置导航栏标题后出现。

[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x280c8cfa0 'BIB_Trailing_CB_Leading' H:[_UIModernBarButton:0x109219b60]-(6)-[_UIModernBarButton:0x109218760'Fullres']   (active)>",
    "<NSLayoutConstraint:0x280c8cff0 'CB_Trailing_Trailing' _UIModernBarButton:0x109218760'Fullres'.trailing <= _UIButtonBarButton:0x109217100.trailing   (active)>",
    "<NSLayoutConstraint:0x280c8dd60 'UINav_static_button_horiz_position' _UIModernBarButton:0x109219b60.leading == UILayoutGuide:0x2816bcfc0'UIViewLayoutMarginsGuide'.leading   (active)>",
    "<NSLayoutConstraint:0x280c8ddb0 'UINavItemContentGuide-leading' H:[_UIButtonBarButton:0x109217100]-(0)-[UILayoutGuide:0x2816bcee0'UINavigationBarItemContentLayoutGuide']   (active)>",
    "<NSLayoutConstraint:0x280c88f00 'UINavItemContentGuide-trailing' UILayoutGuide:0x2816bcee0'UINavigationBarItemContentLayoutGuide'.trailing == _UINavigationBarContentView:0x109214320.trailing   (active)>",
    "<NSLayoutConstraint:0x280c8e530 'UIView-Encapsulated-Layout-Width' _UINavigationBarContentView:0x109214320.width == 0   (active)>",
    "<NSLayoutConstraint:0x280c892c0 'UIView-leftMargin-guide-constraint' H:|-(0)-[UILayoutGuide:0x2816bcfc0'UIViewLayoutMarginsGuide'](LTR)   (active, names: '|':_UINavigationBarContentView:0x109214320 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x280c8cfa0 'BIB_Trailing_CB_Leading' H:[_UIModernBarButton:0x109219b60]-(6)-[_UIModernBarButton:0x109218760'Fullres']   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.

有没有人尝试解决这些警告?

【问题讨论】:

    标签: ios firebase swiftui navigationbar


    【解决方案1】:

    第一条消息是由于 Firebase 尝试查找 AppDelegate,但由于您的应用遵循新的 SwiftUI 应用生命周期,因此它没有。

    您可以通过添加AppDelegate 来消除此警告,如下所示:

    import SwiftUI
    import Firebase
    
    class AppDelegate: NSObject, UIApplicationDelegate {
      func application(_ application: UIApplication,
                       didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        FirebaseApp.configure()
        return true
      }
    }
    
    @main
    struct MyApp: App {
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate   
      @StateObject var authState = AuthState()
        
      init() {
        FirebaseApp.configure()
      }
        
      var body: some Scene {      
        WindowGroup {
          RootView()
            .environmentObject(authState)
        }
      }
    }
    

    更多详情请见my article on the topic

    附带说明,我们正在研究初始化 Firebase SDK 的其他方法(因为 swizzling 有其挑战) - 请参阅 this comment 上类似的 GitHub 问题。

    至于第二个警告,这与 Firebase 无关。如果您搜索 StackOverflow,您会发现许多其他人也遇到了这个问题。 This question 看起来非常相似,并且有一个您可能想尝试的公认答案。

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多