Proje: Okul B2B App · Hub: Okul B2B App — Conventions

İzin Yönetimi

utils/PermissionManager.ts — Tüm sistem izinleri tek yerden yönetilir.

İzin Türleri (PermissionType)

CAMERA       // Kamera — galeri fotoğraf çekimi
MEDIA_LIBRARY // Fotoğraf kitaplığı — galeri yükleme
LOCATION      // Konum — etkinlik paylaşımı (opsiyonel)
NOTIFICATIONS // Bildirimler — push notifications
MICROPHONE    // Mikrofon — video kayıt (opsiyonel)

Kullanım

import { permissionManager, PermissionType } from '@/utils/PermissionManager';
 
const result = await permissionManager.requestPermission(PermissionType.CAMERA);
// → { status: 'granted' | 'denied' | 'blocked', canAskAgain: boolean }
 
const status = await permissionManager.checkPermission(PermissionType.MEDIA_LIBRARY);

Reddedilme Durumu

blocked (kalıcı red) durumunda kullanıcıya platform-spesifik ayarlar yönlendirmesi gösterilir:

  • iOS: "Ayarlar > Gizlilik ve Güvenlik > Kamera > Okulcomtr'dan verebilirsiniz."
  • Android: "Ayarlar > Uygulamalar > Okulcomtr > İzinler'den verebilirsiniz."

Linking.openSettings() ile direkt ayarlar açılır.

usePermissions Hook

import { usePermissions } from '@/hooks/usePermissions';
 
const { requestCameraPermission, requestMediaLibraryPermission } = usePermissions();