Comment puis-je vérifier si mon code partagé s'exécute dans un widget WidgetKit ou une application complète?

Sep 26 2020

Je travaille sur une nouvelle application iOS avec des widgets. Écrit en SwiftUI.

La plupart de mon code est partagé entre la cible Widget et la cible App, mais il y a quelques changements de style mineurs que je souhaite apporter entre les deux cibles.

Existe-t-il un moyen de vérifier si le code s'exécute dans le widget ou dans l'application?

Réponses

Asperi Sep 26 2020 at 11:32

Voici une fonction d'aide possible pour détecter si vous exécutez un widget. Testé avec 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"
}