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

时间:2012-11-02 14:14:21

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

我正在决定如何构建我的应用内购买。我的目标是在没有我自己的服务器基础设施的情况下

我的应用会生成PDF格式的报告,该报告通过电子邮件导出。我想将报告数量限制为3,之后必须购买另外3个报告。报告的所有数据以及报告本身都是在设备上本地创建的。

这应该是 Non-Consumable 类型吗?也许不是,因为它在documentation中说这应该只购买一次。但我希望用户能够再次购买另外3个甚至10个报告。但是,它还说这种类型应该在安装了应用程序的所有设备上自动提供,这就是我想要的。

或者应该是 Consumable 类型?再次,这似乎不合适。文档声明每次用户需要该项目时都必须购买。从概念上讲,这似乎很接近,但如果在iPhone上消耗了2个报告,我该如何跟踪,并且每个设备上仍然应该有一个报告?

我想我们可以排除 Auto-Renewable Subscription

也许它应该是 Non-Renewable Subscription 。但是,我不希望我的报告信用有一个到期日期,理想情况下它们应该传播到所有设备,这种类型也不提供。

我愿意在全设备传播上妥协。应该准确跟踪信用额度,并且应该可以无限量地购买。

如何在应用中实施?在启用导出按钮之前,只检查NSUserDefaults中的数字?每次导出报告时都可以以某种方式通过StoreKit进行检查吗? (这是电子邮件导出,因此无论如何,在线是先决条件)。

是否可以避免使用自己的服务器基础架构?如果没有,我需要追踪什么?

有任何想法,指导和建议吗?

2 个答案:

答案 0 :(得分:2)

正如Black Frog的回答中提到的那样,依靠Apple的方面可能是一个更难以解决的问题,只是为了避免服务器基础设施。您必须撤销旧购买并计算用户支出的金额以及剩余的金额。即便如此,我想你需要一台服务器。

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

  • 实施应用内(iOS)的客户端
  • 对于服务器端,您需要; (最小努力)
    • 两个表,一个持有用户及其剩余使用时间(信用)和一个保存购买报告
    • 两个脚本,(简单的几行几行),一个用于减少学分,一个用于保存Apple的收据信息,以及验证它。

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

此处需要注意的另一个重要事项是,应用内购买可以伪造,只有这样才能确保购买的收据,请查看here。并且还要注意,使用php脚本会更容易。如果您尝试发送检索到的收据并将其发送到用户设备进行验证,那么您将为此实现整个班级。

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

答案 1 :(得分:0)

由于您不想创建自己的服务器基础架构,因此用户将无法使用您的应用获得最佳体验。忘了一分钟不同类型的应用内购买。假设您跟踪用户可以在加密文件中在设备上生成的报告数。假设该文件位于NSApplicationSupportDirectory

摘自Determining Where to Store Your App-Specific Files上的Apple文档:

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

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

这是可能发生糟糕用户体验的地方。假设我有一台设备,我购买了5份报告。我只使用2.假设我的设备存储空间不足,我想暂时删除你的应用程序。当我再次安装它时,我已经丢失了3份报告。这就是您需要服务器来跟踪购买记录/历史记录以及生成报告的原因。