使用 SwiftUI 在 macOS 上阻止 App Sandbox FirebaseApp.configure()

App Sandbox blocking FirebaseApp.configure() on macOS with SwiftUI

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

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

tvOS and macOS SDK support is not part of the official Firebase product. Instead they are community supported. Details at https://github.com/firebase/firebase-ios-sdk/blob/master/README.md.

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

class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(_ notification: Notification) {
        FirebaseApp.configure()
    }
}

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

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

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

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

Sandbox does not allow access to com.apple.dnssd.service

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

nw_resolver_create_dns_service_locked

Connection 1: received failure notification

Connection 1: failed to connect 10:-72000, reason -1

Connection 1: encountered error(10:-72000)

A server with the specified hostname could not be found.

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

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

没有错误。工作正常!

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

已通过复选框修复

Incoming network connections (server)

Outgoing network connections (client)

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