在iOS中自动更新应用程序内购买

在iOS中自动更新应用程序内购买,ios,ios7,in-app-purchase,Ios,Ios7,In App Purchase,我目前无法为我的应用程序实现IAP。以下是有关其工作原理的基本信息 我提供一年自动续费订阅服务。用户将支付IAP,他们将有权访问该服务 用户应该可以购买多个订阅。用户可能(尽管不太可能)希望连接到两个不同的服务,因此他应该能够同时支付两个订阅费 这是基本的想法,听起来很简单。因此,我非常成功地遵循了苹果的指示,直到SKPaymentTransactionStatePurchased状态调用了paymentQueue:updatedTransactions。这里出现了几个问题 显示您应该在NS

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

  • 我提供一年自动续费订阅服务。用户将支付IAP,他们将有权访问该服务
  • 用户应该可以购买多个订阅。用户可能(尽管不太可能)希望连接到两个不同的服务,因此他应该能够同时支付两个订阅费
这是基本的想法,听起来很简单。因此,我非常成功地遵循了苹果的指示,直到
SKPaymentTransactionStatePurchased
状态调用了
paymentQueue:updatedTransactions
。这里出现了几个问题

  • 显示您应该在NSUserDefaults中存储
    事务。transactionReceipt
    。所以我存储了一个数组(因为我想支持多个同时订阅)。问题是这在iOS7中已经被弃用了,所以我不知道该用什么来代替
  • 下一个问题是,我不知道如何处理这些数据。一旦我的应用程序被终止并重新启动,我只知道NSUserDefaults中我的数组的大小(例如,有两张收据,因此购买了两份订阅)。但是,如何读取收据编号中的数据,以便在自己的服务器上进行验证?如何获取订阅有效的日期范围?(我需要在订阅不再有效时阻止访问,假设停止自动续费并且它过期)。我所有的都是NSData对象,我不知道如何处理它们

  • 谢谢你的帮助

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

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

    和解码(使用OpenSSL和其他C++的东西),或者再次发送到苹果服务器进行解码和响应。p>


    一个更简单的方法,也许是一个更容易被“服务”应用程序审查所接受的方法,就是使用不续费的订阅。非续费订阅可能会重叠,因此应用程序可以轻松处理您在2项服务上遇到的问题。

    感谢您的回复。我有几个问题。1.这似乎只给你一张收据,而不是有多少笔交易。这张收据包括许多子收据或类似的东西吗?2.我使用什么API将其发送给苹果进行解码?