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

7 iphone xcode version app-store

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

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

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

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

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

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

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

  • Apple甚至允许选项#2吗?

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

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

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

谢谢,

  • 杰夫

inv*_*ame 1

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

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