Intégration de siri

Bonjour à tous,
j’ai trouvé ce tuto pour intégrer Siri à mon application iOs.
Je comprends que Siri s’intègre de différentes manières, je pensais que ça allait être plus simple que ça … je ne voulais pas de phase d’apprentissage forcément, mais simplement avoir des interactions fixées à l’avance. Sans doute n’ai-je pas tout saisi de Siri.

Ma question est : codant une app en swiftui, et n’ayant qu’un AppDelegate et SceneDelegate sans viewDidLoad, comment intégrer la dernière partie de ce tuto (qui a besoin de viewDidLoad) ?

Je suis très novice en SwiftUI, je n’en ai pas la moindre idée ; y a-t-il un moyen de faire coexister dans la même app une partie en SwiftUI et une partie en UIKit ?

Maxime en parle dans ces vidéo sur SwiftUI (que je n’ai pas regardé, d’ailleurs !). Partie 2.6 si je me souviens bien.

https://www.hackingwithswift.com/quick-start/swiftui/how-to-respond-to-view-lifecycle-events-onappear-and-ondisappear

Je me réponds :
On peut faire ça dans AppDelegate, la méthode :

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application( **_** application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: **Any** ]?) -> Bool {
    ...
        donateInteraction()
    ...
    }

    func donateInteraction() {
            let intent = IncrementIntent()
            intent.suggestedInvocationPhrase = "Increment the sets counter"
            let interaction = INInteraction(intent: intent, response: nil)
            interaction.donate { (error) in
                if let error = error as NSError? {
                    print("Interaction donation failed: \(error.description)")
                } else {
                    print("Successfully donated interaction")
                }
            }
    }
...
}

Inconvénient :
J’ai besoin d’avoir accès à un ObservableObject « ChronoState », que je dois populer/injecter à l’aide de la méthode .environmentObject(chronoState)…
Je la déclare dans le SceneDelegate.

Question : comment je peux la récupérer à partir de l’AppDelegate.
Sans ça, je crois que je vais devoir tout mettre en static.