UIDocumentPickerViewController ফাইল সিস্টেম, iCloud Drive এবং তৃতীয় পক্ষের ক্লাউড স্টোরেজ থেকে ডকুমেন্ট নির্বাচনের জন্য একটি iOS সিস্টেম কন্ট্রোলার। কন্ট্রোলারটি যে কোনো ধরনের ফাইল খোলার এবং আমদানির জন্য একটি ইউনিফাইড ইন্টারফেস প্রদান করে: ছবি, PDF, টেক্সট এবং অডিও। Apple ডিভেলপার ডকুমেন্টেশন (2025) অনুযায়ী, UIDocumentPickerViewController import এবং export মোড সমর্থন করে এবং নির্বাচিত ফাইলগুলিকে একটি ডিলিগেটের মাধ্যমে URL রিফারেন্স হিসাবে ফিরিয়ে দেয়।
মূখ্য বিষয়
UIDocumentPickerViewController একটি UIKit কন্ট্রোলার যা ডকুমেন্ট নির্বাচনের জন্য একটি সিস্টেম ইন্টারফেস প্রদান করে। এটি UIKit ফ্রেমওয়ার্কের অংশ এবং iOS 8 থেকে উপলব্ধ। কন্ট্রোলারটি একটি ফাইল ব্রাউজার প্রদর্শন করে যাতে স্থানীয় স্টোরেজ, iCloud Drive এবং নিবন্ধিত তৃতীয় পক্ষের ক্লাউড সেবা অন্তর্ভুক্ত।
কন্ট্রোলারটি অসিংক্রোনাসভাবে কাজ করে: present কল করার পর, ব্যবহারকারী একটি সিস্টেম ডায়ালগ দেখে, একটি ফাইল নির্বাচন করে, এবং ফলাফল ডিলিগেটের মাধ্যমে ফিরিয়ে আসে। নির্বাচিত ফাইলটি অ্যাক্সেস করতে অ্যাপটির কোনো বিশেষ অনুমতির প্রয়োজন নেই — সিস্টেম পিকার স্বচালিতভাবে URI এ অস্থায়ী অ্যাক্সেস প্রদান করে।
UIDocumentPickerViewController UIPopoverPresentationController এর মাধ্যমে iPad এবং iPhone এর জন্য একটি অডাপ্টিভ ইন্টারফেস সমর্থন করে। iOS 14 থেকে, কন্ট্রোলারটি একটি আপডেটেড ডিজাইন এবং iPadOS এ sidebar নেভিগেশন সমর্থন পেয়েছে।
UIDocumentPickerViewController দুটি মূল মোডে কাজ করে, প্রত্যেকটি নির্ধারণ করে কিভাবে অ্যাপ ফাইলটি অ্যাক্সেস করে। কাজের উপর নির্ভর করে forOpeningContentTypes বা forExporting প্যারামিটারের মাধ্যমে মোড সেট করা হয়।
Import mode (forOpeningContentTypes) নির্বাচিত ফাইলটি অ্যাপ স্যান্ডবক্সে কপি করে। অ্যাপ ফাইলটির নিজস্ব কপির URL পায়, যা কেবলমাত্র এর কাছে অ্যাক্সেসযোগ্য। এটি একটি নিরাপদ মোড: অন্য অ্যাপের ফাইল পরিবর্তিত হয় না, এবং কপিটি সম্পূর্ণরূপে বর্তমান অ্যাপের নিয়ন্ত্রণে থাকে।
Export mode (forExporting) কপি ছাড়াই মূল ফাইলের URL প্রদান করে। অ্যাপ লিঙ্কের মাধ্যমে ফাইলটি পড়তে পারে, কিন্তু পরিবর্তন সংরক্ষিত হয় না। এই মোডটি ব্যবহৃত হয় যখন অন্য অ্যাপে একটি ফাইল স্থানান্তর করার বা ইমেইলে পাঠানোর প্রয়োজন হয়। পরিবর্তন লেখার জন্য, scoped security-scoped URL এর সাথে open মোড ব্যবহৃত হয়।
UTI (Uniform Type Identifier) Apple ইকোসিস্টেমে কন্টেন্ট ধরন শনাক্তিকরণ ব্যবস্থা। UIDocumentPickerViewController forOpeningContentTypes এর মাধ্যমে পাস করা UTI অ্যারে অনুযায়ী প্রদর্শিত ফাইলগুলি ফিল্টার করে। যদি কোনো UTI নির্দিষ্ট না করা হয়, তবে পিকার সব ফাইল ধরন দেখায়।
একাধিক ধরন নির্বাচনের জন্য, একটি অ্যারে [UTType.pdf, UTType.image] পাস করা হয়। iOS 14 থেকে, Apple স্ট্রিং কনস্ট্যান্টের পরিবর্তে UTType ব্যবহার সুপারিশ করে। নির্বাচিত প্রদাতা পরিবর্তনের সময় UIDocumentPickerViewController স্বচালিতভাবে প্রদর্শিত ধরনের তালিকা আপডেট করে।
বাস্তবায়ন Swift এ UIDocumentPickerViewController এর সর্বনিম্ন: UTI ধরন সহ একটি কন্ট্রোলার ইনস্টেন্স তৈরি করুন, ডিলিগেট সেট করুন এবং present কল করুন। ফাইল নির্বাচনের পর, ডিলিগেট didPickDocumentsAt মেথডে URLs এর একটি অ্যারে পায়। প্রতিটি URL একটি security-scoped রিফারেন্স যার জন্য startAccessingSecurityScopedResource কল করা আবশ্যক।
let picker = UIDocumentPickerViewController(
forOpeningContentTypes: [.pdf, .image],
asCopy: true
)
picker.delegate = self
picker.allowsMultipleSelection = false
present(picker, animated: true)
// MARK: - UIDocumentPickerDelegate
func documentPicker(
_ controller: UIDocumentPickerViewController,
didPickDocumentsAt urls: [URL]
) {
guard let url = urls.first else { return }
url.startAccessingSecurityScopedResource()
defer { url.stopAccessingSecurityScopedResource() }
// url থেকে ফাইল পড়ুন
}
একটি security-scoped URL পড়ার আগে startAccessingSecurityScopedResource কল করা প্রয়োজন। এই মেথডটি সিস্টেকে জানায় যে অ্যাপ স্যান্ডবক্সের বাইরে একটি ফাইলে অস্থায়ী অ্যাক্সেস পাচ্ছে। শেষ হলে, সবসময় stopAccessingSecurityScopedResource কল করুন, অন্যথা সিস্টেম অ্যাক্সেস ব্লক করতে পারে।
UIDocumentPickerDelegate দুটি মেথডের মাধ্যমে ফাইল নির্বাচন ফলাফল পায়: সফলতায় didPickDocumentsAt এবং বাতিলে didPickDocumentsAt। ব্যবহারকারী নির্বাচন ছাড়াই পিকার বন্ধ করলে iOS স্বচালিতভাবে বাতিল মেথড কল করে।
ত্রুটি হ্যান্ডলিং এর মধ্যে URL উপলব্ধতা যাচাই অন্তর্ভুক্ত। যদি ব্যবহারকারী iCloud Drive থেকে একটি ফাইল নির্বাচন করে কিন্তু ডিভাইস অফলাইন থাকে, তবে URL অনুপলব্ধ হতে পারে। পড়ার আগে FileManager.default.isReadableFile যাচাই করা এবং ব্যবহারকারীকে একটি পরিষ্কার ত্রুটি বার্তা দেখানো সুপারিশ করা হয়।
iOS 14+ এর জন্য, URLs এর একটি অ্যারে সহ একটি নতুন মেথড documentPicker:didPickDocumentsAt উপলব্ধ। পুরানো মেথড didPickDocumentAt (একক) অপচারিত। সবসময় অ্যারেটি হ্যান্ডল করুন, যদিও allowsMultipleSelection অক্ষম থাকে — Apple একটি হ্যান্ডলার ব্যবহার সুপারিশ করে।
iPad এর UIDocumentPickerViewController এর বিশেষ কনফিগারেশন প্রয়োজন। iPad এ, পিকারটি একটি popover হিসাবে প্রদর্শিত হয় এবং সঠিক অবস্থানের জন্য sourceView নির্দিষ্ট করা আবশ্যক। sourceView ছাড়া, কন্ট্রোলারটি iPadOS এ এক্সেপশন সহ ক্র্যাশ করতে পারে।
popover এর জন্য, popoverPresentationController বৈশিষ্ট্যটি ব্যবহৃত হয়। একটি বাতাম বা টেবিল সেলে এংকর করতে sourceView এবং sourceRect নির্দিষ্ট করুন। iPhone এ এই কোডের কোনো প্রভাব নেই — iOS স্বচালিতভাবে পিকারটি পূর্ণ স্ক্রিনে দেখায়। iPadOS 16 থেকে, কন্ট্রোলারটি উন্নত নেভিগেশনের জন্য sidebar এবং split view সমর্থন করে।
UIDocumentPickerViewController এর অডাপ্টিভ ডিজাইন স্বচালিতভাবে পূর্ণ স্ক্রিন (iPhone) এবং popover (iPad) এর মধ্যে স্যংক্রমণ করে। বিকাশকারীকে বিভিন্ন ডিভাইসের জন্য পৃথক কন্ট্রোলার বাস্তবায়ন করতে হবে না — iPad এর জন্য popoverPresentationController সঠিকভাবে কনফিগার করা যথেষ্ট।
সামান্য প্রশ্ন
UIDocumentPickerViewController iCloud Drive, স্থানীয় স্টোরেজ এবং তৃতীয় পক্ষের ক্লাউড সেবা থেকে ডকুমেন্ট নির্বাচনের জন্য একটি সিস্টেম UIKit কন্ট্রোলার। কন্ট্রোলারটি ডিলিগেটের মাধ্যমে নির্বাচিত ফাইলের URL ফিরিয়ে দেয়।
forOpeningContentTypes: [.pdf] সহ একটি কন্ট্রোলার তৈরি করুন। এটি প্রদর্শন কেবল PDF ফাইলে সীমিত করবে। ডিলিগেট সেট করুন এবং সিস্টেম পিকার দেখাতে present কল করুন।
Import mode অ্যাপ স্যান্ডবক্সে ফাইল কপি করে — পরিবর্তন মূলকে প্রভাবিত করে না। Export mode কপি ছাড়াই কেবল পড়ার জন্য মূল ফাইলের URL প্রদান করে।
Security-scoped URL অ্যাপ স্যান্ডবক্সের বাইরে একটি ফাইলের রিফারেন্স। পড়ার আগে startAccessingSecurityScopedResource এবং শেষ হলে stopAccessingSecurityScopedResource কল করুন।
sourceView এবং sourceRect সহ popoverPresentationController কনফিগার করুন। এটি ছাড়া, কন্ট্রোলারটি iPad এ এক্সেপশন দিতে পারে। iPhone এ, popover সেটিংগুলি উপেক্ষা করা হয় — পিকারটি পূর্ণ স্ক্রিনে দেখায়।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন