首页 > 解决方案 > SwiftyStoreKit 和 AppStore Connect 版主的应用内购买问题

问题描述

我是应用内购买和 SwiftyStoreKit 的新手。

我在我的应用中进行了应用内购买并将其发送给审核。

我的申请版主拒绝并写了原因:

我们发现您的应用内购买产品在通过 Wi-Fi 运行 iOS 14.1 的 iPhone 和 iPad 上审查时出现一个或多个错误。

具体来说,您应用的应用内购买不显示应用的价格。此外,经过进一步审查,我们发现您的应用不允许用户购买应用内购买。

下一步

在您的服务器上验证收据时,您的服务器需要能够处理从 Apple 测试环境获取其收据的生产签名应用程序。推荐的方法是让您的生产服务器始终首先根据生产 App Store 验证收据。如果验证失败并显示错误代码“生产中使用的沙盒收据”,则应改为针对测试环境进行验证。

价格未显示可能是因为应用程序收到了答案代码:“skerrordomain code=0”或类似的东西。或者因为苹果服务器返回了 0 个产品。

也就是说,当 ViewController 启动时,应用程序从 Apple 服务器请求产品的价格,然后将其写入按钮。

我不知道到底是什么问题,因为在我的本地设备上购买是与沙盒用户一起工作的。在模拟器中我收到一个错误:“skerrordomain code=0”。

这是一个代码示例:

enum RegisteredPurchase: String {
    case item1 = "com.app.appname.item1"
    case item2 = "com.app.appname.item2"
    case item3 = "com.app.appname.item3"
}

purchases: [RegisteredPurchase]

var productList: Set<String> = []
for purchase in purchases {
    productList.insert(purchase.rawValue)
}
SwiftyStoreKit.retrieveProductsInfo(productList) { result in
    var products: Dictionary<RegisteredPurchase, String> = [:]
    for product in result.retrievedProducts {
        products[RegisteredPurchase(rawValue: product.productIdentifier)!] = product.localizedPrice
    }
    if (result.error == nil) {
        self.setupPrice(products)
    }
    
}

结果我得到了retrieveProducts。在本地设备上,所有 3 种产品都来了,在模拟器中我得到 0 和错误。

标签: iosswiftin-app-purchaseapp-store-connectswiftystorekit

解决方案


通过删除所有产品并创建新产品来修复。


推荐阅读