2

通过应用内购买(自动更新)购买产品后,我点击服务器上的 API 以提供购买信息。

如何知道该产品是针对 API 更新的?

当用户取消该订阅时,如何知道?

4

2 回答 2

8

Swift 3:为了让您检测用户何时取消订阅,您需要执行以下操作;

  1. 下载应用收据
  2. 验证收据,以便您可以获取包含所有应用内购买和订阅字典的 json
  3. 现在,如果这是订阅购买,则在每张收据中都有一个名为cancellation_date的字典中的字段,否则不能用于其他应用内购买。如果这是 nil 则没有发生取消,但如果它的值包含取消日期,则确实发生了取消,并且根据苹果:

    取消日期 对于被 Apple 客户支持取消的交易,取消的时间和日期。

    将取消的收据视为从未购买过的收据。

然后下面的链接解释了您可以在收据中使用的所有字段;

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html

代码示例:

// Create receipt request
 let receiptRefreshRequest = SKReceiptRefreshRequest()

// Get the receiptUrl from the main bundle
 let receiptUrl = Bundle.main().appStoreReceiptURL

 //If the receipt file exist on local device
 if (receiptUrl as NSURL?)?.checkResourceIsReachableAndReturnError(nil) == true{

            // Get the file as data
            let receipt: Data = try! Data(contentsOf: receiptUrl!)


  }

现在您将收据发送到苹果服务器,以按照苹果推荐的方式使用您的服务器进行验证。从验证中获得回调后,您检查取消日期。

于 2016-08-10T23:22:32.673 回答
1

Apple 不提供任何内置于 iOS 或 REST API 来为您提供简单的订阅详细信息,也没有任何您可以在续订或取消方面收听和响应的回调。Apple 确实有一个 API,当给定用户的本地收据和在 iTunes Connect 中生成的“共享密钥”时,它会返回一个 JSON 对象,其中包含用户对您的应用程序的购买历史记录,包括他们当前的订阅信息。 更多信息请查看此链接

于 2016-06-21T13:21:19.087 回答