From e715804dd96d71203a67eeaee831903cc5639bdd Mon Sep 17 00:00:00 2001 From: Sylvain Bettinelli Date: Thu, 6 Aug 2026 13:40:10 +0000 Subject: [PATCH] fix(widget): Photo et Scanner ouvraient une page au hasard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les deux liens utilisaient un schéma custom `coachapp://` que rien ne route : le projet passe par les Universal Links (entitlement associated-domains), comme les widgets Séance du jour et Score de forme, qui pointent tous deux sur des URL https. L'app s'ouvrait donc sur sa dernière page consultée — le score de sommeil en l'occurrence. Les liens passent en https://coach.hypnotruck.ch/meals?photo=1 et ?scan=1, et le schéma custom que j'avais ajouté à l'Info.plist est retiré : il ne servait à rien et aurait laissé une fausse piste. J'avais écrit ces URL sans lire comment les widgets voisins s'y prenaient — même faute que pour `todayISO`, supposer un mécanisme au lieu de le vérifier. Co-Authored-By: Claude Opus 5 --- ios/App/App/Info.plist | 8 -------- ios/App/CoachLiveActivity/CoachQuickWidget.swift | 14 ++++++++++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/ios/App/App/Info.plist b/ios/App/App/Info.plist index 7a57999..9e97689 100644 --- a/ios/App/App/Info.plist +++ b/ios/App/App/Info.plist @@ -81,14 +81,6 @@ com.googleusercontent.apps.817483900105-amoanmsold3j3k71retpjuhvrknsuunh - - CFBundleURLName - ch.hypnotruck.coach.deeplink - CFBundleURLSchemes - - coachapp - - diff --git a/ios/App/CoachLiveActivity/CoachQuickWidget.swift b/ios/App/CoachLiveActivity/CoachQuickWidget.swift index 187fac3..7ee7481 100644 --- a/ios/App/CoachLiveActivity/CoachQuickWidget.swift +++ b/ios/App/CoachLiveActivity/CoachQuickWidget.swift @@ -141,13 +141,19 @@ struct CoachQuickWidgetView: View { .font(.caption2) .labelStyle(.titleAndIcon) - // Photo et code-barres OUVRENT l'app : la caméra exige le premier - // plan. Le widget économise les navigations, pas le lancement. + /* Photo et code-barres OUVRENT l'app : la caméra exige le premier + plan. Le widget économise les navigations, pas le lancement. + + URL **https** et non schéma custom : le projet route ses liens de + widget par Universal Links (entitlement associated-domains), comme + les widgets Séance du jour et Score de forme. Un `coachapp://` + n'est routé nulle part — l'app s'ouvrait alors sur sa dernière + page consultée, au hasard. */ HStack(spacing: 6) { - Link(destination: URL(string: "coachapp://meals?photo=1")!) { + Link(destination: URL(string: "https://coach.hypnotruck.ch/meals?photo=1")!) { Label("Photo", systemImage: "camera.fill") } - Link(destination: URL(string: "coachapp://meals?scan=1")!) { + Link(destination: URL(string: "https://coach.hypnotruck.ch/meals?scan=1")!) { Label("Scanner", systemImage: "barcode.viewfinder") } }