Camera Permission mobil tətbiqlərdə — bu nədir, giriş növləri və necə işləyir

Müəllif: IT Sectr Dərc olunub: 2026-05-21 Oxuma vaxtı: 8 dəq

Camera Permission — bu, mobil tətbiqin istifadəçidən cihazın kamerasına giriş üçün tələb etdiyi icazədir. Onsuz tətbiq şəkil çəkə, QR kodları skan edə və ya video zənglər başlada bilməz. Android Developers, 2024 məlumatlarına görə, Android 6.0 və daha yuxarıda kameradan istifadə edən bütün tətbiqlər sistem dialoqu vasitəsilə icazə tələb etməlidir.

Əsas məqamlar

  • Camera Permission — iOS və Android-də cihaz kamerası ilə işləyən tətbiqlər üçün məcburi icazə.
  • Android API 23-dən başlayaraq məcburi sorğu ilə Manifest.permission.CAMERA istifadə edir.
  • iOS Info.plist-də kameradan istifadə səbəbinin təsviri ilə NSCameraUsageDescription açarının əlavə edilməsini tələb edir.
  • Funksiya kontekstində sorğu (məsələn, «Şəkil çək» düyməsini basdıqda) təsdiq nisbətini əhəmiyyətli dərəcədə artırır.
  • Girişdən imtina alternativ ssenari ilə işlənməlidir: qalereyadan seçim və ya fayl yükləmə.

Camera Permission nədir?

Camera Permission — bu, tətbiqlərin mobil cihazın kamerasına girişini tənzimləyən sistem icazəsidir. Mobil platformalar kameranı məxfi resurs hesab edir, çünki o, istifadəçinin ətraf mühitini real vaxtda videoya çəkməyə və şəkil çəkməyə imkan verir.

Android-də CAMERA icazəsi təhlükəli icazələr (dangerous permissions) kateqoriyasına aiddir və məcburi sorğu tələb edir. iOS-da Info.plist-ə NSCameraUsageDescription açarının əlavə edilməsi kameraya müraciət edən hər hansı tətbiq üçün məcburi şərtdir. Bu açar olmadan tətbiq kameranı açmağa cəhd etdikdə qəzaya uğrayacaq.

Statista (2024) araşdırmasına görə, App Store-un top-100-dəki mobil tətbiqlərin təxminən 68%-i bu və ya digər formada kameradan istifadə edir: QR kodlarının skan edilməsindən tutmuş tam hüquqlu foto və video çəkilişinə qədər. Bununla yanaşı, istifadəçilərin 37%-i kameraya girişi rədd edir, əgər tətbiqin bu icazəyə niyə ehtiyacı olduğunu başa düşmürlərsə.

Android-də Camera Permission

Android-də Camera Permission manifestdə bəyannamə və sonrakı sorğu vasitəsilə tələb edilir. Android 6.0-dan başlayaraq, CAMERA icazəsi yalnız quraşdırma mərhələsində əldə edilə bilməz — istifadəçi açıq şəkildə girişi təsdiqləməlidir.

AndroidManifest.xml-də bəyannamə

Android-də kameradan istifadə etmək üçün manifest faylına müvafiq bəyannamə əlavə etmək lazımdır. Onsuz sistem sorğu olsa belə tətbiqə kameranı açmağa icazə verməyəcək.

xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />

android:required=false atributu uses-feature üçün tətbiqi kamerasız cihazlarda quraşdırmağa imkan verir. Bu, kamera bütün tətbiqin işləməsi üçün məcburi komponent deyilsə vacibdir.

Kotlin-də sorğu

Camera Permission sorğusu Activity Result API vasitəsilə yerinə yetirilir. Cavab alındıqdan sonra tətbiq statusu yoxlayır və kameranı işə salır və ya izahat göstərir.

kotlin
private val cameraLauncher =
    registerForActivityResult(ActivityResultContracts.TakePicture()) { success ->
    if (success) {
        // Şəkil saxlanıldı
        showPhoto(photoUri)
    }
}

