ios - iOS 中的自动续订应用内购买

标签 ios ios7 in-app-purchase

我目前无法为我的应用实现 IAP。这是有关其工作原理的基本信息

  • 我提供为期一年的自动续订服务订阅。用户将支付 IAP,他们将有权访问该服务。
  • 用户应该可以购买多个订阅。用户有可能(尽管不太可能)想要连接到两种不同的服务,因此他应该能够同时支付两种订阅费用

这是基本的想法,听起来很简单。因此,我按照 Apple 的说明取得了巨大成功,直到 paymentQueue:updatedTransactions 被调用为 SKPaymentTransactionStatePurchased 状态。这里出现了几个问题。

  1. > Apple's documentation表明您应该将 transaction.transactionReceipt 存储在 NSUserDefaults 中。所以我存储了一个数组(因为我想支持多个同时订阅)。问题是这在 iOS7 中已被弃用,所以我不知道该用什么代替。
  2. 下一个问题是我不知道如何处理这些数据。一旦我的应用程序被终止并重新启动,我所知道的就是我在 NSUserDefaults 中的数组的大小(例如,有两张收据,所以已经购买了两个订阅)。但是,如何在自己的服务器上读取收据号码中的数据来做一些验证呢?如何获取订阅有效的日期范围? (一旦订阅不再有效,我需要阻止访问,假设停止自动续订并且它过期)。我只有 NSData 对象,我不知道如何处理。

感谢您的帮助!

最佳答案

你还有很长的路要走。保存 transaction.transactionReceipt 的目的是在将来某个时候将其提交到 Apple 服务器。 Apple 服务器通过发送该订阅的最新收据来响应收据。现在 transaction.transactionReceipt 已被弃用,您可以从板载收据中获取收据:

NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];

然后对其进行解码(使用 OpenSSL 和其他 C++ 内容),或者再次将其发送到 Apple 服务器进行解码和响应。

一种更简单的方法,或许也是“服务”的应用程序审核更容易接受的方法是使用非续订订阅。非续订订阅可以重叠,因此应用程序可以轻松处理 2 项服务的问题。

关于ios - iOS 中的自动续订应用内购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776386/

相关文章:

objective-c - 在 iOS 中显示带有斜体字母和上标指数的公式

iOS8 View 很好,但在 iOS7 上较小

iOS:在首次销售时以编程方式更改应用内购买的价格等级(向所有用户出售 IAP 限制时间?)

iphone - 无法在设备上测试 iOS 应用内购买,只有模拟器

ios - 是否有 API 可以告诉谁取消了他们的应用内购买?

iOS : how to use an asset with a shadow as a button image and make the shadow part not tappable?

ios - AFNetworking - 重试直到 API 正确响应

ios - 如何修复应用程序试图在目标上呈现一个无模态视图 Controller ?

ios - 删除表情符号错误

validation - iOS7 中非消耗性产品的服务器端收据验证和 transactionReceipt 弃用