我是应用内购买和 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 和错误。