【问题标题】:iOS App Purchase DateiOS 应用购买日期
【发布时间】:2012-06-11 15:08:57
【问题描述】:

我正在尝试一种新的市场策略,因此我现在将免费提供我的 0.79 欧元应用程序,并通过应用程序内购买来解锁所有内容。我也不想背叛已经购买过的用户,所以我想对已经购买过应用的用户进行检查,不需要购买应用内支付来解锁。

我的问题是......我可以查看应用程序的购买时间吗?或者也许有一个简单的方法?

【问题讨论】:

  • 感谢您的回答,但我需要一些不会在用户删除应用程序后搞砸的东西。我需要一些东西,比如让已经拥有该应用程序的人“免费”进行应用内购买,以便在删除应用程序时可以恢复它。
  • 应该能够访问之前购买的应用程序版本/购买价格是可能的(而不是侵犯隐私),但 App Store 在这方面非常缺乏考虑(它甚至不支持付费升级,尽管最初的“你已经购买了这个应用程序的早期版本”消息暗示了降价升级的可能性)。我最好的建议是file an enhancement request

标签: iphone objective-c ios in-app-purchase


【解决方案1】:

只是为了更新这个,这是可能的。看看这个问题的答案——收据中的一个字段是“原始购买日期”

A complete solution to LOCALLY validate an in-app receipts and bundle receipts on iOS 7

【讨论】:

  • 原始购买日期只是IAP条目的字段,应用程序本身不存在。应用购买日期也在应用收据中,但没有记录。
  • 糟糕!我想我将“原始应用程序版本”(在应用程序级别)与“原始购买日期”混淆了,后者(正如您所指出的)在 IAP 数据中
  • @Mecki “收据创建日期”怎么样?可以将其用作购买应用的日期
【解决方案2】:

您无法确定地执行此操作,因为无法检查用户是否购买了该应用程序,因为无法向操作系统询问安装/购买日期。

按照建议,您可以将其保存在NSUserDefaults,但如果用户删除应用程序,此信息将丢失。

可以保存在keychain中,如果删除应用程序不会清除,但问题仍然存在,因为如果iOS设备恢复,这些设置可能会丢失。

【讨论】:

  • 至少在 iOS 7 中这不再正确。正确答案见below
  • @Frederik 是的,但是当这个答案写出来时它是正确的。
  • @rckoenes 仍然是正确的,因为官方的购买日期只存在于应用内购买,而不是应用本身。
  • @Mecki 不正确。原始应用购买和 IAP 都会生成收据。
  • @DanLoewenherz 是的,我知道那个页面。这是字段的文档:developer.apple.com/library/content/releasenotes/General/… 正如您所看到的,根据此文档,应用程序没有购买日期。您在应用收据字段下的哪个位置看到购买日期? Receipt Creation Date 没有购买日期!而Purchase Date 字段仅存在于In-App Purchase Receipt Fields
【解决方案3】:

rckoenes 的解释是正确的。我最近经历过这种情况,我已经考虑了这里的答案中提到的选项。我最终的选择是发布另一个应用程序扩展(如“pro”或“lite”等),而不是现有应用程序的版本。这将消除处理应用程序购买状态的所有麻烦。然后,您将拥有一个包含所有高级内容的完整付费版本的应用程序和一个包含应用程序内购买的免费版本来解锁内容。希望这会有所帮助。

【讨论】:

  • 我已经尝试了 2 App 的方式,但是 App 被拒绝了,因为“你不能再那样做了,但你必须实现应用内购买”。顺便说一句,我不喜欢有 2 个需要相同更新的应用程序...
  • 可能遗漏了一些内容。名字应该有区别。 2 应用程序模型只是一个选择问题,我猜。如果您浏览一下商店,您就会知道几乎所有流行的游戏/应用程序都使用相同的模型。对于更新,您可以通过将应用程序开发为单个而不是两个来处理它,项目并在某些定义指令的基础上实现您的逻辑。无论如何,这就是我处理事情的方式,很想知道你最终会怎么做。
  • 是的...我正在考虑一种简单且更友好的方式。无论如何感谢您的提示:-)
【解决方案4】:

假设您当前版本的应用程序保存状态,在第一次启动应用程序的下一个版本时,您可以检查任何保存状态(例如,NSUserDefaults 中的键、文档目录中的文件等。 )

你应该只做一次,所以你需要在其他地方有另一个标志来告诉你检查已经执行。

【讨论】:

  • mh 但是当用户删除并重新安装应用程序时会发生什么?
  • 是的,好点...而且,他们的购买日期可能不是他们第一次打开应用程序的日期
【解决方案5】:

这应该很简单。如果您知道新应用程序何时上线,您只需检查安装日期/时间(首次运行时将日期/时间存储在钥匙串中)。在免费应用上线日期/时间之前安装应用的用户可以访问内容。如果您担心新用户弄乱日期/时间,请使用在线时间服务来获取实际时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多