0Pricing
React Academy · Pelajaran

Mengakses API Perangkat: Kamera, Lokasi & Notifikasi Push

Gunakan modul Expo SDK untuk meminta izin dan mengakses kemampuan bawaan perangkat.

Mengakses API Perangkat: Kamera, Lokasi & Notifikasi Push adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Modul Expo SDK

Expo SDK menyediakan API JavaScript untuk kemampuan perangkat asli. Instal paket satu per satu dan minta izin sebelum mengakses perangkat keras.

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

Meminta Izin

Selalu minta izin sebelum mengakses fitur perangkat yang sensitif. Periksa hasilnya sebelum melanjutkan.

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);
}

Akses Kamera

Gunakan expo-camera untuk menampilkan pratinjau kamera dan mengambil foto.

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" />;
}

Pemilih Gambar

expo-image-picker memungkinkan pengguna memilih gambar dari rol kamera tanpa menampilkan antarmuka kamera.

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);
  }
}

Pelacakan Lokasi

Berlangganan pembaruan lokasi dengan watchPositionAsync() untuk pelacakan waktu nyata. Hapus langganan saat komponen dilepas.

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();
}, []);

Geokode & Geokode Balik

Ubah koordinat menjadi alamat (geokode balik) atau alamat menjadi koordinat (geokode) dengan expo-location.

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

Penyiapan Notifikasi Push

Gunakan expo-notifications untuk mendaftarkan notifikasi push dan memperoleh token 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
}

Menangani Notifikasi Masuk

Dengarkan notifikasi saat aplikasi berada di latar depan dan saat pengguna mengetuk notifikasi.

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(); };
}, []);

Notifikasi Lokal

Jadwalkan notifikasi lokal (tidak memerlukan server) dengan scheduleNotificationAsync.

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

Lokasi di Latar Belakang

Untuk lokasi di latar belakang, gunakan expo-task-manager dan Location.startLocationUpdatesAsync. Fitur ini memerlukan izin tambahan di app.json.

Pemeriksaan Singkat

Apa yang harus selalu dilakukan sebelum mengakses kamera atau lokasi perangkat di Expo?

Ringkasan

Gunakan modul Expo SDK (expo-camera, expo-location, expo-notifications) untuk mengakses perangkat. Selalu minta izin terlebih dahulu, periksa hasilnya, dan bersihkan langganan di useEffect. Daftarkan notifikasi push dan kirim token push Expo ke backend Anda.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengakses API Perangkat: Kamera, Lokasi & Notifikasi Push” gratis?

Ya — teks lengkap “Mengakses API Perangkat: Kamera, Lokasi & Notifikasi Push” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengakses API Perangkat: Kamera, Lokasi & Notifikasi Push”?

Gunakan modul Expo SDK untuk meminta izin dan mengakses kemampuan bawaan perangkat. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Mengakses API Perangkat: Kamera, Lokasi & Notifikasi Push” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Komponen Inti React Native vs DOM Web
  2. Penataan Gaya dengan API StyleSheet & Flexbox
  3. Navigasi dengan Expo Router
  4. Mengakses API Perangkat: Kamera, Lokasi & Notifikasi Push
← Kembali ke React Academy