2015-02-08 155 views
1

我创建了一个应用程序,它是一个付费应用程序。现在我想让它免费,让更多的用户可以下载应用程序并在应用程序购买中使用,以限制某些功能。但是一些用户已经付款购买我的应用程序。如何在新用户的应用程序购买中同时实现对旧用户的全功能访问?支付应用程序的iOS应用程序内购买

+1

请添加新的标签,无论是用于Android还是iOS。任何人都可能会感到困惑。 – 2015-02-08 04:41:13

+0

谢谢大家。幸运的是,我只是推出我的应用程序几个星期。用户还没有太多。所以,我想我会在一段时间内免费购买应用内购买,并让当前用户免费购买。并更改下一版本更新的价格。谢谢 – 2015-02-15 05:17:05

回答

0

如果您连接到服务器以注册用户信息,则始终可以创建一个在应用程序启动时执行的API,以验证该用户是否是完全访问用户。

但我恐怕你的情况不是上述情况。

在这种情况下,您需要将您的数据(在此上下文中的某些加密密钥)与iCloud同步,并且在启动应用程序时,您可以验证用户的类型。

与包含设备格式场景的钥匙串相比,在iCloud中使用数据更安全。但绝对不是万无一失的。

其他解决方案可以使用Apple Purchase Receipt来验证以前购买的版本。但是这仅在iOS7以后才支持。

Checkout的开源库,了解收据解析: https://github.com/rmaddy/VerifyStoreReceiptiOS

所以结合多种策略是你的问题的唯一答案。

0

这是一个简单的例子,但是如果您正在服务器上使用数据库(而不是电话本身),那么您是否可以为每个计划销售的功能使用布尔值,并且只需设置该布尔值对于当前在数据库中的所有用户均为true。这是假设真的意味着他们已经购买了这个功能,而假意味着他们没有购买它。 在发布更新后的应用程序后,您可以运行此查询一次,然后每个用户对这些要销售的功能的默认值为false。

+1

感谢@ kacy,这是一个快速解决方案。但是,如果用户删除了应用程序并稍后重新安装。我不知何故需要提供一种方法让他们恢复购买,对吧?这是我不知道该怎么做的部分。对不起顺便说一下,我正在谈论iOS。谢谢 – 2015-02-08 04:57:30

+0

@CkwCfm如果用户删除了应用程序,您仍然可以在数据库中为用户存储此信息。当用户重新安装应用程序时,您可以使用存储在数据库中的信息。 – Kacy 2015-02-08 14:37:50

+0

混淆可能是因为我认为从答案中可以看出,你的意思是服务器上的数据库而不是iPhone应用程序中的数据库。 – 2015-02-08 19:35:12

0

这种情况没有完美的解决方案。

建议1:

推出最后一个付费更新。在此更新中,使用钥匙串来存储这些IAP标志。然后在免费版本中,检查钥匙串中的这些标志。即使应用程序被删除并在稍后使用免费版本重新安装,这也可以工作。但是,如果设备正在被完全重置,无论是由于某些iOS版本更新还是用户的原因,除非涉及备份和恢复,否则它将无法正常工作。

建议2:

不是一个建议。但是我已经看到AppStore上的类似应用只是推出免费版本。然后,应用程序发生了来自以前用户的糟糕评论!

1

您可以通过阅读App Store receipt来做到这一点。收据包含原始购买的版本号和日期。

有两个主要的注意事项:第一,这只适用于iOS 7及以上版本。其次,苹果公司不包括分析收据的代码(所以用户破解我并不太容易理解)。然而,还有onen源库,尽管使用普通的库会比较安全。

相关问题