更改付费应用程序免费,但知道用户以前购买它

我正在考虑更改我的付费iOS应用程序免费,使其ad based ,并有一个in-app purchase选项删除广告。

这听起来像是一个好主意,如果我刚刚启动应用程序,但我们有超过3万的付费下载,我不希望这些用户看到更新到免费的新版本的广告。

我在这里有什么select吗?

从iOS 7开始,可以使用正确的收据validation来完成。 在iOS 7下,您可以获取购买的应用程序的收据。 收据中的部分数据包括有关用户的原始购买版本的信息。 您可以查看该版本,并且如果它是在更新发布之前免费使用IAP,则可以select为用户提供全部function,而无需用户再次购买升级。

当然,如果你希望你的更新的应用程序在iOS 6下工作,这不是一个选项。

有关收货validation的详细信息,请参阅收据validation编程指南 。

如果您当前的应用程序有任何数据在用户默认或钥匙串那么可以是指标。 当应用程序第一次打开(在你的新版本)运行一些代码:

  1. 检查默认/钥匙串中的数据
  2. 如果find,启用付费内容/禁用广告
  3. 将这些数据迁移到一个新的密钥(所以你不要再次升级/免费赠送东西)

在支付应用程序上启动时,只需提供免费的inanpp购买就可以更容易。 一个button说“升级”。 然后切换那个免费的inapp支付下一个更新?

唯一的select是发布两个更新。 第一个会为NSUserDefaults写一个值,将它们标识为购买者。 第二个更新是您的广告支持的版本,可以读取这个购买者识别值并隐藏广告。

在iTunes连接,你可以生成在应用程序购买促销代码。 您可以为高级function创build一个IAP项目,并将其作为促销手动提供给购买者。 不是一个自动的解决scheme,但它可能会使你免于一些头痛。

不是真的,不是。 最好你可以做的是发布更新,而它仍然是一个付费应用程序,它向NSUserDefaults(或应用程序数据目录中的文件,写入哪个并不重要)写入一些值。 等待一个星期或不pipe你想要多长时间,然后发布一个更新,删除该代码,定时发布价格变化的同一天释放。