什么是正确的应用内购买产品类型?

3

我正在决定如何构建我的应用内购买结构。我的目标是不使用自己的服务器基础设施。

我的应用程序生成PDF格式的报告,通过电子邮件导出。我希望限制每个用户只能生成3份报告,之后就必须购买另外3份。所有报告的数据和报告本身均在设备上本地创建。

这应该是非消耗品类型吗?也许不是,因为文档中说这应该是一次性购买。但是我希望用户能够再次购买3或甚至10份报告。然而,它还指出此类型应在安装了应用的所有设备上自动可用,这正是我想要的。

或者应该使用“可消耗”类型?但这似乎不太合适。文档中指出它“必须每次用户需要该项目时购买”。从概念上讲,这似乎很接近,但如果在 iPhone 上消耗了两份报告,仍然应该在每个设备上保留一份,那么如何跟踪呢?
我想我们可以排除“自动续订订阅”。
也许它应该是“非续订订阅”。然而,我不希望我的报告积分有过期日期,最理想的情况是它们能够传播到所有设备,但这种类型也无法提供。
我愿意在所有设备的传播上做出妥协。积分应该被准确地跟踪,并且应该可以购买无限数量。
在应用程序中如何实现这一点?只需在NSUserDefaults中设置一个数字,然后在启用导出按钮之前进行检查即可吗?是否可能通过StoreKit每次导出报告时进行检查?(这是邮件导出,因此在线是先决条件)。

是否有可能避免使用自己的服务器基础设施?如果不行,我需要追踪哪些内容?

有什么想法、指导或建议吗?


详细的问题定义加1。 - Bartu
2个回答

2
正如黑蛙的回答中所提到的,依赖于苹果方面可能会更难以解决只是为了避免服务器基础设施。你需要撤销旧购买并计算用户花费和剩余金额。即使是这样,我想你也需要一个服务器。

我将尝试将整个可消耗的应用内循环分成几个部分;

  • 实现您的应用程序客户端(iOS)
  • 对于服务器端,您将需要; (最小的努力)
    • 两个表,一个保存用户及其剩余使用次数(信用额度),另一个保存购买报告
    • 两个脚本,(在php上容易只有几行)一个用于减少信用额度,一个用于保存来自Apple的收据信息以及验证它。

基本上,您不需要整个基础架构来实现应用程序内的服务器端,所以不要让它吓到您。就我所看到的,保留您向用户出售的每个信息比依赖于Apple方面更安全。

这里还要注意的另一件重要事情是,应用内购买可以被伪造,防止这种情况的唯一方法是验证购买的收据,可以查看这里。还要注意,使用php脚本会更容易。如果您尝试将检索到的收据发送并从用户设备发送进行验证,则需要实现整个类。

如果您有任何想法,请告诉我,我会尽力详细说明。


听起来非常有说服力。我会调查一下我在服务器端需要做什么,然后告诉你。 - Mundi

0

因为您不想创建自己的服务器基础设施,用户使用您的应用程序时体验可能不是最佳的。先不考虑不同类型的应用内购买。假设您在加密文件中跟踪用户可以在设备上生成的报告数量。假设该文件位于NSApplicationSupportDirectory中。

摘自苹果文档确定存储应用程序特定文件的位置

  • 您的应用程序为用户创建和管理的资源和数据文件。您可以使用此目录存储应用程序状态信息、计算或下载的数据,甚至是用户创建的数据,这些数据由您代表用户进行管理。
  • 自动保存文件。
  • 在iOS中,此目录的内容由iTunes备份。

因此,每次用户进行应用内购买时,您都会按照数量增加计数。每当用户生成文档时,我会减少它。而且,通过iCloud,此信息在用户拥有的所有设备上都可以使用。

这就是糟糕的用户体验可能发生的地方。假设我有一个设备并购买了5份报告。我只使用了其中的2份。假设我的设备存储空间已满,我想暂时删除您的应用程序。当我再次安装它时,我失去了我还剩下的3份报告。这就是为什么您需要一个服务器来跟踪/记录购买和报告生成的历史记录。

我喜欢你的想法。我能不能用iCloud中的一些键值存储来跟踪学分数量,以避免重新安装的问题呢?但也许这不可靠,因为苹果不能保证立即传播。 - Mundi
假设我有一个应用程序在iCloud中保存了100 MB的数据。但是,如果我不再需要这个应用程序,我会将其从我的设备中删除。因为我不希望这些数据永远留存在iCloud中,这将占用我的存储空间限制。请参考这里:(http://stackoverflow.com/questions/11431115/deleting-an-ios-app-with-documents-in-the-icloud-enabled-folder) - Black Frog
您需要在应用内购买方面提供完整的免责声明。解释说,如果他们删除了应用程序,则会失去生成报告的任何未使用的信用点。 - Black Frog
我不知道这有多相关。我只会存储几个字节(一个NSNumber)。在你引用的帖子中,它指出数据确实会持久存在 - 这是应该的! - Mundi
尝试一下并进行一些用户测试。我没有保存任何iCloud或进行任何应用内购买。 - Black Frog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接