iOS 扩展和受限 API

问题描述 投票:0回答:2

我在应用程序及其操作扩展之间共享一个框架。该框架使用扩展无法使用的 API。

我的问题是:如果我保留对 API(例如

UIApplication.sharedApplication
)的引用而不实际调用它们(将“仅需要应用程序扩展安全 API”设置为“否”),应用程序是否会被拒绝,或者我是否需要完全从代码中删除任何引用(即使用
#ifdef
)?

ios iphone-privateapi
2个回答
3
投票

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

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

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


-3
投票

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

-- 原答案--

如果不是造成很大的不便,最好

#ifdef
绕过参考文献。如果您的扩展引用了受限制的 API(就像他们尝试获取设备的 UUID 所做的那样),如果将来 Apple 决定中断编译,这将使您的代码更加向前兼容。

此外,这将使您的框架可以在您可能无法访问 UIKit 的其他场景中使用,例如在 OS X 上。

© www.soinside.com 2019 - 2024. All rights reserved.