将 iPhone 应用程序移植到 iPad——单个应用程序还是 fork?

Posted

技术标签:

【中文标题】将 iPhone 应用程序移植到 iPad——单个应用程序还是 fork?【英文标题】:Porting an iPhone app to iPad -- single application, or fork? 【发布时间】:2010-02-16 20:43:09 【问题描述】:

我准备为 iPad 修改一个 iPhone 应用程序。

我的问题是:该应用程序是为 iPhone OS 2.0 设计的,如果我为 iPad 设计它,我将不得不为 OS 3.2 设计它。

我无法更改 iPhone 版本,因为我的一些用户使用旧版本 iPhone 可能无法运行该应用程序。

显然,我可以制作一个可以在 iPad/iPhone OS 3.2 和 iPhone/iPhone OS 2.0 上运行的混合应用程序,但这将是一个难以维护的地狱,需要进行许多 API 调用更改等。

哪种方法最好:混合版本还是 iPad 的单独代码分支?

【问题讨论】:

【参考方案1】:

1) fork 代码,但是...

2) 创建通用应用程序。

基本上,从现在开始制作一个仅支持 OS3.2 的新版本。该单一版本可以包含更新的 iPhone 应用程序和新的 iPad 应用程序,让您在未来轻松地共同开发它们,并在它们之间重用视图控制器和模型。这就是 Apple 希望您这样做的方式。查看有关通用应用程序的文档。

【讨论】:

【参考方案2】:

分叉你的代码。无论如何,您可能会想要一个新的 UI 或新的图形代码来适应更大的屏幕,所以您实际上是在寻找一个使用大量现有类的“新”应用程序。

【讨论】:

谢谢!这对我来说似乎是合乎逻辑的方法,特别是我的这个应用程序使用大图像,这将使 iPhone 的可执行文件很大。无论如何,我认为即使对于新应用程序,这也可能是最好的方法,除非您愿意在两个平台上为相同的操作系统编写代码并且您的图形很小。【参考方案3】:

将您的 Base SDK 设置为 iPhone 3.2 设备。将您的 iPhone 部署目标设置为 2.0。调用 iPhone 3.2 API 时使用 AvailibilityMacros。然后为 iPad 创建不同的 UI 代码并制作通用应用程序。那是世界上最好的。除非该人拥有 iPhone 并且已经购买了您的应用程序,否则您将不会获得新的购买。如果您因为 iPad 版本而对获得更多收入更感兴趣(也许 iPad 版本具有更多功能?)那么您应该分叉您的代码,以便您可以为 iPad 应用程序设置不同的价格点。如果我理解正确,您可以始终将 fork 保留在同一个 xcode 项目中,这样您仍然可以使用共享的模型和控制器,并且在构建时只需选择要构建的目标。因此,作为开发人员,您可以两全其美。

根据 admob 统计数据: iPhone OS Statistics 如果您的客户只是 iPhone,那么人们不在 3.0

【讨论】:

我之前已经说过了,但这 32% 并不是一个很好的目标受众。如果他们不愿意为完整的操作系统升级支付 5 美元,他们为什么要为您的应用程序付费?无论如何,由于 iPod touch 的 3.0 更新免费,这个数字可能会缩小:iphonealley.com/current/… 另外值得注意的是,这些统计数据并没有真正显示圣诞节之后,而且 iPod touch 的销量总是在圣诞节达到顶峰。 2.x 上的 32% 可能会大幅下降。此外,由于人们有更多的休息时间,他们可能会花时间进行更新。我知道我的父母不会更新他们的,除非他们有几天的假期。【参考方案4】:

您的应用是否有订阅组件(即在初次购买后让您赚钱)或服务合同?

如果答案是否定的,我会高度考虑将所有内容都移至 3.2 - 你真的想重新移植更改吗?仍在使用 2.0 操作系统的用户(可能是少数,甚至包括越狱者,因为 3.1 已经越狱了一段时间)不必升级到新版本。 iPhone 应用程序的期望是新版本是免费的,而不是新版本是免费的并且总是在旧操作系统上运行。

作为使我的操作系统保持最新的用户,如果您花费大量时间来支持未升级的用户,我实际上会感到沮丧;我觉得你最好把时间花在添加新功能上。

【讨论】:

问题是这样的:这家伙有一部使用 OS 2.0 的 iPhone。他买了我的申请。我搬到3.2。这个人和其他人现在很生气,因为该应用程序停止为他们工作。另一个问题是:iTunes 或 iPhone 上的 Appstore 应用程序是否允许使用 OS 2.0 的人下载 3.0 版本的应用程序?如果是,这是最糟糕的,因为新版本(不在该人的设备上工作)将覆盖工作版本。我不确定您购买/下载项目时是否检查了 iPhone 版本。 如果您使用的是 2.0,至少您可以发出警告说不要下载此版本,但我相信有一种方法可以标记它,因此它不会显示为可用更新.他们已经运行的版本将继续工作(假设不涉及 Web 服务)。在某些时候,您将不得不放弃不想将其操作系统升级到 2.0 以上的用户——无论是 3.2 发布还是 4.3 或 5.8 发布都取决于您,但作为 iPhone 应用程序的频繁购买者,我会更高兴你添加新功能而不是支持旧操作系统。

以上是关于将 iPhone 应用程序移植到 iPad——单个应用程序还是 fork?的主要内容,如果未能解决你的问题,请参考以下文章

移植的 iPad 应用程序 - 应用程序 ID 和配置文件应该相同吗?

用于 iPhone/iPad 的 Qt?

在 iPad 上的 UIPopoverController 中显示 iPhone-View (iPhone SDK)

有没有办法检测扩展是不是在 iPad 和 iPhone 上运行

在 iPad 端口中管理视图控制器

锁定iPhone / iPod / iPad,因此它只能运行一个应用程序