ScaleRocket/Mobile

Deep Linking

Configurer les schémas d'URL, les liens universels et tester les deep links dans votre app Expo.

Deep Linking

ScaleRocket Mobile utilise le schéma d'URL scalerocket:// pour les callbacks OAuth, les liens email et la navigation personnalisée.

Configuration du schéma d'URL

Le schéma d'URL est configuré dans app.json :

{
  "expo": {
    "scheme": "scalerocket"
  }
}

Cela permet à l'app de gérer les URLs comme scalerocket://path/to/screen.

ScaleRocket Mobile utilise les deep links pour :

UsageURLDescription
Callback OAuthscalerocket://La connexion Google/Apple redirige vers l'app
Réinitialisation du mot de passescalerocket://reset-passwordLe lien de reset par email ouvre l'app
Confirmation d'emailscalerocket://confirmLe lien de vérification par email ouvre l'app

Générer les URIs de redirection

Utilisez expo-linking pour générer les URIs de redirection pour OAuth :

import { makeRedirectUri } from "expo-linking";

const redirectUrl = makeRedirectUri({ scheme: "scalerocket" });
// Retourne : scalerocket://

Ajoutez cette URL aux URLs de redirection autorisées de votre backend :

  • Supabase : Authentication > URL Configuration > Redirect URLs
  • Convex : Auth settings > Redirect URLs

Expo Router mappe automatiquement les chemins de deep link aux écrans. Un deep link vers scalerocket://settings navigue vers app/(tabs)/settings.tsx.

Pour gérer les deep links programmatiquement :

import * as Linking from "expo-linking";
import { useEffect } from "react";

useEffect(() => {
  // Gérer le deep link quand l'app est déjà ouverte
  const subscription = Linking.addEventListener("url", ({ url }) => {
    console.log("Deep link received:", url);
    // Parser et naviguer
  });

  // Gérer le deep link qui a ouvert l'app
  Linking.getInitialURL().then((url) => {
    if (url) {
      console.log("App opened via deep link:", url);
    }
  });

  return () => subscription.remove();
}, []);

Pour les liens qui fonctionnent à la fois dans le navigateur et dans l'app (ex. https://yourapp.com/invite/abc), configurez les liens universels.

Liens universels iOS

Ajoutez la configuration des domaines associés dans app.json :

{
  "expo": {
    "ios": {
      "associatedDomains": ["applinks:yourapp.com"]
    }
  }
}

Hébergez un fichier apple-app-site-association sur votre domaine :

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAM_ID.com.scalerocket.app",
        "paths": ["/invite/*", "/reset-password/*"]
      }
    ]
  }
}

Ajoutez les filtres d'intent dans app.json :

{
  "expo": {
    "android": {
      "intentFilters": [
        {
          "action": "VIEW",
          "autoVerify": true,
          "data": [
            {
              "scheme": "https",
              "host": "yourapp.com",
              "pathPrefix": "/invite"
            }
          ],
          "category": ["BROWSABLE", "DEFAULT"]
        }
      ]
    }
  }
}

Dans le simulateur/émulateur

# Simulateur iOS
npx uri-scheme open scalerocket://settings --ios

# Émulateur Android
npx uri-scheme open scalerocket://settings --android

Sur un vrai appareil

# Avec Expo CLI
npx expo start --dev-client
# Puis ouvrez : scalerocket://settings dans le navigateur de l'appareil

Avec curl (Expo Go)

# Ouvrir l'app via le proxy deep link d'Expo
npx uri-scheme open exp://127.0.0.1:8081/--/settings --ios

Changer le schéma d'URL

Pour utiliser votre propre schéma d'URL au lieu de scalerocket:// :

  1. Mettez à jour scheme dans app.json
  2. Mettez à jour tous les appels makeRedirectUri
  3. Mettez à jour les URLs de redirection de votre backend
  4. Reconstruisez l'app (les changements de schéma nécessitent un nouveau build)

On this page