Skip to Content

Terrain 9 — APIs natives

9 drills · ~10 min · Chapitres liés : Partie 9

1. Le rituel des modules expo-* en 4 étapes ?

Installer (npx expo install) → permissions (manifeste via plugin + demande runtime) → config plugin si natif → utiliser. Étape 0 : vérifier la compat Expo Go dans la doc.

2. Les trois états d’une permission runtime, et la conduite pour chacun ?

granted (→ agir), denied mais canAskAgain (→ redemander plus tard, au bon moment), blocked (canAskAgain: false → seul recours : Linking.openSettings(), sans harceler).

3. Quand demande-t-on une permission ? (la règle UX)

Au moment du besoin, déclenchée par l’action utilisateur qui l’explique (activer le rappel → boîte notifications) — jamais en rafale au premier lancement.

4. Notification locale vs push : la différence, et laquelle exige un serveur ?

Locale = planifiée par l’app SUR l’appareil (zéro serveur — le défi quotidien). Push = envoyée d’un serveur via FCM (dev build requis, infra) — Drill n’en a pas besoin.

5. Le tap sur une notification doit ouvrir un quiz : les DEUX mécanismes à câbler ?

addNotificationResponseReceivedListener (app ouverte/arrière-plan) ET getLastNotificationResponseAsync au démarrage (app tuée — le listener n’existait pas au tap). L’URL voyage dans content.data.

6. Pourquoi cancel avant schedule dans la planification du défi quotidien ?

Idempotence (identifier fixe + cancel préalable) : appeler N fois ne laisse qu’UNE planification — l’anti « notifications en double ».

7. La grammaire haptique de Drill : quel feedback pour un tap ? un verdict correct ? le timer sous 3 s ?

impact Light (contact) · notification Success (verdict) · notification Warning (alerte, une fois). Et le silence partout ailleurs — le fond qui fait ressortir le signal.

8. Pourquoi précharger les sons de jeu (createAudioPlayer global) ?

Charger au moment de jouer = 100-300 ms de latence : le feedback arrive « à côté » de l’action. Préchargés + seekTo(0) pour rejouer.

9. Partager un score : quelle API, quelle permission, et le piège du retour ?

Share.share({ message })aucune permission (l’utilisateur choisit la destination). Piège : sharedAction ne garantit pas un envoi réel sur Android — pas de récompense dessus.


👉 Terrain suivant : 10 — Animations & gestes