通过应用程序内购买将现有的iOS付费应用程序转换为免费增值模式

我目前在商店里有一个付费应用程序。 苹果公司也没有允许提交“精简”版本,所以我别无select,只能将当前的付费版本更新为免费增值模式。 我有第一次购买应用程序的v1用户没有失去function的问题。

有什么办法来确定应用程序是否已经从以前安装的版本更新,所以我可以解锁应用程序的付费部分?

两个类似的问题(从几个月前):

使用In App Purchase将现有付费应用转换为免费版本

iPhone +在App Store上升级现有的应用程序商店付费应用程序到免费应用程序+那些已经购买了付费应用程序的客户

使用iOS7,iOS应用可以validation包含应用下载date的app store收据。 通过使用这个上传date,您可以确定客户以前是否购买

现在有一个苹果认可的方式来在iOS和MacOS上执行此操作。 应用程序的最初下载版本可以使用信息密钥“ Original Purchased Version从收据中获得。 如果该版本在切换到IAP之前,您可以决定是否解锁function。

例如,一旦您检索到收据信息:

 NSArray *versionsSoldWithoutIAP = @[@"1.0", @"1.1", @"1.2", @"1.3"]; NSString *originalPurchasedVersion = [receiptInfoDict objectForKey:@"Original Purchased Version"]; for (NSString *version in versionsSoldWithoutIAP) { if ([version isEqualToString:originalPurchasedVersion]) { // user paid for the currently installed version } } 

欲了解更多信息,请参阅WWDC 13video使用收据保护您的数字销售 。 5点40分,主持人评论说:“我认为今年收据中最令人兴奋的事情,特别是如果你在商店里有付费应用程序,对于你们来说,我们已经在收据中包含了信息,从付费应用程序转变为免费应用程序与应用程序内购买,而不会离开已经支付您的应用程序的所有客户。

首先,我只想说我个人认为免费增值模式非常好。 它已经为许多开发人员制定得非常好。 人们喜欢下载免费的应用程序,并会一时兴起,但花费0.99美元之前花费更多的关注一个应用程序(这是由于免费的效果 – 更多的信息,请检查丹Ariely的书可预测非理性 )

有关免费增值的更多信息,谷歌它 – 已经有关于它的成功写了大量的文章。


好的,回到实际的问题:

这里有几个方法可以处理这样的情况,虽然这里不幸的事情是没有一个是愚蠢的。

  • 最好的解决scheme可能是让你的用户拥有账户。 不知道您的应用程序的具体情况,我不能说用户帐户是否适合您的应用程序。 存储在您的服务器上的用户帐户有许多额外的好处,包括用户pipe理,并跟踪用户做了什么购买。 这将允许用户删除应用程序,然后重新安装它,或获得一个新的设备,以维护他们购买的内容。 而且,无论何时使用应用程序内购买,您都应该在您自己的服务器上(或使用Apple)validation购买,这是一个基于服务器的用户pipe理系统所能做的。 如果您完全不顾自己的用户pipe理服务器,请检查Parse 。 它的死简单创build一个惊人的后端服务器(基本上是免费的)
  • iCloud Key /系统的值types。 我不是很熟悉这将如何工作 – 所以我会继续前进。
  • 另一个,不是简单的解决scheme(但更快/更容易实现)是使用NSUserDefaults 。 您可以在用户进行购买时存储对象,也可以存储用户安装应用程序的date。 然后,如果您发布更新将您的应用程序转换为免费增值。 然后在新的更新中,检查用户所做的购买或安装date,并作出相应的反应。 有关如何使用NSUserDefaults做到这NSUserDefaults ,请查看我的答案,以执行另一个问题: NSUserDefaults和应用程序版本 。 但是这个解决scheme确实存在以下缺陷:

  • 如果用户删除你的应用程序, NSUserDefaults将永远丢失

  • 如果用户没有安装设置NSUserDefault系统的更新,但随后使用新的免费增值模型安装了更新,则应用程序会将它们视为未购买内容。

总之,这是一个难题,没有太多简单/完美的select。

无论如何,

希望有所帮助!

我正在处理同样的事情,并提出了以下想法:创build一个新的名称和应用程序ID下的免费增值版本。 保持app store中现有的付费应用程序,但提高价格荒谬的是,在描述中明确指出,应用程序是为了维持对现有用户的支持,而新用户应该尝试免费增值版本。

现有的付费用户不会失去对其现有应用程序的支持,并且可以随时删除和安装,而无需重新购买。

您也不必更新旧的付费应用程序。 只要保持在应用程序商店。

缺点是,现有的付费用户将无法顺利迁移到免费增值版本,以获得未来添加的任何额外function,而无需重新支付已有的function。

仍然试图决定这是否会为我工作,但它可能是一个很好的select其他人。 评论赞赏。

我一直在想这个问题一段时间了。 我有相当数量的客户支付我的(在应用程序商店条款)高价位的利基应用程序,我不想告诉他们重新购买,因为我打算迁移到应用程序内购买模式。

我提出的想法(我会问苹果支持是否合法)是逐步淘汰当前的付费应用程序,但发布最新的更新,允许“解锁”应用程序购买的新应用程序的基础上应用内模型。 我正在考虑一个挑战反应机制:

  • 用户在他的设备上安装了付费应用程序
  • 用户安装新的应用内应用程序并将其打开。 新的应用程序检测付费版本,并提供解锁应用程序内购买(当然只有在该设备上,只要该应用程序不被删除)
  • 新的应用程序生成一个随机数,签名并通过URLscheme调用旧的应用程序
  • 旧的应用程序解密现时,添加+1一个,并再次签署。 通过URLscheme回到新的应用程序
  • 新的应用程序validation随机数并解锁function

该scheme可以使用预共享密钥轻松实现。 当然这是监狱设备上的一个弱点,但是每个存储应用内收据的应用都有这些问题。