Photo Library Permission — بنیادی باتیں، رسائی کی اقسام اور کام کرنے کا اصول

مصنف: IT Sectr اشاعت: 2026-05-21 مطالعے کا وقت: 8 منٹ

Photo Library Permission ایک اجازت ہے جو کسی ایپلیکیشن کے لیے صارف کے آلے پر محفوظ تصاویر اور ویڈیوز تک رسائی حاصل کرنے کے لیے ضروری ہے۔ یہ گیلری سے تصاویر منتخب کرنے، میڈیا فائلیں محفوظ کرنے اور فوٹو البمز کے انتظام کے لیے درکار ہے۔ Apple Developer Documentation, 2024 کے مطابق، iOS 14 سے شروع کرتے ہوئے، ایپلیکیشنز کو تمام تصاویر تک ایک ساتھ نہیں بلکہ محدود لائبریری تک رسائی کی درخواست کرنی چاہیے۔

اہم نکات

  • Photo Library Permission — ڈیوائس گیلری میں میڈیا فائلوں کو پڑھنے اور لکھنے کی اجازت، تصاویر اور ویڈیوز کے ساتھ کام کرنے کے لیے لازمی۔
  • Android گیلری تک رسائی کے لیے READ_MEDIA_IMAGES، READ_MEDIA_VIDEO (Android 13+) یا READ_EXTERNAL_STORAGE استعمال کرتا ہے۔
  • iOS iOS 14 سے شروع کرتے ہوئے محدود رسائی (Limited Photo Library Access) کے ساتھ PHPhotoLibrary استعمال کرتا ہے۔
  • انفرادی تصاویر کا انتخاب سسٹم پکر (PhotoPicker) کے ذریعے پوری لائبریری تک رسائی کی اجازت نہیں مانگتا۔
  • گیلری میں لکھنا علیحدہ تحریری اجازت (Android پر WRITE_EXTERNAL_STORAGE، iOS پر PHPhotoLibrary) کی ضرورت ہوتی ہے۔

Photo Library Permission کی بنیادی باتیں

Photo Library Permission ایک سسٹم اجازت ہے جو آلے پر محفوظ میڈیا فائلوں تک ایپلیکیشن کی رسائی کو منظم کرتی ہے۔ یہ پڑھنے (تصاویر اور ویڈیوز دیکھنا اور منتخب کرنا) اور لکھنے (گیلری میں نئی فائلیں محفوظ کرنا) دونوں کو احاطہ کرتی ہے۔ موبائل پلیٹ فارمز میڈیا لائبریری کو حساس ڈیٹا سمجھتے ہیں کیونکہ تصاویر میں ذاتی اور نجی معلومات ہو سکتی ہیں۔

Android 13 (API 33) پر، Google نے واحد READ_EXTERNAL_STORAGE اجازت کو تین علیحدہ اجازتوں میں تقسیم کیا: READ_MEDIA_IMAGES تصاویر کے لیے، READ_MEDIA_VIDEO ویڈیوز کے لیے اور READ_MEDIA_AUDIO آڈیو کے لیے۔ یہ صارفین کو صرف ایک مخصوص قسم کی میڈیا فائل تک رسائی دینے کی اجازت دیتا ہے۔ iOS پر، iOS 14 سے شروع کرتے ہوئے، PhotoKit صارفین کو پوری لائبریری کھولنے کے بجائے مخصوص تصاویر منتخب کرنے کی سہولت دیتا ہے۔

Counterpoint Research (2024) کے مطابق، سوشل نیٹ ورکس، مواصلات اور فوٹو ایڈیٹرز کے زمرے میں 70% سے زیادہ موبائل ایپلیکیشنز Photo Library Permission کی درخواست کرتی ہیں۔ اسی وقت، 32% صارفین گیلری تک رسائی سے انکار کر دیتے ہیں اگر وہ نہیں سمجھتے کہ ایپلیکیشن کو ان کی تصاویر کی کیوں ضرورت ہے۔ Apple اور Google مکمل رسائی کی درخواست کیے بغیر انفرادی فائلیں منتخب کرنے کے لیے سسٹم PhotoPicker استعمال کرنے کی سفارش کرتے ہیں۔

