使用 SwiftUI 在 macOS 上阻止 FirebaseApp.configure() 的应用沙盒

Tah*_*zam 5 macos xcode multiplatform firebase swiftui

我正在为 macOS 和 iOS 编写一个应用程序。

当我开始我的多平台项目时,我决定看看 Firebase SDK 是否适用于 macOS,因为我以前见过这个错误:

tvOS 和 macOS SDK 支持不是 Firebase 官方产品的一部分。相反,他们是社区支持的。详情见https://github.com/firebase/firebase-ios-sdk/blob/master/README.md

我开始配置 Firebase,并且必须创建一个 NSApplicationDelegate 才能在 macOS 上运行:

class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(_ notification: Notification) {
        FirebaseApp.configure()
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我使用 NSApplicationDelegateAdaptor 将此 AppDelegate 附加到我的 @main 应用程序:

@main
struct SchedulerApp: App {
    @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

首先用一个简单的打印语句对其进行了测试 - 它奏效了。

然后用 测试它FirebaseApp.configure(),它抛出了一大堆错误。

沙盒不允许访问 com.apple.dnssd.service

dnssd_clientstub ConnectToServer: connect() failed path:/var/run/mDNSResponder Socket:4 Err:-1 Errno:1 Operation not allowed

nw_resolver_create_dns_service_locked

连接 1:收到失败通知

连接 1:连接失败 10:-72000,原因 -1

连接 1:遇到错误 (10:-72000)

找不到具有指定主机名的服务器。

最后一个包含一个 URL,https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog

从错误代码,我在网上做了一些挖掘,因为我是macOS开发的新手,所以发现了App Sandbox。然后我尝试在 Signing and Capabilities 中将其关闭并再次运行该项目。

没有错误。工作得很好!

我如何允许服务器通过 App Sandbox 进行连接,因为我确实想在不久的将来发布该应用程序并希望开始将我的 SwiftUI iOS 应用程序移植到 macOS,因为您无法在没有 App 的情况下将应用程序上传到 Mac 应用程序商店沙盒?

Tah*_*zam 8

通过复选框修复它

传入网络连接(服务器)

传出网络连接(客户端)

在目标设置(您可以在其中编辑应用程序的名称和版本的屏幕)> 签名和功能。如果您收到错误消息,指出您的权利文件夹已被编辑,只需清理构建文件夹即可。