如何确定iOS应用程序是否已使用开发或分发证书签名?

时间:2017-09-14 12:10:12

标签: ios apple-push-notifications code-signing-certificate

我想知道iOS应用是否可以查看是否使用开发或分发证书签名。

我发现iOS应用可以通过访问捆绑包的信息字典来获取有关自身的一些元信息。例如,可以通过从字典中读取CFBundleVersion键来检索版本。是否存在类似的签名证书信息?

我之所以问,是因为APNS。当我的应用程序将APNS设备令牌注册到我的云服务器时,云服务器需要知道是否需要通过调用Apple的生产APNS服务器(“api.push.apple.com”)或开发APNS服务器来创建该令牌的推送消息“api.development.push.apple.com”。

1 个答案:

答案 0 :(得分:0)

有关APNS服务器的信息位于二进制文件的代码签名部分的权利中。基本步骤是:

  1. dladdr获取二进制文件的加载地址。
  2. 遍历LC_CODE_SIGNATURE
  3. 的所有Mach-O加载命令
  4. 解析代码签名命令的方式与codesign工具相同。它在opensource.apple.com上开源。
  5. 解析权利plist-data。
  6. 提取aps-environment值。
  7. 这与在二进制文件上运行命令codesign -d --entitlements :-基本相同。