【问题标题】:Support legacy iPhone users支持旧版 iPhone 用户
【发布时间】:2011-03-06 12:59:50
【问题描述】:

现在 iPhone SDK 4.0 可供下载,iOS 4.0 也将很快向消费者提供,那么开始使用 4.0 操作系统中的新功能是否有意义?

我主要担心的是,使用 4.0 功能要求最终用户也将他们的手机/ipod 更新到 4.0。虽然这个过程非常轻松,但大多数用户更新是否合理?应用程序本身并不真正需要在新操作系统中引入任何东西,但一些传统的动画技术现在“不鼓励”,转而支持基于块的对应技术。这对我来说很好,我更喜欢使用块方法,但我担心这会给最终用户带来麻烦。

那么这方面的一般经验是什么?您是坚持使用最新最好的版本还是坚持使用当前版本?

附言这假设 GM 在可用时在最终用户上安装操作系统 - 不是测试版。

【问题讨论】:

  • 去年推出 3.0 时也发生了类似的讨论。例如,这个问题讨论了在兼容 2.0 的应用程序中使用 3.0 功能:stackoverflow.com/questions/986589/…
  • @progrmr - 是的,一旦获得赏金,它就会从特色问题选项卡中删除。我想要尽可能多的回复来验证这个问题。此外,SO已经提醒我接受答案。我会在一天结束之前奖励一些答案。

标签: iphone ios4


【解决方案1】:

这取决于。您至少有 3 个选项,最好的方法取决于您应用的要求:

  1. 您的应用需要任何 iOS 4.0 API - 您应该使用 BaseSDK 4.0 构建,但将 Target Deployment 设置为您必须拥有的最低版本 (即:3.0)。
    优势:(1)您的应用程序可以在至少具有该目标部署版本的任何设备上运行,并且(2)它将支持在具有 iOS 的设备上快速切换应用程序4.0。 缺点:您无法使用 Target Deployment 版本之后的任何 API。

  2. 您的应用使用 4.0 API 会更好,但没有它们它仍然可以使用 - 如果您可以通过在 iOS 4.0 之前的设备上提供减少的功能或通过在 4.0 之前的设备上使用不同的 API 时提供类似的功能,然后您可以使用 BaseSDK 4.0 进行构建,将 Target Deployment 设置为您必须拥有的最低版本(即:3.0)并有条件地使用 iOS 4.0 API 调用。 优势:您可以在至少具有最低 iOS 版本的所有设备上运行。 缺点:所有这些条件调用都会变得复杂。

  3. 您的应用需要一些 iOS 4.0 API 才能运行 - 在这里您别无选择。使用 BaseSDK 4.0 构建,设置 Target Deployment 4.0 并使用那些 4.0 API。
    优点:代码更简单,iOS 版本没有条件 缺点:您的应用还不能在 iPad 上运行(他们在“2010 年秋季”中获得 4.0),您的应用永远不会在 3G 之前的 iPhone(他们没有获得 4.0)和某些 iOS 上运行4.0 功能不适用于 iPhone 3G。

在所有情况下,您的 Base SDK 将是 4.0,您的目标部署将是您需要的最低要求,如果您需要更新的 API,您可以有条件地使用它(如果设备有)。

只需使用 BaseSDK 4.0 编译,即使您不使用任何 4.0 功能,您也可以在 4.0 设备上快速切换应用。所有应用程序至少都应该这样做,即使它们以 iOS 2.0 为目标。如果您不需要 4.0 功能,请不要使用它们,您可以针对更广泛的旧设备和未升级的设备。

此recent answer on SO 总结了如何为 BaseSDK 和目标部署进行此设置,以及如何有条件地使用 API 来定位多个固件版本。

