有没有办法检测运行的macOS应用程序是否来自Mac App Store?

时间:2018-03-18 20:52:37

标签: macos cocoa macos-high-sierra

我有我的这个应用程序,它在我自己的网站上分发在Mac App Store和它之外。

我需要在运行时检测正在运行的版本,因此我可以在代码中做一些决定。

有没有办法检测到它?我该如何区分?有没有办法知道应用程序是否为App Store签名?

编辑:我找到了this library,但这并不好,因为它告诉应用程序不是来自应用程序商店,只是收据丢失。但由于其他原因,收据可能会丢失。缺少收据不是一个很好的理由。

1 个答案:

答案 0 :(得分:4)

我认为有两种方法可以做到这一点:

  1. 制作编译时标志。将其编译为提交到App Store的一种方式,另一种方式是在App Store外部进行分发。
  2. 而不仅仅是检查您应用的代码签名有效性(就像您找到的库一样),请致电SecCodeCopySigningInformation以获取签名详细信息,然后查看kSecCodeInfoCertificates array以查看其是否包含您的开发者ID证书或" Apple Mac OS应用程序签名" App Store使用的证书。
  3. IMO第二种选择更为复杂和脆弱;例如,如果Apple更改了他们签署App Store应用程序的方式,您的代码可能会中断。我选择第一个选项。