【问题标题】:Handling data migration from 'lite' to 'pro' version of iPhone app处理从“精简版”到“专业”版 iPhone 应用程序的数据迁移
【发布时间】:2010-12-03 13:25:12
【问题描述】:

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

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

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

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

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

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

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

  • Apple 是否允许选项 #2?

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

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

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

谢谢,

  • 杰夫

【问题讨论】:

  • Apple 不允许选项 #2;当您尝试提交第二个应用程序时,iTunes Connect 会抱怨。
  • 您好,我也面临类似的情况。如何在不丢失我保存的数据的情况下从我的应用程序的精简版升级到专业版。请帮忙。

标签: iphone xcode version app-store


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 感谢您的快速回复!钥匙链方法的有趣想法。我没有考虑过这个选项,它可能适用于我当前的项目。至于在集中式服务器上存储数据,这就是(简而言之)我正在使用我正在开发的这个应用程序做的事情 - 以及为什么我用这个应用程序在本地保存任何东西并不是非常重要的。我正在考虑的场景是,即。一个笔记应用程序,其中创建了大量用户可能理所当然地想要保留的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
相关资源
最近更新 更多