【问题标题】:iOS app - how do I add iOS 8 features only for iOS 8 users while still support all iOS 7 usersiOS 应用程序 - 如何仅为 iOS 8 用户添加 iOS 8 功能,同时仍支持所有 iOS 7 用户
【发布时间】:2014-10-05 21:24:31
【问题描述】:

我想在我的 iOS 应用程序中添加 iOS8 的新功能,例如今天的小部件,同时仍然支持我的所有 iOS 7 用户。换句话说,新版本的应用程序仍然适用于 iOS 7,而新功能仅在 iOS 8 上启用。

据我所知,一旦我添加了今天的小部件,项目的部署目标就会自动切换到 iOS 8,这是否意味着我现有的 iOS 7 用户将无法将他们的应用程序升级到这个新的版本?

这可能支持这种情况吗?还是我必须放弃所有 iOS 7 用户? 如果可能的话,我也愿意为不同的 iOS 7 和 8 发布和维护两个单独的版本。

【问题讨论】:

    标签: ios xcode ios8 xcode6 ios-app-extension


    【解决方案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】:

        tod​​ay 小部件是您项目中的一个新目标,具有一个新的、唯一的捆绑名称。它的部署目标确实是 iOS 8。但它“嵌入”在另一个目标中(在创建新的应用程序扩展目标时指定),其部署操作系统版本将保持不变(6.0 或其他)。您的用户下载了新应用程序,该应用程序现在包含两个捆绑包。如果他们没有 iOS 8,则新的今日小部件捆绑包将被忽略。

        【讨论】:

          【解决方案4】:

          没有问题。引用苹果文档:

          如果您从包含应用程序链接到嵌入式框架,您仍然可以将其部署到 8.0 之前的 iOS 版本,即使嵌入式框架在这些版本中不可用。

          因此,只需将部署目标更改为您想要的任意低 - 它可以在较旧的 iOS 上正常运行,只是没有小部件。

          【讨论】:

            猜你喜欢
            • 2015-12-20
            • 1970-01-01
            • 2014-12-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多