首页 > 解决方案 > macOS 应用程序的 Xcode 本地环境中的 StoreKit (IAP) 不返回任何产品

问题描述

我正在尝试使用 Xcode 中的本地环境来测试macOS应用程序的应用程序内购买。我已按照 WWDC 2021 SKDemo 示例中的代码进行操作,但无济于事。问题是请求产品的调用没有返回任何产品。为了排除故障,我为多平台应用程序创建了一个最小的 Xcode 项目,它适用于 iOS,但不适用于 macOS。我在这两种情况下都编辑了方案,以便选择相同的 StoreKit 配置文件。这是基本代码(iOS 和 macOS 相同):

class MyStore : ObservableObject {
    @Published private(set) var products : [Product] = []
    
    init() {
        Task {
            await requestProducts()
        }
    }
        
    @MainActor
    func requestProducts() async {
        do {
            print("(1) before requesting products") // PRINTED ON BOTH iOS and macOS
            let storeProducts = try await Product.products(for: ["nonconsumable.motorcycle"])
            print("(2) after requesting products")  // PRINTED ON BOTH iOS and macOS

            for product in storeProducts {
                print("(3) adding product")         // PRINTED ONLY on iOS
                products.append(product)
            }
        } catch {
            print("STORE: Failed product request: \(error)")
        }
    }
}

在 iOS 上,所有三个打印语句都被输出,而在 macOS 上只有前两个。我似乎无法在 macOS 上使用本地环境进行 IAP 测试——我错过了什么?

我想知道这个问题是否与目标功能和签名有关:我已经为两个目标添加了应用内购买功能,并且我对两个目标都使用了默认的 Xcode 管理的签名。

macOS:12.0.1;Xcode 13.1;部署目标:macOS 12.0。

更新:如果我在 App Store Connect 中设置产品,并在 Xcode 方案中选择StoreKit Configuration : None那么它按预期工作。所以问题出在 macOS 上使用本地 StoreKit 配置时。

标签: xcodemacosin-app-purchasestorekit

解决方案


推荐阅读