feat(deeplink): entitlement associated-domains pour coach.hypnotruck.ch
Aucun .widgetURL ne ramenait dans l'app : la Live Activity, les deux widgets iPhone et les deux complications Watch pointent sur des URL https, mais sans entitlement associated-domains ni fichier d'association servi, iOS ouvrait Safari — où le cookie d'auth de la WKWebView n'existe pas. Le versant serveur est déjà en prod (coach_sportif 8ec0047 : route AASA + deeplink.js). Reste la capability à vérifier dans Xcode côté Mac, cf. COWORK.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
25
COWORK.md
25
COWORK.md
@@ -51,6 +51,31 @@ dans **`docs/routine-watch-runbook-mac.md`** (archi, étapes, débogage).
|
|||||||
- Côté backend `coach_sportif` : **déjà en prod** (`/api/routine`,
|
- Côté backend `coach_sportif` : **déjà en prod** (`/api/routine`,
|
||||||
`/api/routine/check`, `/api/routine/day`, `data/routine_log.json`).
|
`/api/routine/check`, `/api/routine/day`, `data/routine_log.json`).
|
||||||
|
|
||||||
|
## 🔗 Universal Links (2026-08-06, dev — non compilé)
|
||||||
|
|
||||||
|
Constat : **aucun** `.widgetURL` ne ramenait dans l'app. La Live Activity
|
||||||
|
(`CoachLiveActivityWidget`), les deux widgets iPhone (`CoachWidgets` → `/calendar`
|
||||||
|
et `/forme`) et les deux complications Watch pointent tous sur des URL
|
||||||
|
`https://coach.hypnotruck.ch/…`, mais l'entitlement `associated-domains` était
|
||||||
|
absent et `/.well-known/apple-app-site-association` renvoyait 404 → **un tap
|
||||||
|
ouvrait Safari**, où le cookie d'auth injecté dans la WKWebView n'existe pas :
|
||||||
|
écran de login.
|
||||||
|
|
||||||
|
- **Backend — déjà en prod** (commit `8ec0047`) : route AASA publique déclarant
|
||||||
|
`TZ2PVTRKNY.ch.hypnotruck.coach` sur `/live`, `/routine`, `/forme`,
|
||||||
|
`/calendar` (chemins énumérés un par un pour ne pas détourner
|
||||||
|
`/calendar.ics`), et `static/deeplink.js` qui écoute `appUrlOpen` et amène la
|
||||||
|
WebView sur le bon chemin — Capacitor ne le fait pas tout seul.
|
||||||
|
- **Côté ce repo** : `App.entitlements` gagne
|
||||||
|
`com.apple.developer.associated-domains = applinks:coach.hypnotruck.ch`.
|
||||||
|
- ⚠️ **Étape Mac** : ouvrir la cible **App** → *Signing & Capabilities* →
|
||||||
|
vérifier qu'**Associated Domains** apparaît avec `applinks:coach.hypnotruck.ch`
|
||||||
|
(l'entitlement est là, Xcode doit régénérer le profil ; si erreur de signing,
|
||||||
|
décocher/recocher *Automatically manage signing*). Puis rebuild.
|
||||||
|
- Effet attendu : tap sur la Live Activity → app → `/live` → la vue Liquid Glass
|
||||||
|
`CoachLiveView` s'ouvre d'elle-même (le JS de `/live` appelle
|
||||||
|
`openNativeLive`). C'est le point d'entrée qui manquait.
|
||||||
|
|
||||||
## 👉 À reprendre
|
## 👉 À reprendre
|
||||||
- ✅ **Phase 4 login — FAIT & DÉPLOYÉ** (révocation Apple à la suppression de compte) : code complet côté backend `coach_sportif` (commit `5ae6e2d`) + clé `.p8` déployée sur le VPS prod (vérifié 2026-06-26). Rien à coder. Détails : `coach_sportif/COWORK.md`.
|
- ✅ **Phase 4 login — FAIT & DÉPLOYÉ** (révocation Apple à la suppression de compte) : code complet côté backend `coach_sportif` (commit `5ae6e2d`) + clé `.p8` déployée sur le VPS prod (vérifié 2026-06-26). Rien à coder. Détails : `coach_sportif/COWORK.md`.
|
||||||
- **iOS — bloqué Mac** : builder + uploader TestFlight le natif accumulé (login Apple+Google natif, watchOS live, HeartRateRangeAlert). Sur le Mac : `cd ~/coach-ios && git pull && npm install && npx cap sync ios && open ios/App/App.xcworkspace` → Clean Build Folder → Archive → Upload.
|
- **iOS — bloqué Mac** : builder + uploader TestFlight le natif accumulé (login Apple+Google natif, watchOS live, HeartRateRangeAlert). Sur le Mac : `cd ~/coach-ios && git pull && npm install && npx cap sync ios && open ios/App/App.xcworkspace` → Clean Build Folder → Archive → Upload.
|
||||||
|
|||||||
@@ -16,5 +16,14 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>group.ch.hypnotruck.coach</string>
|
<string>group.ch.hypnotruck.coach</string>
|
||||||
</array>
|
</array>
|
||||||
|
<!-- Universal Links : sans ça, les .widgetURL https des widgets, de la Live
|
||||||
|
Activity et des complications Watch ouvrent Safari (où le cookie d'auth
|
||||||
|
injecté dans la WKWebView n'existe pas) au lieu de l'app. Le fichier
|
||||||
|
d'association est servi par le backend :
|
||||||
|
https://coach.hypnotruck.ch/.well-known/apple-app-site-association -->
|
||||||
|
<key>com.apple.developer.associated-domains</key>
|
||||||
|
<array>
|
||||||
|
<string>applinks:coach.hypnotruck.ch</string>
|
||||||
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
Reference in New Issue
Block a user