Android پر گیلری تک رسائی

Android پر گیلری تک رسائی Android 13 کی ریلیز کے ساتھ نمایاں طور پر تبدیل ہو گئی ہے۔ ایک واحد READ_EXTERNAL_STORAGE اجازت کے بجائے، ہر میڈیا قسم کے لیے دانے دار اجازتیں متعارف کرائی گئی ہیں، جو صارفین کو زیادہ کنٹرول دیتی ہیں۔

Android 13+ پر اجازتیں

Android 13 سے شروع کرتے ہوئے، تصاویر تک رسائی کے لیے READ_MEDIA_IMAGES اور ویڈیو تک رسائی کے لیے READ_MEDIA_VIDEO استعمال کیا جاتا ہے۔ READ_EXTERNAL_STORAGE اجازت اب میڈیا فائلوں تک رسائی فراہم نہیں کرتی — یہ صرف مشترکہ اسٹوریج سے غیر میڈیا فائلیں پڑھنے کے لیے برقرار رکھی گئی ہے۔ مینی فیسٹ میں اعلان اس طرح نظر آتا ہے:

xml
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

Android 12 اور نیچے کے ساتھ مطابقت

Android 12 اور نیچے کے ساتھ پسماندہ مطابقت کے لیے، آپ کو READ_EXTERNAL_STORAGE کا بھی اعلان کرنا ہوگا۔ تاہم، Android 13 نئی دانے دار اجازتوں کی موجودگی میں اس اجازت کو خود بخود نظر انداز کر دیتا ہے۔ پرانی اجازت کو نئے ورژنز پر چھپانے کے لیے مینی فیسٹ میں android:maxSdkVersion="32" وصف استعمال کریں۔ یہ Android 13+ چلانے والے آلات پر بے کار درخواستوں کو روکتا ہے۔

xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="32" />

Kotlin میں رن ٹائم درخواست

Android پر Photo Library Permission کے لیے رن ٹائم درخواست Activity Result API کے ذریعے کی جاتی ہے۔ تصاویر تک رسائی کی درخواست کی مثال:

kotlin
private val photoPermissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        loadGalleryImages()
    } else {
        showPermissionDenied()
    }
}

fun pickPhoto() {
    val permission = if (Build.version.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        Manifest.permission.READ_MEDIA_IMAGES
    } else {
        Manifest.permission.READ_EXTERNAL_STORAGE
    }
    if (ContextCompat.checkSelfPermission(this, permission)
        == PackageManager.PERMISSION_GRANTED) {
        loadGalleryImages()
    } else {
        photoPermissionLauncher.launch(permission)
    }
}

iOS پر گیلری تک رسائی

iOS پر گیلری تک رسائی PhotoKit فریم ورک اور Info.plist میں NSPhotoLibraryUsageDescription اور NSPhotoLibraryAddUsageDescription کلیدوں کے ذریعے منظم کی جاتی ہے۔ iOS 14 سے شروع کرتے ہوئے، صارفین صرف منتخب تصاویر تک رسائی دے سکتے ہیں (Limited Photo Library)۔

Info.plist ترتیب

لائبریری سے تصاویر پڑھنے کے لیے NSPhotoLibraryUsageDescription ضروری ہے، جبکہ لکھنے (تصاویر محفوظ کرنے) کے لیے NSPhotoLibraryAddUsageDescription ضروری ہے۔ اگر ایپلیکیشن صرف میڈیا محفوظ کرتی ہے لیکن پڑھتی نہیں ہے، تو دوسری کلید کافی ہے۔

