【发布时间】:2017-09-14 12:10:12
【问题描述】:
我想知道 iOS 应用是否可以查明它是使用开发证书还是分发证书签名的。
我发现 iOS 应用可以通过访问 bundle 的信息字典来获取一些关于自身的元信息。例如,可以通过从字典中读取 CFBundleVersion 键来检索版本。是否存在类似的获取签名证书信息的方法?
我之所以问,是因为 APNS。当我的应用程序向我的云服务器注册 APNS 设备令牌时,云服务器需要知道是否需要通过调用 Apple 的生产 APNS 服务器(“api.push.apple.com”)或开发 APNS 服务器来创建该令牌的推送消息“api.development.push.apple.com”。
【问题讨论】:
-
APNS 设置存储在权利中,而不是签名证书中。您查看过
codesign工具的源代码吗? -
我没有查看协同设计工具的源代码。你关于权利的评论很有趣。我看到我的项目包含一个扩展名为“.entitlements”的文件。该文件指定键“APS Environment”的值为“development”。因此,从应用程序访问该信息也可以解决我的问题。我(尚)不知道如何从我的 Swift 代码中以编程方式获取该信息,但感谢您的提示!
-
在代码签名构建阶段,该值设置为
development或production。这取决于代码签名证书和配置文件。 -
以下是在运行时读取应用权利的分步说明:davedelong.com/blog/2018/01/10/reading-your-own-entitlements
标签: ios apple-push-notifications code-signing-certificate