【讨论】:

    【解决方案2】:

    推荐配置是将 Base SDK 设置为最高(即 4.0)并将部署目标设置为适当的版本(取决于您的应用中使用的框架功能)。

    当然,该应用始终可以检查操作系统版本并跳过对不受支持的框架的调用。这是构建 iPad 和 iPhone 通用应用程序的常用技术。

    【讨论】:

    • 同意。而且它本身不值得回答,但是如果有一个关于这个主题的简单常见问题解答页面,世界会变得更好,尤其是,因为这是第一个不适用于整个安装群的 iPhone 更新.
    • 这似乎合乎逻辑,但您强调了“推荐”。这是哪里推荐的?苹果有官方声明吗?
    • @Horace - 我查看了随 Xcode 一起安装的“关于 Xcode 和 iPhone SDK.pdf”,但没有看到任何支持这一点的指南。你指的是什么文件?什么页面?
    • @Paul Alexander,第 2 页,新增功能部分,从“仅适用于 iPhone ...”开始
    【解决方案3】:

    我个人通常针对落后的一个主要版本(即目标 3.1 而不是 4.0),这通常会给我一个窗口“您在去年更新了手机吗?”但是根据您的应用程序,您可能能够使用仅在 4.0 中的多任务处理或其他功能。然后,这取决于您认为您的用户会立即想要什么。如果您认为他们可以稍等,看看情况如何;如果您发现很多用户正在快速迁移到 4.0,那么就推出您的更改。

    【讨论】:

      【解决方案4】:

      在我看来,如果您可以等待几个月让人们过渡到 4.0,那么请稍等,否则就继续使用 4.0 功能。

      根据我前几年的统计,2.0->3.0 升级需要一年多的时间,但主要是 iPod touch 用户,因为 Apple 收取 10 美元。

      我预计 4.0 的采用率会快得多,但请记住,第一代 iPhone/IPods 没有升级到 4.0。

      【讨论】:

        【解决方案5】:

        我发现查看安装了旧操作系统和新操作系统的 iphone/mac 等设备的数量并不能告诉您太多有关其所有者的消费习惯的信息。

        在应用商店花钱的人更有可能更新过操作系统软件。

        如果您的应用程序有任何复杂程度,则需要一些时间才能发布,并且您将有一个非常小的窗口,其中 iPad 仍在运行 3.x。

        为多个操作系统级别开发是一件痛苦的事。除了需要在 iPad/iPhone/iPod 上运行您的应用程序之外,现在您还必须使用 2 个操作系统来执行此操作。错过检查一个你只调用很少执行的代码的 4.0 的地方,你会崩溃。

        为了您的代码库的长期稳定性,仅在新应用上构建 4.0 也很好。简单更好。

        【讨论】:

          【解决方案6】:

          我认为大多数用户会升级是安全的,因为这是 3.0 的免费升级。 很明显,Apple 热衷于让用户使用 4.0,这就是它免费的原因。

          与正常更新一样,iTunes 会唠叨升级,如果您需要重新安装手机通常会重定向到最新版本。

          当您销售应用程序时,您可以相当确信您的买家可以访问互联网,并且至少偶尔会对接他们的手机并获得免费更新请求。以前更新过手机的人很有可能同样升级到 iOS4。

          目前,在我看来,继续使用 3.x 的主要动机是为了兼容 iPad。

          您还应该考虑在未来 6 个月内您的销售额预期如何。不使用最新功能的代价是什么?您能否通过 4.0 缩短开发时间或添加尖端功能?竞争应用程序能否利用 4.0 功能获得优势?将其宣传为仅限 4.0 可能会对应用的认知产生积极影响。

          将有一定比例的人无法运行您的应用程序,因为您使用的是 4.0。诀窍是弄清楚销售损失是大于还是小于您将其抛在后面所获得的收益。

          您期望的买家越多,让他们所有人运行您的应用程序就越值得。此外,购买者可能是具有计算机专业知识的人吗?如果是这样,那么他们可能更不可能留在 3.x 上。

          另外,请记住,iPhone 3G 之前的手机不支持 iOS4。

          还有一个补充:

          Apple 已经开始从 AppStore 中排除 2.0 应用程序,请参阅 https://developer.apple.com/iphone/checklist/

          【讨论】:

            【解决方案7】:

            是的,IMO 使用 OS 4.0 中的新功能绝对有意义。至少安装了 4.0 的用户对于不支持快速应用切换(以及 iPhone 4 的更高分辨率显示)的应用几乎没有容忍度。

            我主要担心的是,使用 4.0 功能要求最终用户也将他们的手机/ipod 更新到 4.0。

            这不是真的。支持新功能不需要您放弃对旧操作系统版本的支持。只需将 Base SDK 设置为 4.0,将 Deployment Target 设置为 3.x。并确保您的代码不会在不检查它们是否存在的情况下调用 4.0 特定的方法 (respondsToSelector:)。

            【讨论】:

            • 我想你可能没有抓住重点。如果我要承诺使用 4.0 功能 - 那确实需要 4.0 操作系统。我不需要新操作系统提供的任何东西。 3.x 方法仍然存在并受到支持 - 它们只是“不鼓励”。我对维护两个单独的代码库不感兴趣,这些代码库混合在同一个源文件中,由 if( ...respondsToSelector: ...) 条件分隔。
            • 有时需要动态检查特定函数和类是否可用。 iOS 平台(和 Mac OS X)支持弱链接,但对于类,您需要使用 NSClassFromString,因为弱类链接对于旧平台来说太新了,无法支持。
            • “3.x 方法仍然存在并受到支持 - 它们只是‘不鼓励’。”没有正式的弃用(其中有一些),既然 4.0 已经发布,你在 3.x 下可以做的任何事情都不会以任何方式“劝阻”。只要您对将要运行的混合环境敏感,您就可以大胆地使用 4.0 为您提供的任何新功能。我正在构建一个包含每日本地通知的应用程序。即使在 UI 级别我也必须处理这个问题——如果您的操作系统不支持它们,我什至不会向您显示该按钮。
            【解决方案8】:

            progmr 已经给出了很好的答案;值得补充的是一些硬数据:

            http://www.appleinsider.com/articles/10/07/22/chitika_ios_4_already_powering_50_of_iphone_traffic.html

            即。 50% 的 iphone 用户(截至 2010 年 7 月正在安装和使用包含广告的应用程序)仍在运行 4.0 之前的版本。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-07-05
              • 1970-01-01
              • 2013-10-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-06-15
              相关资源
              最近更新 更多