iOS 应用程序 - 如何仅为 iOS 8 用户添加 iOS 8 功能,同时仍支持所有 iOS 7 用户
Posted
技术标签:
【中文标题】iOS 应用程序 - 如何仅为 iOS 8 用户添加 iOS 8 功能,同时仍支持所有 iOS 7 用户【英文标题】:iOS app - how do I add iOS 8 features only for iOS 8 users while still support all iOS 7 users 【发布时间】:2014-10-05 21:24:31 【问题描述】:我想在我的 ios 应用程序中添加 iOS8 的新功能,例如今天的小部件,同时仍然支持我的所有 iOS 7 用户。换句话说,新版本的应用程序仍然适用于 iOS 7,而新功能仅在 iOS 8 上启用。
据我所知,一旦我添加了今天的小部件,项目的部署目标就会自动切换到 iOS 8,这是否意味着我现有的 iOS 7 用户将无法将他们的应用程序升级到这个新的版本?
这可能支持这种情况吗?还是我必须放弃所有 iOS 7 用户? 如果可能的话,我也愿意为不同的 iOS 7 和 8 发布和维护两个单独的版本。
【问题讨论】:
【参考方案1】:您可以使用以下宏:
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
// iOS 8 code here...
#endif
每次只在此宏中插入 iOS 8 代码。其他一切都应该一样。
虽然最低目标是 iOS 7,但这些用户仍应能够在装有 iOS 7 的设备上运行更新。
【讨论】:
【参考方案2】:您是否尝试过将部署目标切换回 iOS 7?我没有看到任何暗示如果你有今天的扩展,你只能支持 iOS 8,但我没有专门尝试过。鉴于它们本质上是一个单独的可执行文件,它与您的主应用程序位于一个单独的捆绑包中,因此它没有理由不工作。 WeatherPro 和 Kindle 都是具有今日扩展并在 iOS 7 和 8 上运行的应用程序。
对于背景知识,如果您还没有看过这篇文章,您可能会发现它很有帮助:http://www.raywenderlich.com/42591/supporting-multiple-ios-versions-and-devices
【讨论】:
【参考方案3】:today 小部件是您项目中的一个新目标,具有一个新的、唯一的捆绑名称。它的部署目标确实是 iOS 8。但它“嵌入”在另一个目标中(在创建新的应用程序扩展目标时指定),其部署操作系统版本将保持不变(6.0 或其他)。您的用户下载了新应用程序,该应用程序现在包含两个捆绑包。如果他们没有 iOS 8,则新的今日小部件捆绑包将被忽略。
【讨论】:
【参考方案4】:没有问题。引用苹果文档:
如果您从包含应用程序链接到嵌入式框架,您仍然可以将其部署到 8.0 之前的 iOS 版本,即使嵌入式框架在这些版本中不可用。
因此,只需将部署目标更改为您想要的任意低 - 它可以在较旧的 iOS 上正常运行,只是没有小部件。
【讨论】:
以上是关于iOS 应用程序 - 如何仅为 iOS 8 用户添加 iOS 8 功能,同时仍支持所有 iOS 7 用户的主要内容,如果未能解决你的问题,请参考以下文章
仅为 OS X 10.8.x 和 iOS 6.x 在 iCloud 中启用核心数据同步
如何仅为从 iOS 中的照片库中选择的视频设置 UIImagePickerController 的allowEditing?