xml
<key>NSPhotoLibraryUsageDescription</key>
<string>ایپ کو پروفائل تصویر منتخب کرنے اور سنیپ شاٹس شائع کرنے کے لیے تصاویر تک رسائی درکار ہے۔</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>ایپ کو پروسیس شدہ تصاویر آپ کی گیلری میں محفوظ کرنے کے لیے رسائی درکار ہے۔</string>

Swift میں درخواست

iOS پر تصاویر تک رسائی کی درخواست PHPhotoLibrary.requestAuthorization کے ذریعے کی جاتی ہے۔ iOS 14 سے شروع کرتے ہوئے، .limited اسٹیٹس ظاہر کرتا ہے کہ صارف نے محدود تصاویر کے سیٹ تک رسائی دی ہے۔

swift
import PhotosUI

func requestPhotoLibraryAccess() {
    PHPhotoLibrary.requestAuthorization { status in
        DispatchQueue.main.async {
            switch status {
            case .authorized:
                self.loadPhotoLibrary()
            case .limited:
                self.loadSelectedPhotos()
            case .denied, .restricted:
                self.showSettingsAlert()
            case .notDetermined:
                break
            }
        }
    }
}

private func loadPhotoLibrary() {
    let fetchOptions = PHFetchOptions()
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
    let assets = PHAsset.fetchAssets(with: .image, options: fetchOptions)
    // درخواست کے نتائج کا انتظام
}

محدود رسائی کا انتظام

iOS 14+ پر .limited اسٹیٹس کا مطلب ہے کہ صارف نے صرف چند منتخب تصاویر تک رسائی دی ہے۔ ایپلیکیشن PHPhotoLibrary.shared().presentLimitedLibraryPicker کو کال کرکے سسٹم ڈائیلاگ کے ذریعے توسیعی رسائی کی درخواست کر سکتی ہے۔ اس ڈائیلاگ کو صرف اس وقت دکھانے کی سفارش کی جاتی ہے جب صارف واضح طور پر کسی ایسی خصوصیت کی درخواست کرے جس کے لیے اضافی تصاویر درکار ہوں۔

PhotoPicker بمقابلہ سسٹم اجازت

PhotoPicker میڈیا فائلوں کے انتخاب کے لیے ایک سسٹم جزو ہے جسے پوری لائبریری تک رسائی کی اجازت کی ضرورت نہیں۔ Android 13 اور iOS 14 سے شروع کرتے ہوئے، Google اور Apple Photo Library Permission کی درخواست کرنے کے بجائے PhotoPicker استعمال کرنے کی سفارش کرتے ہیں اگر ایپلیکیشن کو صرف ایک یا چند تصاویر منتخب کرنے کی ضرورت ہو۔

Android پر PhotoPicker

Android 13+ پر، بلٹ ان PhotoPicker (ActivityResultContracts.PickVisualMedia) صارفین کو پوری گیلری تک رسائی دیے بغیر تصویر یا ویڈیو منتخب کرنے کی اجازت دیتا ہے۔ ایپلیکیشن کو صرف منتخب فائلوں کا URI ملتا ہے۔ PhotoPicker مینی فیسٹ میں کسی بھی اجازت کا اعلان کیے بغیر کام کرتا ہے۔

kotlin
private val pickMedia =
    registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri ->
    if (uri != null) {
        // منتخب فائل کا URI، پوری لائبریری تک رسائی کے بغیر
        showImage(uri)
    }
}

fun selectPhoto() {
    pickMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
}

iOS پر PHPicker

iOS 14+ پر PHPickerViewController متعارف کرایا گیا — ایک سسٹم پکر جسے بھی پوری لائبریری تک رسائی کی ضرورت نہیں۔ PHPicker ایک علیحدہ عمل میں چلتا ہے اور اسے ایپلیکیشن کی لائبریری تک رسائی نہیں ہوتی۔ زیادہ تر منظرناموں کے لیے تصاویر منتخب کرنے کا یہ ترجیحی طریقہ ہے۔

swift
import PhotosUI

