Swift macOS Firebase
Posted
技术标签:
【中文标题】Swift macOS Firebase【英文标题】: 【发布时间】:2020-01-18 21:58:57 【问题描述】:我有一个启用 Firebase 的 ios 应用。 现在我正在尝试向这个项目添加一个 macOS swift 应用程序,但我不知道该怎么做。 (我知道可以选择将 IOS 应用程序移植到 macOS,但我想要两个具有不同功能的独立应用程序,一个用于 IOS,一个用于 macOS)
Firebase Admin 中没有添加 macOS 应用程序的选项(据我所知),因此我在 Firebase Admin 中创建了一个新的 IOS 应用程序并尝试使用 macOS 应用程序项目进行设置。 (很可能这是我整个问题的问题)
当我运行 macOS 项目时,我的 AppDelegate 中出现这些错误:
尚未配置默认 Firebase 应用。将
[FIRApp configure];
(Swift 中的FirebaseApp.configure()
)添加到您的应用程序初始化中。引发了未捕获的异常
未能获取 FirebaseApp 实例。请在使用 Firestore 之前调用 FirebaseApp.configure()
由于未捕获的异常“FIRIllegalStateException”而终止应用程序,原因:“无法获取 FirebaseApp 实例。请在使用 Firestore 之前调用 FirebaseApp.configure()'
尽管我在applicationDidFinishLaunching
中使用了FirebaseApp.configure()
。
我还导入了每个 pod,但没有任何帮助。
pod 'Firebase'
pod 'Firebase/Core'
pod 'Firebase/Analytics'
pod 'Firebase/Auth'
pod 'FirebaseDatabase'
pod 'Firebase/ABTesting'
pod 'Firebase/Database'
pod 'Firebase/Firestore'
pod 'FirebaseFirestore'
pod 'Firebase/Functions'
pod 'Firebase/Messaging'
pod 'Firebase/RemoteConfig'
pod 'Firebase/Storage'
我的问题是我可能做错了什么? 还是 Firebase 不支持 macOS 应用? 如果是,那么我如何将现有的 Firebase IOS 项目与新的 macOS Swift 应用程序一起使用?
【问题讨论】:
【参考方案1】:Sipos Péter 的回答很好,这里有一些额外的提示。
另一个答案中的 podfile 是正确的。但是,macOS 应用程序的加载顺序不同,因此您需要在顺序中更早地使用 Firebase 代码以确保稳定性。
因此,AppDelegate 中不需要 firebase 代码。将该代码移动到主 viewControllers viewDidLoad 函数并创建一个类 var 以引用 Firebase。像这样:
var ref: DatabaseReference!
override func viewDidLoad()
super.viewDidLoad()
FirebaseApp.configure() //set up Firebase
//a class reference to your firebase, This is optional but saves typing
self.ref = Database.database().reference()
let version = Database.sdkVersion() //print out the sdk if needed
print("Firebase Version \(version)") //just prints the current Firebase version
self.authToFirebase() //your function to handle auth'ing this user
//continue app setup
self.myTableView.dataSource = self
self.myTableView.delegate = self
【讨论】:
【参考方案2】:有人在GitHub 中遇到了同样的问题。 我还被告知我的很多 pod 实际上都是 ios pod,所以我将我的 Podfile 更改为:
pod 'FirebaseCore'
pod 'FirebaseAuth'
pod 'FirebaseDatabase'
pod 'FirebaseStorage'
我还将我的 AppDelegate 文件更改为:
override init()
FirebaseApp.configure()
Database.database().isPersistenceEnabled = true
func applicationDidFinishLaunching(_ aNotification: Notification)
Database.database().reference()
这似乎解决了我的问题(目前,我希望这是最终解决方案)
【讨论】:
以上是关于Swift macOS Firebase的主要内容,如果未能解决你的问题,请参考以下文章
Swift 5 MacOS Image Resize 内存问题