iOS扩展和受限API

时间:2014-11-07 15:37:04

标签: ios api private

我在app和它的动作扩展之间共享一个框架。该框架使用扩展无法使用的API。

我的问题是:如果我保留对UIApplication.sharedApplication之类的API的引用而不实际调用它们(将“仅需要App-Extension-Safe API”设置为NO),那么应用程序是否会被拒绝,或者我需要从代码中完全删除任何引用(即使用#ifdef)?

2 个答案:

答案 0 :(得分:3)

是的,即使它引用了受限制的API,也会被拒绝。我们正在通过相同的过程在我们的框架中删除此类调用,或者您可以为您的框架设置两个目标,一个是扩展安全的,另一个不是#ifdef警卫。

Apple docs:(https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html

  

如果您有一个包含此类API的自定义框架,则可以   从您的应用程序安全链接到它但无法共享该代码   使用应用程序包含的扩展名。 App Store 拒绝任何应用   链接到此类框架的扩展程序或以其他方式使用的扩展程序   不可用的API。"

答案 1 :(得分:-3)

iOS 9更新:Apple正在删除针对特定目标的无效框架的访问权限,因此无论如何都无法引用不可用的API,并且必须遵循接受的答案的状态。

- 原始答案 -

如果它不是一个巨大的不便,那么参考文献的#ifdef可能最好。如果您的扩展程序引用受限制的API(就像他们尝试获取设备的UUID一样),Apple会在将来决定中断编译时,它会使您的代码更加向前兼容。

此外,这将使您的框架可用于您可能没有UIKit访问权限的其他场景,例如在OS X上。