func presentPhotoPicker() {
    var config = PHPickerConfiguration()
    config.selectionLimit = 1
    config.filter = .images

    let picker = PHPickerViewController(configuration: config)
    picker.delegate = self
    present(picker, animated: true)
}

مکمل اجازت کب ضروری ہے

PhotoPicker موزوں نہیں ہے اگر ایپلیکیشن کو بڑے پیمانے پر کاموں کے لیے پوری لائبریری تک رسائی کی ضرورت ہو: بیک اپ، کلاؤڈ سنکرونائزیشن، گیلری ایپلیکیشن، فائل مینیجر۔ ان صورتوں میں، آپ کو Photo Library Permission کی درخواست کرنی ہوگی اور محدود رسائی (Limited) کو ہینڈل کرنا ہوگا۔ iOS کے لیے، .limited اسٹیٹس کا انتظام شامل کرنا اور صارفین کو رسائی بڑھانے کا اختیار دینا لازمی ہے۔

گیلری رسائی کے بہترین طریقے

بہترین طریقے Photo Library Permission کے ساتھ کام کرنے کے لیے انکار کی تعداد کم کرنے اور پلیٹ فارم کی رازداری کی ضروریات کی تعمیل کرنے میں مدد دیتے ہیں۔

بطور ڈیفالٹ PhotoPicker استعمال کریں

ایک یا زیادہ تصاویر منتخب کرنے کے لیے، سسٹم PhotoPicker یا PHPicker استعمال کریں۔ یہ اجزاء اجازتوں کی ضرورت نہیں رکھتے اور بہترین صارف تجربہ فراہم کرتے ہیں۔ مکمل گیلری رسائی کی درخواست صرف اس صورت میں کریں اگر ایپلیکیشن کی فعالیت کو پوری میڈیا لائبریری تک رسائی درکار ہو۔ Google اور Apple اپنی ڈویلپر دستاویز میں واضح طور پر اس نقطہ نظر کی سفارش کرتے ہیں۔

مکمل رسائی کی وجہ بیان کریں

اگر ایپلیکیشن کو واقعی مکمل گیلری رسائی درکار ہے، تو وضاحت کے ساتھ ابتدائی اسکرین دکھائیں۔ بتائیں کہ تمام تصاویر کیوں ضروری ہیں نہ کہ صرف ایک۔ مثال کے طور پر، بیک اپ ایپلیکیشن کو بتانا چاہیے کہ وہ کاپی بنانے کے لیے تمام میڈیا فائلوں کو اسکین کرے گی۔ قبل از اجازت اسکرین محدود رسائی کے طریقہ کار کی وجہ سے iOS کے لیے خاص طور پر اہم ہے۔

صرف ضروری اجازتیں مانگیں

اگر ایپلیکیشن صرف تصاویر محفوظ کرتی ہے لیکن انہیں پڑھتی نہیں (مثال کے طور پر، ایک فوٹو ایڈیٹر جو نتیجہ محفوظ کرتا ہے)، تو صرف گیلری میں لکھنے کی اجازت مانگیں۔ Android پر، یہ WRITE_EXTERNAL_STORAGE (Android 12 اور نیچے کے لیے) یا بغیر اجازتوں کے MediaStore API (Android 10+ کے لیے) ہے۔ iOS پر، NSPhotoLibraryUsageDescription کے بغیر NSPhotoLibraryAddUsageDescription استعمال کریں۔

اکثر پوچھے گئے سوالات

کیا Android 10+ پر تصاویر محفوظ کرنے کے لیے اجازت ضروری ہے؟

Android 10 (API 29) سے شروع کرتے ہوئے، MediaStore کے ذریعے تصاویر محفوظ کرنے کے لیے WRITE_EXTERNAL_STORAGE اجازت کی ضرورت نہیں۔ نظام واضح اجازت کے بغیر تحریر کے لیے مشترکہ اسٹوریج تک رسائی فراہم کرتا ہے۔ دوسرے صارفین کی فائلیں پڑھنے کے لیے اب بھی مناسب اجازت درکار ہے۔

