【问题标题】:Does anybody know a way to add entitlement to iOS application for non jailbroken device?有人知道如何为非越狱设备的 iOS 应用程序添加权利吗?
【发布时间】:2013-05-02 00:36:05
【问题描述】:

一些背景

  • iOS 操作系统有一个“权利”的概念。一般来说,它是授予应用程序的权限。其他系统服务和应用可以检查此权限以允许/拒绝执行某些功能。

  • 应在配置文件中指定这些权利。

  • 系统应用程序有很多不同的权利。

  • 用户应用程序仅限于几个权利(例如访问 iCloud 或可以在开发人员门户上配置的类似内容)。

问题是:有人知道如何为非越狱设备的用户应用程序添加权利吗?

总体思路是为已开发的应用添加权利,以获得更多使用系统服务的权限。

注意事项和免责声明

  • 我知道如何为越狱手机执行此操作。但是,它不适用于未越狱的设备。

  • 我知道 Apple 会拒绝它。它不会进入 AppStore。

  • 解决方案不必是编译时解决方案(意思是修改文件的方法)。它可能是一个运行时解决方案 - 一个应用程序以某种方式为其自身或第三方应用程序添加权利。

【问题讨论】:

  • 不确定这是否可能,因为权利仅适用于越狱设备!只是想知道如果它不去 AppStore,你为什么要通过权利来做到这一点?您不能只使用特定于客户端的标志来打开/关闭所需的功能吗?这就是我为我们的企业应用程序所做的事情。还是我完全误会了你?
  • @AppleDeveloper:我更新了一个问题,因为有一些歧义。我想为开发的应用程序添加权利以获得更多使用系统服务的权限。所以,这不是为了打开/关闭我们的功能,而是访问一些受权限保护的系统功能。
  • 有趣!抱歉,除了投票之外,我在这里无能为力。祝你好运。
  • 您是否为此向 Apple Developer's Network 询问过。我知道有些公司,尤其是在企业开发帐户中使用的公司可以获得某些事情的特殊权限。

标签: ios iphone-privateapi entitlements


【解决方案1】:

没有。权利包含在应用程序的代码签名中。当然,更改它们会破坏签名,并且现有的 iOS 设备不会运行代码签名损坏的代码。你问的是不可能的。

【讨论】:

  • 在某些文件中存储的权利与这些权利的实际执行之间存在相当长的执行路径。因此,无法更改带有签名的文件并不意味着无法修改执行路径。可能有一些标志、私有 api 等可能允许即时添加权利、临时禁用权利检查等。
  • 我不知道如何做到这一点。唯一想到的机制是更改 .plist 中的静态标志,或者执行一些方法调配以完成运行时更改。 (cocoadev.com/wiki/MethodSwizzling) 在第一种情况下,很明显代码签名被破坏了。在第二个中,我认为没有办法在不破坏签名的情况下添加 swizzling 代码。
猜你喜欢
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 2013-02-21
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
相关资源
最近更新 更多