Galeri izni
- React Native kursu
- İleri seviye
- Ders 14/83
- 5 dk
Galeri izni istemeyi öğrenirsin.
Galeri izni
Galeriden görsel seçmek için kullanıcıdan izin istenir. expo-image-picker, requestMediaLibraryPermissionsAsync işlevini sunar. Bu işlev bir nesne döndürür; status alanı 'granted' ise galeri 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 galeri seçim düğmesi devre dışı kalır.
İ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 galeri düğmesi gösterilir. State null iken düğme devre dışı kalır. Bu kalıp her durumda anlamlı geri bildirim verir.
Uygulama İzin iste ve state'e yaz
Boş useEffect'i tamamla. const permission = await ImagePicker.requestMediaLibraryPermissionsAsync() çağır; setHasPermission(permission.status === 'granted') ile sonuçu yaz. useEffect'in ikinci parametresi [] olsun.
Başlangıç kodu
import React from 'react';
import * as ImagePicker from 'expo-image-picker';
export function useGalleryPermission() {
const [hasPermission, setHasPermission] = React.useState(null);
React.useEffect(() => {
// izin iste ve sonuçu yaz
}, []);
return hasPermission;
}Örnek çözüm
(async () => {
const permission = await ImagePicker.requestMediaLibraryPermissionsAsync();
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 ImagePicker.____();
const permission = await ImagePicker.requestMediaLibraryPermissionsAsync();
Açıklama: requestMediaLibraryPermissionsAsync galeri izni ister.
2 İzin nesnesinin hangi alanı 'granted' kontrol edilir?
if (permission.??? === 'granted') { ... }- granted
- result
- allowed
- status Doğru cevap
Açıklama: status alanı 'granted' değerini taşır.
3 State değerini anlama eşle
| Kavram | Anlamı |
|---|---|
null |
İzin bekleniyor |
true |
Galeri kullanılabilir |
false |
İzin verilmedi |
'granted' |
status değeri |