READ_EXTERNAL_STORAGE اور READ_MEDIA_IMAGES میں کیا فرق ہے؟

READ_EXTERNAL_STORAGE مشترکہ اسٹوریج سے تمام فائلیں پڑھنے کی پرانی اجازت ہے (Android 12 تک)۔ READ_MEDIA_IMAGES صرف تصاویر پڑھنے کے لیے نئی دانے دار اجازت ہے (Android 13+)۔ صارفین ویڈیو اور آڈیو تک رسائی سے انکار کرتے ہوئے صرف تصاویر تک رسائی دے سکتے ہیں۔

iOS پر .limited اسٹیٹس کو کیسے ہینڈل کریں؟

.limited اسٹیٹس کا مطلب ہے کہ صارف نے رسائی کے لیے کچھ تصاویر منتخب کی ہیں۔ ایپلیکیشن PHPhotoLibrary.shared().presentLimitedLibraryPicker کے ذریعے سسٹم توسیعی ڈائیلاگ دکھا سکتی ہے۔ اس ڈائیلاگ کو صرف صارف کی واضح درخواست پر دکھانے کی سفارش کی جاتی ہے، مثال کے طور پر، “مزید تصاویر شامل کریں” بٹن کو چھونے پر۔

کیا تصاویر سے EXIF میٹا ڈیٹا پڑھا جا سکتا ہے؟

ہاں، Photo Library Permission کے ساتھ، ایپلیکیشن EXIF ڈیٹا پڑھ سکتی ہے، جس میں جغرافیائی ٹیگز، کیپچر تاریخ اور کیمرہ ماڈل شامل ہیں۔ iOS پر، جغرافیائی ٹیگز تک رسائی کے لیے اضافی مقام کی اجازت درکار ہو سکتی ہے، کیونکہ Apple GPS کوآرڈینیٹس کو خفیہ ڈیٹا سمجھتا ہے۔

اجازت کے بغیر گیلری سے ویڈیو کیسے منتخب کریں؟

سسٹم پکر استعمال کریں: iOS پر filter = .videos کے ساتھ PHPicker، Android پر VideoOnly کے ساتھ PickVisualMedia۔ Android پر، آپ MediaStore.Video.Media.EXTERNAL_CONTENT_URI کے ساتھ Intent(Intent.ACTION_PICK) بھی استعمال کر سکتے ہیں، لیکن اس کے لیے Android 13 سے نیچے کے ورژنز پر READ_EXTERNAL_STORAGE اجازت درکار ہے۔

خلاصہ

  • Photo Library Permission — میڈیا فائلوں کو پڑھنے اور لکھنے کی اجازت، ڈیوائس گیلری کے ساتھ کام کرنے والی ایپلیکیشنز کے لیے لازمی۔
  • Android 13+ ایک READ_EXTERNAL_STORAGE کے بجائے دانے دار اجازتیں READ_MEDIA_IMAGES اور READ_MEDIA_VIDEO استعمال کرتا ہے۔
  • iOS 14+ PhotoKit کے ذریعے صارفین کو صرف منتخب تصاویر (Limited) تک رسائی دینے کی اجازت دیتا ہے۔
  • PhotoPicker مکمل لائبریری رسائی کی درخواست کیے بغیر انفرادی فائلیں منتخب کرنے کا تجویز کردہ طریقہ ہے۔
  • گیلری میں لکھنا Android 10+ پر MediaStore کے ذریعے اجازت کی ضرورت نہیں، iOS پر NSPhotoLibraryAddUsageDescription درکار ہے۔
  • قبل از اجازت اسکرین تصاویر جمع کرنے کے مقصد کی وضاحت کرکے منظوری کی شرح بڑھاتی ہے اور انکار کو کم کرتی ہے۔
  • محدود رسائی iOS پر اضافی انتظام اور سسٹم ڈائیلاگ کے ذریعے توسیعی رسائی کی درخواست کرنے کی صلاحیت کی ضرورت ہوتی ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں