Summary: Deep linking in the 7Mind mobile app uses the app_links package for URI capture and the Adjust SDK for shortlink resolution on iOS. Schemes vary by flavor, and a route alias exists specifically to handle Aury webview links.
Sources: direct code inspection (lib/app/routes/deep_link_handler.dart, lib/app/app_module.dart, android/app/build.gradle in 7mind-mobile-apps-monorepo; commit bf75eb2ce)
Last updated: 2026-05-15
URL schemes by flavor
Configured at the Android flavor level (android/app/build.gradle:96-119):
| Flavor | Scheme | App ID |
|---|---|---|
| production | sevenmind | de.sevenmind.android |
| staging | sevenmindstg | de.seven_mind.android.stg |
| zpp | sevenmindstg | de.seven_mind.android.stg |
iOS schemes are declared in the Info.plist URL Types and match the same naming.
Capture and dispatch
lib/app/routes/deep_link_handler.dart uses the app_links package to:
- Read the initial link the app was launched from
- Subscribe to a stream of incoming links while the app runs
- Queue links arriving before
markAppReady()is called, so deep links that fire during splash do not get dropped - On iOS only, route non-
sevenmind://URIs through the Adjust SDK first to resolve any shortened tracking links into their underlying app URL
The Aury webview alias gotcha
lib/app/app_module.dart:216-221 registers /courseDetail (singular) as an alias of /courseDetails (plural). The Aury webview emits deep links with the singular spelling. Both routes resolve to CourseDetailModule. Removing the alias breaks Aury course launches.
Reference fix commit: bf75eb2ce. The pattern is intentional, not a duplicate.
Auth on deep links
Most deep-link targets are wrapped by AuthGuard(). Unauthenticated users who tap a deep link are redirected to the splash and auth flow; the original deep-link target is then handled after sign-in completes.
What agents should know
- Do not change or “fix” the
sevenmindstgscheme used by bothstagingandzpp. Tooling and Adjust campaigns rely on the existing values. - Adjust-shortlink resolution is iOS-only. Android shortlinks are expanded by the Play install referrer flow, not by Adjust SDK calls in-app.
- When adding a new route that should be deep-linkable, register it in
lib/app/app_module.dartand confirm the auth-guard behavior matches the rest of the table. - The
/courseDetailalias must stay until the Aury team can update its webview to use the plural form. See aury-companion. - Deep-link parameters arriving on a cold start may race with the splash; rely on the in-app queue in
deep_link_handler.dartrather than reading the URI in your own widget’sinitState.
Related
- 7mind-mobile-apps-monorepo — the repo this lives in
- aury-companion — the reason the
/courseDetailalias exists - mobile-analytics-stack — Adjust is shared with attribution