App links and universal links
| Platform | Status | Where |
|---|---|---|
| iOS | done | vulture-ios/Modules/App/Sources/Application/SceneDelegate+Routing.swiftvulture-ios/Packages/Utilities/Sources/Utilities/URL+DeepLink.swiftvulture-ios/Modules/App/Resources/Entitlements/Release.entitlementsapplinks:vulture.aero |
| Android | done | vulture-android/app/src/main/AndroidManifest.xmlvulture-android/app/src/main/kotlin/be/fousa/vulture/servicesvulture-android/domain/servicesVerified App Links (autoVerify). |
| Web | done | vulture-web/app/association.rbvulture-web/app/asset_links.rb |
Behaviour
Section titled “Behaviour”https://vulture.aero/open/…links open in the app when it is installed:/open/soaringspot/<comp>and/open/soaringspot/results/<comp>[/<class>/<day>]open a competition or a day./open/soaringspot/flight/<id>downloads a contest flight from Soaring Spot./open/charronline/igc/<year>/<file>downloads a Charron.line flight.
- Every route waits until the app is unlocked (past the paywall when the free tier is off).
- Without the app the link opens the web page (or the App Clip on iPhone).
Platform differences
Section titled “Platform differences”- vulture-web serves the AASA (
/open/*and/auth/weglide, plus the App Clip) andassetlinks.json(release and debug fingerprints). Android claims/open/*only;/auth/weglidelooks legacy since WeGlide uses an API key. /open/flight?id=falls under/open/*on both, but only iOS routes it (Flight widget).vulture-android/docs/app-links.mdstill says the release fingerprint list is empty; vulture-web already has it.- Neither app calls
/api/open?url=(P7-D18).

