检查是否已购买SKProduct

时间:2018-08-29 10:53:39

标签: ios swift

Android Google Billing In-app提供有关产品的所有信息(包括是否购买)

iOS iOS应用内购买(IAP)怎么样?

我不想在用户购买后将购买的物品保存在本地(iOS的UserDefaults)或保存到我自己的服务器上

Android使用Google Play服务AIDL获取已经购买的商品即使在离线模式下

出于Android的安全性考虑,我们可以验证用户是否真的购买了商品(未使用某些黑客应用免费获取商品)-https://developer.android.com/google/play/billing/billing_best_practices#validating-purchase-server

启用用户设备互联网后,我们可以对已经购买的商品进行此额外验证(尽管仅在购买商品时就足以检查它),如果禁用了互联网,我们可以暂时说用户购买了商品(但是如果尚未购买,则仍然需要互联网,在这种情况下,我们仍将在服务器上对其进行验证)

那么iOS如何工作?它是否有一些iTunes Services(我不知道)来获取特定应用的IAP信息?

2 个答案:

答案 0 :(得分:0)

是的,在iOS上,您应该使用StoreKit获取有关该应用程序可用的所有应用程序内购买的详细信息。

在App Store Connect中设置应用内购买后,您将获得购买ID。

要检索有关它们的信息,您应该使用购买ID发出SKProductRequest。这将返回所需的信息。

import StoreKit

class YourPurchaseManagerClass: NSObject {
  var productsRequest: SKProductsRequest?
  var products: [SKProduct]?

  func validateProductIdentifiers(productIdentifiers: Set&ltString>) {
    // Create and start the 
    productsRequest = SKProductsRequest(productIdentifiers: productIdentifiers)
    productsRequest?.delegate = self
    productsRequest?.start()
  }
}

extension YourPurchaseManagerClass: SKProductsRequestDelegate {

  func productsRequest(_ request: SKProductsRequest,
                       didReceive response: SKProductsResponse) {

    // Store the products data. This will contain the information about the purchases
    products = response.products;

    for invalidIdentifier in response.invalidProductIdentifiers {
      // Handle any invalid product identifiers.
    }
  }
}

Here是一个专门讨论如何检索应用内购买信息并包含示例代码的链接。

Here是指向有关整个应用内购买设置过程的Apple文档的链接

答案 1 :(得分:0)

答案是检查应用程序的收据-您应该通过自己的服务器将收据发送给Apple以进行验证,但是您也可以在本地解析StoreKit收据。在这里您可以找到之前购买的商品。