最近尝试使用 Mac Catalyst 将 App 移植到 macOS 上,打包时遇到了该问题,故记录一下。

.entitlements 文件中,需要使用 key com.apple.developer.networking.networkextension 来标记需要 VPN 权限。

但是这个 key 的值在 iOS 和 macOS 上是不同的:

  • iOS:packet-tunnel-provider
  • macOS:packet-tunnel-provider-systemextension

区别就在于 macOS 下多了 -systemextension 这部分,所以如果 App 提供 VPN 功能,那么 Mac Catalyst 和非 Mac Catalyst 的 Settings 就不能使用同一份 .entitlements 文件了。