private val permissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        openCamera()
    } else {
        showPermissionDenied()
    }
}

fun capturePhoto() {
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
        openCamera()
    } else {
        permissionLauncher.launch(Manifest.permission.CAMERA)
    }
}

Android 11+ xüsusiyyətləri

Android 11-dən başlayaraq, istifadəçi kameraya girişdən iki dəfə imtina edərsə, sistem dialoqu daha göstərilmir. Never Ask Again bayrağı avtomatik olaraq qurulur və tətbiq yalnız istifadəçini Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) vasitəsilə sistem parametrlərinə yönləndirə bilər. Tərtibatçı vaxtında ilkin ekranı göstərmək üçün shouldShowRequestPermissionRationale yoxlamasını nəzərdə tutmalıdır.

iOS-da Camera Permission

iOS-da Camera Permission Info.plist-də NSCameraUsageDescription açarı və AVCaptureDevice.requestAccess çağırışı vasitəsilə idarə olunur. Apple sorğunun əsaslılığını ciddi şəkildə yoxlayır: əgər tətbiq kameradan istifadəçi üçün gözlənilməz bir şəkildə istifadə edərsə, App Store tətbiqi rədd edə bilər.

Info.plist-in konfiqurasiyası

iOS-da kameraya giriş üçün məcburi şərt Info.plist faylına NSCameraUsageDescription açarının əlavə edilməsidir. String dəyəri sistem dialoqunda sorğunun səbəbi kimi göstəriləcək.

xml
<key>NSCameraUsageDescription</key>
<string>Tətbiqin profil şəkilləri çəkmək və QR kodları skan etmək üçün kameraya girişi lazımdır.</string>

Swift-də sorğu

Swift-də sorğu AVCaptureDevice.requestAccess statik metodu vasitəsilə yerinə yetirilir. Cavab alındıqdan sonra tətbiq statusu emal edir və çəkiliş sessiyasını işə salır.

swift
import AVFoundation

func requestCameraAccess() {
    AVCaptureDevice.requestAccess(for: .video) { granted in
        DispatchQueue.main.async {
            if granted {
                self.setupCameraSession()
            } else {
                self.showSettingsAlert()
            }
        }
    }
}

private func setupCameraSession() {
    guard let device = AVCaptureDevice.default(.for: .video)
    else { return }
    do {
        let input = try AVCaptureDeviceInput(device: device)
        let session = AVCaptureSession()
        session.addInput(input)
        session.startRunning()
    } catch {
        print("Camera error: \(error)")
    }
}

Cari statusun yoxlanılması

Kameraya giriş tələb etməzdən əvvəl AVCaptureDevice.authorizationStatus(for: .video) vasitəsilə cari avtorizasiya statusunu yoxlamaq tövsiyə olunur. Bu, lazımsız sistem dialoqu çağırışının qarşısını almağa və istifadəçinin artıq qərar verdiyi halları düzgün emal etməyə imkan verir. Status .notDetermined, .restricted, .denied və ya .authorized ola bilər.

Kameranın istifadə ssenariləri

Camera Permission müxtəlif ssenarilərdə tətbiq edilir, sadə skanerdən tutmuş tam hüquqlu video çəkilişinə qədər. Hər bir ssenari icazələrin həyata keçirilməsi və işlənməsi üçün öz tələblərini qoyur.

QR kodlarının və barkodların skan edilməsi

iOS-da QR kodlarının skan edilməsi üçün Camera Permission tələb edən AVFoundation çərçivəsindən AVCaptureMetadataOutput istifadə olunur. Android-də Google-dan ML Kit Barcode Scanning istifadə etmək tövsiyə olunur. Qeyd etmək vacibdir ki, QR kodlarının skan edilməsi üçün məhz kamera istifadə olunur, təsvir analiz kitabxanası deyil — buna görə də Camera Permission məcburidir.

Foto və video çəkilişi

