Как я могу проверить, выполняется ли мой общий код в виджете WidgetKit или в полном приложении?

#swift #swiftui #widget #ios14 #widgetkit

#swift #swiftui #виджет #ios14 #widgetkit

Вопрос:

Я работаю над новым приложением для iOS с виджетами. Написано в SwiftUI.

Большая часть моего кода используется совместно между целью виджета и целью приложения, но есть некоторые незначительные изменения стиля, которые я хочу внести между двумя целями.

Есть ли способ проверить, выполняется ли код в виджете или в приложении?

Ответ №1:

Вот возможная вспомогательная функция для определения, запускаетесь ли вы в виджете. Протестировано с Xcode 12 / iOS 14.

 func isInWidget() -> Bool {
    guard let extesion = Bundle.main.infoDictionary?["NSExtension"] as? [String: String] else { return false }
    guard let widget = extesion["NSExtensionPointIdentifier"] else { return false }
    return widget == "com.apple.widgetkit-extension"
}