Проблема с поддержкой кремниевых компьютеров 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 ...
}

Вы по-прежнему будете получать предупреждение, но знаете, что во время выполнения оно будет обработано правильно.

Другие вопросы по тегам