🧠iOS — Navigation
Navigation typée avec AzeooDestination après connectUser.
Concepts d'abord
Naviguer​
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.
Liens profonds​
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.