首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查是否已经购买了SKProduct

检查是否已经购买了SKProduct
EN

Stack Overflow用户
提问于 2018-08-29 10:53:39
回答 2查看 2.6K关注 0票数 4

Android谷歌收费应用程序提供了所有关于产品的信息(包括购买与否)。

那iOS在应用程序中的购买呢?

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

Android使用Google服务,AIDL在离线模式下获得已经购买的物品

为了在Android中安全起见,我们可以验证用户是否真的购买了物品(并且没有使用一些hack应用程序免费获得)- 实践#验证-购买-服务器

当用户的设备internet启用时,我们可以对已经购买的项目进行额外的验证(尽管只在购买项目时才检查它就足够了),如果网络被禁用,我们可以临时说用户购买了它(但是如果他还没有购买它,那么无论如何互联网是必需的,我们将在我们的服务器上验证它,在这种情况下)

那么iOS是如何工作的呢?它有一些,我不知道,iTunes服务来获取特定应用的IAP信息吗?

EN

回答 2

Stack Overflow用户

发布于 2020-07-11 19:56:30

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

票数 1
EN

Stack Overflow用户

发布于 2018-08-29 12:22:05

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

一旦您在App连接中设置了应用程序内采购,您将拥有购买in。

要检索关于它们的信息,您应该使用购买ids创建一个SKProductRequest。这将返回所需的信息。

代码语言:javascript
复制
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.
    }
  }
}

这里是一个链接,专门讨论如何检索应用程序内的采购信息,并包含示例代码。

这里是一个指向Apple文档的链接,该文档介绍了整个应用程序内购买设置过程。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52075690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档