【问题标题】:Mac Catalyst error: Cannot override 'paymentQueue' which has been marked unavailableMac Catalyst 错误:无法覆盖已标记为不可用的“paymentQueue”
【发布时间】:2020-08-15 13:27:49
【问题描述】:

我在 Swift 中有一个 iOS 应用程序,它在 SKPaymentTransactionObserver 中实现了 paymentQueue(_:shouldAddStorePayment:for:) 方法。但是,当我使用 Mac Catalyst 将此应用程序移植到 Mac 时,每当我尝试在 Mac 上编译和运行它时,都会出现此编译错误,提示“无法覆盖已标记为不可用的 'paymentQueue'”。

我尝试在 paymentQueue 方法周围添加 #if os(iOS) ... #endif@available(iOS 11, *) 语句,但它仍然给我这个错误。

这是当前错误缠身的代码:

#if os(iOS)
func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {
    return true
}
#endif

还有其他人遇到这个问题吗?

【问题讨论】:

    标签: ios swift macos in-app-purchase mac-catalyst


    【解决方案1】:

    您可以使用!targetEnvironment(macCatalyst) 条件防止代码被编译到 Mac Catalyst 构建中:

    #if !targetEnvironment(macCatalyst)
    func paymentQueue(_ queue: SKPaymentQueue,
                      shouldAddStorePayment payment: SKPayment,
                      for product: SKProduct) -> Bool {
        return true
    }
    #endif
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多