Standart foto və ya video çəkilişi həm iOS, həm də Android-də Camera Permission tələb edir. Android-də sistem kamera tətbiqini açan Intent(MediaStore.ACTION_IMAGE_CAPTURE) istifadə edilə bilər — bu halda icazəni sistem tətbiqi tələb edir, sizin tətbiqiniz yox. Lakin tətbiq daxilində kameranın ön icmalı üçün (CameraX, Camera2 API) öz icazəniz lazımdır.

Video zənglər və AR

Video zəng tətbiqləri (Zoom, Google Meet) və artırılmış reallıq (ARCore, ARKit) ön və ya arxa kameradan video çəkmək üçün Camera Permission tələb edir. Bu halda sorğu xüsusilə diqqətlə izah edilməlidir, çünki istifadəçi AR-sınama mebel tətbiqinin kameraya giriş tələb edəcəyini gözləməyə bilər.

Çəkiliş parametrlərinin konfiqurasiyası

iOS-da kamera ilə işləyərkən çəkiliş parametrlərini AVCaptureDeviceInput və AVCapturePhotoOutput vasitəsilə konfiqurasiya etmək olar. Android-də CameraX ImageCapture, VideoCapture və Preview geri çağırışları vasitəsilə konfiqurasiyanı sadələşdirir. Hər bir konfiqurasiya üçün istənilən rezolyusiya, zoom səviyyəsi və fokus rejimi göstərilməlidir. Düzgün çəkiliş konfiqurasiyasının seçimi birbaşa tətbiqin performansına və batareya sərfiyyatına təsir edir.

Kamera ilə işləyərkən xətaların işlənməsi

Kamera ilə işləyərkən müxtəlif xətalar yarana bilər. Kamera başqa bir tətbiq tərəfindən işğal oluna, sistem məxfilik parametrlərində söndürülə və ya cihazda mövcud olmaya bilər. Android-də CameraManager.openCamera çağırışında CameraAccessException-ın işlənməsi tövsiyə olunur. iOS-da AVCaptureDevice.authorizationStatus-u yoxlamaq və imtinanı düzgün emal edərək istifadəçiyə girişi aktivləşdirmək üçün parametrlərə keçməyi təklif etmək lazımdır. Həmişə icazə tələb etməzdən əvvəl PackageManager.hasSystemFeature vasitəsilə cihazda kameranın mövcudluğunu yoxlayın. Belə yoxlama kamerasız cihazlarda lazımsız sorğuların qarşısını alır və istifadəçi təcrübəsini yaxşılaşdırır.

Kamera performansının optimallaşdırılması

Performansın optimallaşdırılması kamera ilə işləyərkən tətbiqin hamar işləməsi üçün vacibdir. Yüksək rezolyusiyada video çəkilişi əhəmiyyətli prosessor və batareya resursları sərf edir.

iOS-da tətbiq 4K çəkiliş tələb etmirsə, maksimum rezolyusiya əvəzinə AVCaptureSessionPresetMedium istifadə edin. Android-də CameraX ImageCaptureConfig.Builder vasitəsilə hədəf rezolyusiya ilə ImageCapture konfiqurasiya etməyə imkan verir. Həmçinin tətbiq fon rejiminə keçdikdə kameranı azad etmək və qayıtdıqda yenidən ələ keçirmək vacibdir. Bu, Google və Apple tərəfindən batareya qənaəti üçün tövsiyə edilən standart təcrübədir.

Kameraya giriş tələbi üçün ən yaxşı təcrübələr

Ən yaxşı təcrübələr Camera Permission təsdiq nisbətini artırmağa və App Store və ya Google Play tərəfindən tətbiqin rədd edilməsinin qarşısını almağa kömək edir.

İzahat üçün ön icmal istifadə edin

Sistem dialoqu çağırmazdan əvvəl kameranın necə istifadə ediləcəyinə dair nümunə olan ekran göstərin: skan interfeysinin təsviri, profil şəkli üçün çərçivə, tanınmış QR kod nümunəsi. Vizual izahat mətn izahatından daha yaxşı işləyir. UX Movement (2024) məlumatlarına görə, vizual ön icmalın əlavə edilməsi təsdiq nisbətini 72%-ə qədər artırır.

