处理从'lite'到'pro'版iPhone应用程序的数据迁移

时间:2009-10-03 10:07:17

标签: iphone xcode version app-store

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

我已经按照这里和其他地方的建议来创建多个目标等,并且能够毫无问题地构建这些目标。

但这确实让人想起一个问题:什么是最好的,用户友好的,可接受的方式来处理从精简版应用程序转换为专业版的过程?

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

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

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

  3. 后者对我来说似乎很理想 - 我无法想象有人想在他们刚购买专业版之后保留精简版 - 但这会带来一些问题:

    • Apple是否允许选项#2?

    • 使用选项#2会导致我应该注意的任何愚蠢,即。两个版本以某种方式踩在一起。

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

    实际上,这个当前的应用程序并不真正生成具有巨大价值的数据,最糟糕的事情是用户在升级到专业版时必须重新输入一些身份验证凭据。但是,如果我要开发一个类似的应用程序,在本地存储有价值的数据,我想知道如何以无缝方式最好地过渡用户及其数据。

    谢谢,

    • 杰夫

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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