使用codesign命令对其进行签名后,macOS应用程序将无法再通过Internet访问外部资源

时间:2019-12-09 13:53:07

标签: xcode macos unity3d code-signing

我已经使用Unity构建了macOS应用程序捆绑包,我打算将其提交给Mac App Store。我遵循了Delivering your application to the Mac App Store Unity文档中提到的构建说明。

我能够为macOS运行Build命令,并为我的应用程序获取一个.app捆绑包。我也能够启动它,并且运行得很好。但是,在运行以下codesign命令之后,该应用程序无法通过Internet访问任何资源。我的程序源代码中的Internet可达性模块报告Internet无法访问。这是我正在运行的codesign命令行:

codesign -f --deep -s '3rd Party Mac Developer Application: DEVELOPER NAME' --entitlements "GAMENAME.entitlements" "/AppPath/GAMENAME.app"

所有外部资源均通过HTTPS访问。此外,项目的Info.plist文件已添加了NSAppTransportSecurityNSAllowsArbitraryLoads键,并将其设置为true。 (默认情况下,这是Unity所完成的。)

还值得注意的是,在Unity中构建macOS应用项目会产生.app捆绑包。随附的Info.plist文件已使用NSAppTransportSecurityNSAllowsArbitraryLoads键进行了预配置,并设置为true

我尝试过同时保留和删除NSAppTransportSecurityNSAllowsArbitraryLoads键的情况,但均未成功。我也尝试过在键下添加特定域,但没有成功。

我正在运行所有软件的最新版本,并在下面提到:

  1. macOS Catalina 10.15.1

  2. Xcode 11.2.1

  3. 团结2019.2.13

我的问题是:

  • 可能出什么问题了?

  • 我还有其他途径吗?

我正在寻找暂时通过Mac App Store独家分发应用程序。这将是一个付费应用程序(如果相关的话)。

1 个答案:

答案 0 :(得分:1)

Mac App Store应用必须为sandboxed。在沙盒环境中,需要额外的权利才能建立网络连接。

权利在here中列出。有关此特定问题,请参见“启用网络访问”部分,该消息说:

  通过目标编辑器“摘要”标签中的

Xcode的“网络”复选框,您可以为应用程序启用网络访问。

     

要使您的应用能够连接到另一台计算机(或同一台计算机)上运行的服务器进程,请启用传出网络连接。

     

要启用打开网络侦听套接字以使其他计算机可以连接到您的应用程序,请允许传入网络连接。

要允许传出网络连接,您需要添加com.apple.security.network.client