iOS扩展和受限API

4

我在一个应用和它的动作扩展之间共享框架。该框架使用的 API 对于扩展程序不可用。

我的问题是:如果我保留了对诸如 UIApplication.sharedApplication 等 API 的引用而没有实际调用它们(将“仅要求应用程序扩展安全 API”设置为 NO),那么应用程序是否会被拒绝,还是我需要完全从代码中删除任何引用(即使用 #ifdef)?

2个回答

3
即使引用了受限制的API,也会被拒绝。我们正在进行相同的过程来删除框架中的这些调用,或者您可以为您的框架设置两个目标,一个是扩展安全的,一个不是,使用#ifdef保护。

苹果文档:(https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html)

如果您有包含此类API的自定义框架,则可以从包含应用程序链接到它,但无法与应用程序的扩展共享该代码。应用商店拒绝链接到这些框架或以其他方式使用不可用API的任何应用程序扩展


-3

iOS 9更新:苹果正在删除特定目标的无效框架访问权限,因此您将无法引用不可用的API,必须按照已接受的答案进行操作。

-- 原回答 --

如果不是非常麻烦,最好使用#ifdef绕过参考。如果在未来苹果决定打破编译以使您的扩展引用受限制的API(就像尝试获取设备UUID一样)时,它将使您的代码更具前向兼容性。

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


谢谢,但那并没有真正回答我的问题。 - Petr Pavlík

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接