Kamera izni
- React Native kursu
- İleri seviye
- Ders 8/83
- 5 dk
Kamera izni istemeyi öğrenirsin.
Kamera izni
Kamera kullanmak için kullanıcıdan izin istemek zorundasın. expo-camera paketi Camera.requestCameraPermissionsAsync işlevini sunar. Bu işlev bir nesne döndürür; status alanı 'granted' ise kamera kullanılabilir.
İzin isteğini useEffect içinde yaparsın; sonuç state'e yazılır. State başlangıçta null olur (izin istenmedi), sonra true veya false olur. Bu kalıp, uygulama açılınca otomatik olarak izin isteyen en sağlam yöntemdir. İzin verilmezse kamera yerine bir uyarı metni gösterirsin.
İzin state'i
İzin sonuçunu bir state'te tutarsın: const [hasPermission, setHasPermission] = React.useState(null). Başlangıç değeri null; bu, 'henüz sorulmadı' anlamına gelir. useEffect içinde izni iste, sonuçu setHasPermission(permission.status === 'granted') ile yaz.
Render sırasında üç durum kontrol edilir: null ise 'İzin bekleniyor' metni, false ise 'İzin gerekli' metni, true ise kamera gösterilir. Bu üçlü kontrol, kullanıcıya her durumda anlamlı bir geri bildirim verir. State null iken kamera render edilmez; bu da olası hataları önler.
Uygulama İzin iste ve state'e yaz
Boş useEffect'i tamamla. const permission = await Camera.requestCameraPermissionsAsync() çağır; setHasPermission(permission.status === 'granted') ile sonuçu yaz. useEffect'in ikinci parametresi [] olsun.
Başlangıç kodu
import React from 'react';
import { Camera } from 'expo-camera';
export function useCameraPermission() {
const [hasPermission, setHasPermission] = React.useState(null);
React.useEffect(() => {
// izin iste ve sonuçu yaz
}, []);
return hasPermission;
}Örnek çözüm
(async () => {
const permission = await Camera.requestCameraPermissionsAsync();
setHasPermission(permission.status === 'granted');
})();Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 İzin işlevini yaz
const permission = await Camera.____();
const permission = await Camera.requestCameraPermissionsAsync();
Açıklama: requestCameraPermissionsAsync izin ister.
2 State değerini anlama eşle
| Kavram | Anlamı |
|---|---|
null |
İzin bekleniyor |
true |
Kamera kullanılabilir |
false |
İzin verilmedi |
'granted' |
status değeri |
3 hasPermission null iken ne gösterilir?
if (hasPermission === null) { ... }- Boş ekran
- Kamera
- İzin bekleniyor metni Doğru cevap
- Çökme hatası
Açıklama: null iken 'İzin bekleniyor' metni gösterilir.