Apple silicon Mac 支持问题,因为 SKOverlay.AppConfiguration

Apple silicon Macs support issue because of SKOverlay.AppConfiguration

我的应用使用appStoreOverlay显示推荐应用,但是提交到应用商店时出现错误。

ITMS-90863: Apple silicon Macs support issue - The app uses symbols that are not present on Mac:
/System/Library/Frameworks/_StoreKit_SwiftUI.framework/_StoreKit_SwiftUI
_$s7SwiftUI4ViewP010_StoreKit_aB0F03appD7Overlay11isPresented13configurationQrAB7BindingVySbG_So22SKOverlayConfigurationCyctRQOMQ

我认为 SKOverlay.AppConfiguration 不存在于硅 Mac 上。根据'Building a Universal macOS Binary',我只在iOS中添加了一些宏和代码运行,但错误仍然存​​在。有什么建议吗?

#if !targetEnvironment(macCatalyst) && os(iOS)
Button(action: { showRecommendedApp.toggle() }) { Text("App recommended".localized)  
    .appStoreOverlay(isPresented: $showRecommendedApp) {
        SKOverlay.AppConfiguration(appIdentifier: "12345", position: .bottom)
    }
#endif

M1 Macs 可以直接 运行 iOS 二进制文件,它们不需要 Mac Catalyst 构建。

您不能在编译时使用 #if 测试 M1,因为它在 iOS 和 M1 Macs 上是相同的二进制 运行ning。

您可以使用 isiOSAppOnMac 的 运行 时间检查。

if !ProcessInfo.processInfo.isiOSAppOnMac {
    Button ...
}

您仍然会收到警告,但您知道它会在 运行 时得到正确处理。