0Pricing
React Academy · Leçon

Accéder aux API de l’appareil : caméra, position et notifications push

Utilisez les modules du SDK Expo pour demander les autorisations et accéder aux fonctionnalités natives de l’appareil.

Accéder aux API de l’appareil : caméra, position et notifications push est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Modules du SDK Expo

Le SDK Expo fournit des API JavaScript pour accéder aux fonctionnalités natives de l’appareil. Installez les paquets individuellement et demandez les autorisations avant d’accéder au matériel.

# Install what you need:
npx expo install expo-camera expo-location expo-notifications

Demander des autorisations

Demandez toujours une autorisation avant d’accéder aux fonctionnalités sensibles de l’appareil. Vérifiez le résultat avant de continuer.

import * as Location from 'expo-location';

async function getLocation() {
  const { status } = await Location.requestForegroundPermissionsAsync();
  if (status !== 'granted') {
    Alert.alert('Permission denied');
    return;
  }
  const location = await Location.getCurrentPositionAsync({});
  console.log(location.coords);
}

Accès à la caméra

Utilisez expo-camera pour afficher un aperçu de la caméra et prendre des photos.

import { CameraView, useCameraPermissions } from 'expo-camera';
import { useRef } from 'react';

export function CameraScreen() {
  const [permission, requestPermission] = useCameraPermissions();
  const cameraRef = useRef(null);

  if (!permission?.granted) {
    return <Button onPress={requestPermission} title="Grant camera" />;
  }

  const takePicture = async () => {
    const photo = await cameraRef.current?.takePictureAsync();
    console.log(photo?.uri);
  };

  return <CameraView ref={cameraRef} facing="back" />;
}

Sélecteur d’images

expo-image-picker permet aux utilisateurs de sélectionner des images dans leur pellicule sans afficher l’interface de la caméra.

import * as ImagePicker from 'expo-image-picker';

async function pickImage() {
  const result = await ImagePicker.launchImageLibraryAsync({
    mediaTypes: ImagePicker.MediaTypeOptions.Images,
    quality: 0.8,
    allowsEditing: true,
    aspect: [4, 3],
  });

  if (!result.canceled) {
    console.log(result.assets[0].uri);
  }
}

Suivi de la localisation

Abonnez-vous aux mises à jour de localisation avec watchPositionAsync() pour un suivi en temps réel. Supprimez l’abonnement lors du démontage.

useEffect(() => {
  let subscription;
  (async () => {
    const { status } = await Location.requestForegroundPermissionsAsync();
    if (status !== 'granted') return;
    subscription = await Location.watchPositionAsync(
      { accuracy: Location.Accuracy.High, distanceInterval: 10 },
      location => setCoords(location.coords)
    );
  })();
  return () => subscription?.remove();
}, []);

Géocodage et géocodage inversé

Convertissez des coordonnées en adresses (géocodage inversé) ou des adresses en coordonnées (géocodage) avec expo-location.

const [address] = await Location.reverseGeocodeAsync({ latitude: 37.78, longitude: -122.43 });
console.log(`${address.street}, ${address.city}, ${address.country}`);

Configuration des notifications push

Utilisez expo-notifications pour vous inscrire aux notifications push et obtenir un jeton push Expo.

import * as Notifications from 'expo-notifications';

async function registerForPushNotifications() {
  const { status } = await Notifications.requestPermissionsAsync();
  if (status !== 'granted') return null;
  const token = (await Notifications.getExpoPushTokenAsync()).data;
  return token; // send this to your server
}

Gérer les notifications entrantes

Écoutez les notifications lorsque l’application est au premier plan ainsi que les appuis sur les notifications.

useEffect(() => {
  const receivedSub = Notifications.addNotificationReceivedListener(notification => {
    console.log('Received:', notification);
  });
  const responseSub = Notifications.addNotificationResponseReceivedListener(response => {
    const data = response.notification.request.content.data;
    router.push(`/post/${data.postId}`);
  });
  return () => { receivedSub.remove(); responseSub.remove(); };
}, []);

Notifications locales

Programmez des notifications locales (aucun serveur requis) avec scheduleNotificationAsync.

await Notifications.scheduleNotificationAsync({
  content: { title: 'Reminder', body: 'Check your app!', data: {} },
  trigger: { seconds: 60 }, // fires after 60 seconds
});

Localisation en arrière-plan

Pour la localisation en arrière-plan, utilisez expo-task-manager et Location.startLocationUpdatesAsync. Des autorisations supplémentaires sont nécessaires dans app.json.

Vérification rapide

Que devez-vous toujours faire avant d’accéder à la caméra ou à la localisation de l’appareil dans Expo ?

Récapitulatif

Utilisez les modules du SDK Expo (expo-camera, expo-location, expo-notifications) pour accéder à l’appareil. Demandez toujours les autorisations en premier, vérifiez le résultat et nettoyez les abonnements dans useEffect. Inscrivez-vous aux notifications push et envoyez le jeton push Expo à votre serveur principal.

Questions Fréquemment Posées

La leçon « Accéder aux API de l’appareil : caméra, position et notifications push » est-elle gratuite ?

Oui — le texte complet de « Accéder aux API de l’appareil : caméra, position et notifications push » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Accéder aux API de l’appareil : caméra, position et notifications push » ?

Utilisez les modules du SDK Expo pour demander les autorisations et accéder aux fonctionnalités natives de l’appareil. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Accéder aux API de l’appareil : caméra, position et notifications push » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Composants fondamentaux de React Native et DOM web
  2. Styles avec l’API StyleSheet et Flexbox
  3. Navigation avec Expo Router
  4. Accéder aux API de l’appareil : caméra, position et notifications push
← Retour à React Academy