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.
Comment les deep links sont utilisés
ScaleRocket Mobile utilise les deep links pour :
| Usage | URL | Description |
|---|---|---|
| Callback OAuth | scalerocket:// | La connexion Google/Apple redirige vers l'app |
| Réinitialisation du mot de passe | scalerocket://reset-password | Le lien de reset par email ouvre l'app |
| Confirmation d'email | scalerocket://confirm | Le 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
Gérer les deep links personnalisés
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();
}, []);Liens universels (iOS) et App Links (Android)
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/*"]
}
]
}
}App Links Android
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"]
}
]
}
}
}Tester les deep links
Dans le simulateur/émulateur
# Simulateur iOS
npx uri-scheme open scalerocket://settings --ios
# Émulateur Android
npx uri-scheme open scalerocket://settings --androidSur un vrai appareil
# Avec Expo CLI
npx expo start --dev-client
# Puis ouvrez : scalerocket://settings dans le navigateur de l'appareilAvec curl (Expo Go)
# Ouvrir l'app via le proxy deep link d'Expo
npx uri-scheme open exp://127.0.0.1:8081/--/settings --iosChanger le schéma d'URL
Pour utiliser votre propre schéma d'URL au lieu de scalerocket:// :
- Mettez à jour
schemedansapp.json - Mettez à jour tous les appels
makeRedirectUri - Mettez à jour les URLs de redirection de votre backend
- Reconstruisez l'app (les changements de schéma nécessitent un nouveau build)