对 Mac App 打包后,我们可以选择通过 Developer ID 方式直接向我们的客户分发 Mac App 而不用将 App 传到 Mac App Store。

在这个过程中遇到了一些坑,故总结分享一下。

Developer ID 证书

创建

首先我们需要创建 Developer ID 证书,具体如何创建可以看苹果的这个 文档: 创建 Developer ID 证书

但是这里有个需要很注意的问题:使用开发者帐户或 Xcode 可以创建 最多五个 Developer ID App 证书。

撤销

撤销删除 Developer ID App 证书 并不是随意操作的,不管你的苹果开发者账号的角色是什么,需通过 product-security@apple.com 向 Apple 发送请求,才可以删除。

而且注意,如果您撤销了 Developer ID 证书,用户便无法安装使用该证书签名的 app。

更详细的撤销证书权限可以看这个 文档: 撤销权限

所以这里需要注意保管好 Developer ID 证书的私钥。我就试过换了电脑后,本地证书没有私钥的尴尬情况,就是常见的 Missing Private key 错误,如果你的 Developer ID 证书数量刚好达到了上限,无法创建新的证书,又丢失了旧的证书的私钥的话,这个情况就只能通过 product-security@apple.com 向 Apple 发送请求撤销旧的证书,再创建新的了。所以这里建议可以事先在 KeyChain Access.app 里导出 p12 文件做好保管。

Notarization 苹果公证

macOS 10.14.5 之后,通过 Developer ID 证书分发的 App,苹果建议都需要通过苹果的公证(Notarized),以代表这个 App 不含有恶意内容,否则的话每次用户初次打开你的 App 的时候都会有 无法检查是否包含恶意软件 的安全提示,类似如下图:

这时候需要去到系统设置的安全与隐私那里,选择仍要打开:

这时候还会有个安全提示,但是这次是有 打开 选项的:

这一顿操作下来其实对用户的体验很不友好,让人产生对 App 的不信任感。

所以这里还是建议大家把 App 上传给苹果进行公证。如下图在打包的时候可以选择 Upload 给苹果进行 Notarize

关于 Notarization 这块更详细的内容,可以查看这个 文档: Notarizing macOS Software Before Distribution

欢迎关注我的个人公众号:HansonTalk,分享点有意思的。