我正在尝试在iOS的Swift 4中启用应用程序内购买,并且在测试时无法正确显示(或加载)应用程序中的显示名称和说明。我确实收到了放在if (products.count == 0) {
中的错误处理消息。我无法获得在AppStoreConnect中设置的产品标题和产品说明,以便在测试我的应用程序时正确加载。相反,代码认为没有产品,因为它在if (products.count == 0) {
闭包中运行代码。我对其他所有内容进行了四重检查(例如,捆绑包ID,产品ID,StoreKit的导入,设置了委托,设置了AppStoreConnect端的所有内容,等等)。没有Xcode警告,应用内购买状态为“准备提交”。有什么建议么?
var product: SKProduct?
var productID = "myProductID"
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
var products = response.products
if (products.count == 0) {
productTitle.text = "Warning" // GETS DISPLAYED
productDescripton.text = "Unable to connect to In-App Purchase." // GETS DISPLAYED
} else {
product = products[0]
productTitle.text = product?.localizedTitle
productDescripton.text = product?.localizedDescription
buyButton.isEnabled = true
buyButton.alpha = 1.0
}
let invalid = response.invalidProductIdentifiers
for product in invalid {
print("\(product)")
}
}
答案 0 :(得分:0)
会导致这种情况而不会发出警告的常见原因是:
您的产品尚未处于“准备提交”阶段。这通常是由于缺少屏幕截图而导致的,即使对于沙箱,也是必须的(您可以上传空白图像进行沙箱测试)。
您尚未在App Store Connect中签署“付费应用程序”协议
这是一篇不错的博客文章,其中详细介绍了所有内容:Configuring In-app Products is Hard
答案 1 :(得分:0)
如果您是集成应用内购买的新手,则应阅读此书。如果您有干净的代码,并且认为您在App Store Connect中已正确设置了所有内容,但仍然无法正确测试。具体来说,如果您的产品数组在不应该显示为空时显示为空。然后,确保已完成以下操作:
1)通过用户和在App Store Connect中访问来设置沙盒测试器。这需要使用iTunes,App Store或Apple尚未使用的电子邮件进行设置。
2)通过App Store Connect填写协议,税收和银行业务中的所有必要表格。您会知道,当“付费应用程序”显示“活动状态”时,所有内容都会填写完毕。
3)在已从iTunes和App Store注销的真实设备上进行测试。