Проблема с поддержкой кремниевых компьютеров Apple Mac из-за 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. Согласно статье « Создание универсального двоичного файла macOS », я добавляю макрос, и код запускается только в iOS, но ошибка все еще существует. Какие-либо предложения?
#if !targetEnvironment(macCatalyst) && os(iOS)
Button(action: { showRecommendedApp.toggle() }) { Text("App recommended".localized)
.appStoreOverlay(isPresented: $showRecommendedApp) {
SKOverlay.AppConfiguration(appIdentifier: "12345", position: .bottom)
}
#endif
1 ответ
Компьютеры Mac M1 могут запускать двоичные файлы iOS напрямую, им не нужна сборка Mac Catalyst.
Вы не можете использовать #if для проверки M1 во время компиляции, поскольку это один и тот же двоичный файл, работающий на iOS и Mac M1.
Вы можете использовать проверку времени выполнения <tcode id="1471792"></tcode>.
if !ProcessInfo.processInfo.isiOSAppOnMac {
Button ...
}
Вы по-прежнему будете получать предупреждение, но знаете, что во время выполнения оно будет обработано правильно.