İcazəni hərəkət anında tələb edin

Heç vaxt Camera Permission-ı tətbiqin ilk açılışında tələb etməyin. Tətbiqi yenicə açmış istifadəçi konteksti başa düşmürsə, daha çox imtina edər. Girişi yalnız istifadəçi kamera tələb edən düyməni basdığı an tələb edin: «Profil şəkli çək», «Kodu skan et», «Video zəngə başla». Kontekstual tetikleyici sorğunun mənalılığını artırır.

Alternativ nəzərdə tutun

İstifadəçi Camera Permission-dan imtina edərsə, alternativ bir hərəkət yolu təklif edin: qalereyadan şəkil seçimi, QR kod məlumatlarının əl ilə daxil edilməsi, cihazdan şəkil yükləmə. İmtina tətbiqin funksionallığını tamamilə bloklamamalıdır — bu, Google Play və App Store-un tətbiq dizaynı tövsiyələrinin tələbidir.

Tez-tez verilən suallar

İstifadəçi Camera Permission-ı qadağan edərsə nə baş verir?

İcazəsiz kameranı açmağa cəhd etdikdə qəza baş verəcək və səhv alacaqsınız. Android-də checkSelfPermission və ya iOS-da authorizationStatus vasitəsilə əvvəlcədən statusu yoxlamaq və alternativ ssenari təklif etmək lazımdır.

QR kodlarını skan etmək üçün Camera Permission lazımdırmı?

Bəli, kamera vasitəsilə QR kodlarının skan edilməsi Camera Permission tələb edir. Alternativ yanaşma — kamerasız şəkildə şəkildən QR kodun tanınması kitabxanalarından istifadə (məsələn, qalereyadan kodlu şəkil yükləmək), lakin bu Photo Library Permission tələb edir.

Android-də Activity olmadan Camera Permission necə tələb edilir?

Jetpack Compose arxitekturasında composable funksiyasında ActivityResultContracts.RequestPermission ilə rememberLauncherForActivityResult istifadə edilə bilər. UI-siz xidmətlər üçün birbaşa icazə sorğusu mümkün deyil — nəzarət Activity-ə ötürülməlidir.

Niyə iOS tətbiqi kameranı açarkən çökür?

Ən çox ehtimal olunan səbəb Info.plist-də NSCameraUsageDescription açarının olmamasıdır. iOS 10-dan etibarən bu açar olmadan AVCaptureDevice-ə hər hansı müraciət NSInvalidArgumentException istisnası ilə tətbiqin çökməsinə səbəb olur.

Test üçün Camera Permission-ı necə sıfırlamaq olar?

Android-də tətbiq parametrlərini Settings → Apps → [Tətbiq] → İcazələr vasitəsilə sıfırlayın. iOS-da Settings → [Tətbiq] → Camera keçidindən istifadə edin. iOS-da testlərin avtomatlaşdırılması üçün XCUITest resetAuthorizationStatus ilə istifadə edilə bilər.

Xülasə

  • Camera Permission — hər iki mobil platformada kameraya giriş üçün məcburi icazə.
  • Android manifestdə CAMERA bəyannaməsi və shouldShowRequestPermissionRationale yoxlaması ilə Activity Result API vasitəsilə sorğu tələb edir.
  • iOS Info.plist-də NSCameraUsageDescription açarı və AVCaptureDevice.requestAccess(for: .video) çağırışı tələb edir.
  • Kontekstual sorğu (istifadə anında tələb) UX Movement məlumatlarına görə təsdiq nisbətini 72%-ə qədər artırır.
  • İstifadə ssenariləri foto və video çəkilişi, QR kodlarının skan edilməsi, video zənglər və AR funksiyalarını əhatə edir.
  • İmtina halında alternativ ssenari (qalereyadan seçim, əl ilə daxil etmə) tətbiq mağazalarının tələblərinə uyğunluq üçün məcburidir.
  • İlkin ekran vizual izahatla imtina sayını əhəmiyyətli dərəcədə azaldır.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun