Aller au contenu principal

🧭 iOS — Navigation

Navigation typée avec AzeooDestination après connectUser.

let sdk = AzeooSDK.shared

sdk.navigate(to: .nutrition(.plan(id: "summer-plan-2025")))
sdk.navigate(to: .nutrition(.recipe(id: 42, name: "Pasta")))
sdk.navigate(to: .nutrition(.scanner(.ai)))
sdk.navigate(to: .nutrition(.search(initialMealType: .lunch)))

// Cross-module
sdk.navigate(to: .training(.workouts))

API de pile​

sdk.navigate(to: .nutrition(.search))

sdk.back()
sdk.backToRoot()
sdk.canGoBack { result in
switch result {
case .success(let canPop): …
case .failure: …
}
}

sdk.getCurrentRoute { result in … }

Sur iOS, à la racine du module, le retour système ne fait rien (pas de geste « quitter l'app »).


Conteneurs de modules​

sdk.setModuleContainer(AzeooUITabBarCoordinator(self, mapping: [
.nutrition: 1,
.training: 2,
]))
astuce

Guide complet UIKit + SwiftUI : UI multi-onglets.
Exemple : example/ios_example_uikit.

SwiftUI : AzeooSwiftUITabCoordinator. Personnalisé : implémentez AzeooModuleContainer.


Initialiser​

Passez la config des liens profonds dans AzeooSDK.initialize (voir Configuration).

Info.plist​

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>yourapp</string>
</array>
</dict>
</array>

Gérer l'URL​

func application(_ app: UIApplication, open url: URL, …) -> Bool {
AzeooSDK.shared.handleDeepLink(url) { handled in
if !handled { /* parse + navigate */ }
}
return true
}

Liens universels : transmettez l'URL de la même façon après la configuration Associated Domains.


Intégrer + naviguer​

let vc = sdk.modules.nutrition.getView(bottomSafeArea: false)
navigationController?.pushViewController(vc, animated: true)

// Or tab host
let tab = sdk.tabHost(for: .nutrition, bottomSafeArea: true)

Voir Composants UI · Module Nutrition.


Voir aussi​