7

我接近开发 iPhone 应用程序的最后阶段,并将发布它作为“精简”(广告支持)版本和“专业”(无广告,可能在某些时候具有附加功能)版本。

我在这里和其他地方都遵循了有关创建多个目标等的建议,并且能够毫无问题地构建这些目标。

但这确实让我想到了一个问题:处理从精简版应用程序过渡到专业版应用程序的最佳、最用户友好、可接受的方式是什么?

正如我所看到的 - 如果我的任何假设是错误的,请纠正我 - 可能有两种方法可以做到这一点:

  1. 为每个应用程序提供自己的 Bundle 标识符(即 com.companyname.fooapplite 和 com.companyname.fooapppro)。这将导致两者都被视为完全独立的实体。如果用户从一个移动到另一个,数据不会自动迁移,并且两者很可能同时安装在同一部 iPhone 上。

  2. 为每个应用程序提供相同的 Bundle 标识符(即 com.companyname.fooapp),以便将它们视为本质上相同的应用程序。如果他们下载并安装应用程序的精简版,专业版将覆盖它。精简版的数据保存在专业版中。

后者对我来说似乎很理想——我无法想象有人在购买了专业版后想要保留精简版——但这带来了一些问题:

  • 苹果甚至允许选项#2吗?

  • 使用选项 #2 会导致我应该注意的任何愚蠢行为,即。这两个版本以某种方式互相踩踏。

  • 如果不允许,是否有建议的做法来从基本上两个完全不同的应用程序迁移数据?我知道 StoreKit,但免费应用程序不支持它。

事实上,这个当前的应用程序并没有真正产生巨大价值的数据,最糟糕的事情是用户在升级到 pro 后将不得不重新输入一些身份验证凭据。但在未来,如果我要开发一个类似的应用程序来在本地存储有价值的数据,我想知道如何以无缝的方式最好地转换用户及其数据。

谢谢,

  • 杰夫
4

2 回答 2

3

另一种选择是通过 URL 将数据从 Lite 交换到完整版本。使用完整版本注册一个 myFullApp URL,并让 Lite 应用程序显示一个升级选项,该选项使用您想要交换的各种数据调用该 URL。

这确实需要用户启动您的 Lite 版本并点击一个按钮,但这也相当简单。

于 2009-10-03T13:49:16.863 回答
1

我自己没有尝试过,但是交换少量数据的第三种选择是使用 Keychain API。共享标识符存根的应用程序(com.companyname.foo作为父级com.companyname.foo.fooappcom.companyname.foo.fooapplite)应该可以从一个应用程序写入钥匙串并从另一个应用程序读取。还没有看到这样做,但很多人声称这是可能的。无论如何,钥匙串可能是存储身份验证凭据之类的好地方。

选项四是让精简版应用程序在您操作的服务器上存储一些用户数据,并让完整的应用程序从那里检索它,但这种方法存在各种问题。

于 2009-10-03T11:17:19.300 回答