应用内购买显示名称和描述未正确加载 - Swift 4

In-App Purchase Display Name and Description not properly loading - Swift 4

我正在尝试为 iOS 在 Swift 4 中启用应用程序内购买,但当我在应用程序中无法正确显示(或加载)显示名称和描述时测试。我确实收到了我在 if (products.count == 0) { 中输入的错误处理消息。当我测试我的应用程序时,我无法正确加载在 AppStoreConnect 中设置的产品名称和产品描述。相反,代码认为没有产品,因为它在 if (products.count == 0) { 闭包中运行代码。我四重检查了其他所有内容(即 Bundle ID、Product ID、StoreKit 的导入、委托已设置、AppStoreConnect 端的所有内容已设置等)。没有 Xcode 警告,应用内购买状态为 "Ready To Submit"。有什么建议么?

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)")
    }
}

会在没有警告的情况下导致这种情况的常见情况是:

  1. 您的产品不在 'Ready to Submit' 阶段。这通常来自丢失的屏幕截图,即使对于 Sandbox 也是必需的(您可以上传空白图像以进行 Sandbox 测试)。

  2. 您尚未在 App Store Connect 中签署 'Paid Applications' 协议

这是一篇很好的博客 post,它涵盖了所有内容,内容更详细一些:Configuring In-app Products is Hard

如果您是集成应用内购买方面的新手,那么您应该阅读本文。如果您有干净的代码并且您认为您在 App Store Connect 中正确设置了所有内容,但仍然无法正确测试。具体来说,如果您的产品数组在不应该显示为空时显示为空。然后,确保您已完成以下操作:

1) 通过 App Store Connect 中的用户和访问设置沙盒测试器。这需要使用尚未用于 iTunes、App Store 或 Apple 的电子邮件进行设置。

2) 通过 App Store Connect 填写了协议、税务和银行业务中的所有必要表格。当付费应用程序显示活动状态时,您会知道所有内容都已填写。

3) 正在已退出 iTunes 和 App Store 的真实设备上进行测试。