বিশেষ অনুমতির জন্য অনুরোধ করুন

একটি বিশেষ অনুমতি এমন সিস্টেম রিসোর্সগুলিতে অ্যাক্সেস রক্ষা করে যা বিশেষভাবে সংবেদনশীল বা ব্যবহারকারীর গোপনীয়তার সাথে সরাসরি সম্পর্কিত নয়। এই অনুমতিগুলি ইনস্টল-টাইম অনুমতি এবং রানটাইম অনুমতি থেকে আলাদা।

চিত্র ১. সিস্টেম সেটিংসে বিশেষ অ্যাপ অ্যাক্সেস স্ক্রিন।

বিশেষ অনুমতির কিছু উদাহরণের মধ্যে রয়েছে:

  • সঠিক অ্যালার্ম নির্ধারণ করা।
  • অন্যান্য অ্যাপের উপর প্রদর্শন এবং অঙ্কন।
  • সমস্ত স্টোরেজ ডেটা অ্যাক্সেস করা হচ্ছে।

বিশেষ অনুমতি ঘোষণাকারী অ্যাপগুলি সিস্টেম সেটিংসের বিশেষ অ্যাপ অ্যাক্সেস পৃষ্ঠায় দেখানো হয়েছে (চিত্র 1)। অ্যাপটিকে বিশেষ অনুমতি দেওয়ার জন্য, ব্যবহারকারীকে এই পৃষ্ঠায় যেতে হবে: সেটিংস > অ্যাপস > বিশেষ অ্যাপ অ্যাক্সেস

কর্মপ্রবাহ

বিশেষ অনুমতির জন্য অনুরোধ করতে, নিম্নলিখিতগুলি করুন:

  1. আপনার অ্যাপের ম্যানিফেস্ট ফাইলে, আপনার অ্যাপের জন্য যে বিশেষ অনুমতিগুলির অনুরোধ করার প্রয়োজন হতে পারে তা ঘোষণা করুন
  2. আপনার অ্যাপের UX এমনভাবে ডিজাইন করুন যাতে আপনার অ্যাপের নির্দিষ্ট ক্রিয়াগুলি নির্দিষ্ট বিশেষ অনুমতির সাথে সম্পর্কিত হয়। ব্যবহারকারীদের জানান যে কোন ক্রিয়াগুলির জন্য আপনার অ্যাপকে ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করার অনুমতি দেওয়ার প্রয়োজন হতে পারে।
  3. আপনার অ্যাপে ব্যবহারকারীর সেই কাজ বা ক্রিয়াটি শুরু না হওয়া পর্যন্ত অপেক্ষা করুন যার জন্য নির্দিষ্ট ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেসের প্রয়োজন হয়। সেই সময়ে, আপনার অ্যাপটি সেই ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় বিশেষ অনুমতির জন্য অনুরোধ করতে পারে।
  4. ব্যবহারকারী ইতিমধ্যেই আপনার অ্যাপের জন্য প্রয়োজনীয় বিশেষ অনুমতিটি মঞ্জুর করেছেন কিনা তা পরীক্ষা করুন। এটি করার জন্য, প্রতিটি অনুমতির কাস্টম চেকিং ফাংশন ব্যবহার করুন। যদি মঞ্জুর করা হয়, তাহলে আপনার অ্যাপ ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করতে পারবে। যদি না হয়, তাহলে পরবর্তী ধাপে যান। দ্রষ্টব্য: প্রতিবার যখন আপনি এমন কোনও অপারেশন করবেন যার জন্য সেই অনুমতির প্রয়োজন হবে তখন আপনাকে অবশ্যই পরীক্ষা করে দেখতে হবে যে আপনার কাছে অনুমতি আছে কিনা।
  5. ব্যবহারকারীর কাছে একটি UI উপাদানের যুক্তি উপস্থাপন করুন যা স্পষ্টভাবে ব্যাখ্যা করে যে আপনার অ্যাপ কোন ডেটা অ্যাক্সেস করার চেষ্টা করছে এবং বিশেষ অনুমতি দিলে অ্যাপটি ব্যবহারকারীকে কী সুবিধা দিতে পারে। এছাড়াও, যেহেতু আপনার অ্যাপ ব্যবহারকারীদের অনুমতি দেওয়ার জন্য সিস্টেম সেটিংসে পাঠায়, তাই ব্যবহারকারীরা কীভাবে সেখানে অনুমতি দিতে পারেন তা ব্যাখ্যা করে সংক্ষিপ্ত নির্দেশাবলীও অন্তর্ভুক্ত করুন। যুক্তিযুক্ত UI ব্যবহারকারীকে অনুমতি দেওয়া থেকে বিরত থাকার জন্য একটি স্পষ্ট বিকল্প প্রদান করবে। ব্যবহারকারী যুক্তি স্বীকার করার পরে, পরবর্তী ধাপে এগিয়ে যান।
  6. আপনার অ্যাপের ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করার জন্য প্রয়োজনীয় বিশেষ অনুমতির অনুরোধ করুন । এর মধ্যে সম্ভবত সিস্টেম সেটিংসের সংশ্লিষ্ট পৃষ্ঠার উদ্দেশ্য থাকে যেখানে ব্যবহারকারী অনুমতি দিতে পারেন। রানটাইম অনুমতির বিপরীতে, কোনও পপআপ অনুমতি ডায়ালগ নেই।
  7. onResume() পদ্ধতিতে ব্যবহারকারীর প্রতিক্রিয়া পরীক্ষা করুন - তারা বিশেষ অনুমতি প্রদান করেছেন নাকি প্রত্যাখ্যান করেছেন -।
  8. যদি ব্যবহারকারী আপনার অ্যাপটিকে অনুমতি দেন, তাহলে আপনি ব্যক্তিগত ব্যবহারকারীর ডেটা অ্যাক্সেস করতে পারবেন। যদি ব্যবহারকারী অনুমতি প্রত্যাখ্যান করেন, তাহলে আপনার অ্যাপের অভিজ্ঞতাকে সুন্দরভাবে হ্রাস করুন যাতে এটি সেই অনুমতি দ্বারা সুরক্ষিত তথ্য ছাড়াই ব্যবহারকারীকে কার্যকারিতা প্রদান করে।
চিত্র ২. অ্যান্ড্রয়েডে বিশেষ অনুমতি ঘোষণা এবং অনুরোধ করার জন্য কর্মপ্রবাহ।

বিশেষ অনুমতির জন্য অনুরোধ করুন

রানটাইম অনুমতির বিপরীতে, ব্যবহারকারীকে সিস্টেম সেটিংসের স্পেশাল অ্যাপ অ্যাক্সেস পৃষ্ঠা থেকে বিশেষ অনুমতি প্রদান করতে হবে। অ্যাপগুলি একটি ইনটেন্ট ব্যবহার করে ব্যবহারকারীদের সেখানে পাঠাতে পারে, যা অ্যাপটিকে থামিয়ে দেয় এবং প্রদত্ত বিশেষ অনুমতির জন্য সংশ্লিষ্ট সেটিংস পৃষ্ঠা চালু করে। ব্যবহারকারী অ্যাপে ফিরে আসার পরে, অ্যাপটি onResume() ফাংশনে অনুমতি দেওয়া হয়েছে কিনা তা পরীক্ষা করতে পারে।

নিম্নলিখিত নমুনা কোডটি দেখায় কিভাবে ব্যবহারকারীদের কাছ থেকে SCHEDULE_EXACT_ALARMS বিশেষ অনুমতির জন্য অনুরোধ করতে হয়:

val alarmManager = getSystemService<AlarmManager>()!!
when {
   // if permission is granted, proceed with scheduling exact alarms…
   alarmManager.canScheduleExactAlarms() -> {
       alarmManager.setExact(...)
   }
   else -> {
       // ask users to grant the permission in the corresponding settings page
       startActivity(Intent(ACTION_REQUEST_SCHEDULE_EXACT_ALARM))
   }
}

onResume() তে অনুমতি পরীক্ষা করার এবং ব্যবহারকারীর সিদ্ধান্ত পরিচালনা করার জন্য নমুনা কোড:

override fun onResume() {
   // ...

   if (alarmManager.canScheduleExactAlarms()) {
       // proceed with the action (setting exact alarms)
       alarmManager.setExact(...)
   }
   else {
       // permission not yet approved. Display user notice and gracefully degrade
       your app experience.
       alarmManager.setWindow(...)
   }
}

সেরা অনুশীলন এবং টিপস

নিম্নলিখিত বিভাগগুলিতে বিশেষ অনুমতির অনুরোধ করার সময় কিছু সেরা অনুশীলন এবং বিবেচনা প্রদান করা হয়েছে।

প্রতিটি অনুমতির নিজস্ব চেক পদ্ধতি রয়েছে।

বিশেষ অনুমতিগুলি রানটাইম অনুমতিগুলির চেয়ে আলাদাভাবে কাজ করে। পরিবর্তে, অনুমতি API রেফারেন্স পৃষ্ঠাটি দেখুন এবং প্রতিটি বিশেষ অনুমতির জন্য কাস্টম অ্যাক্সেস চেক ফাংশন ব্যবহার করুন। উদাহরণগুলির মধ্যে রয়েছে SCHEDULE_EXACT_ALARMS অনুমতির জন্য AlarmManager#canScheduleExactAlarms() এবং MANAGE_EXTERNAL_STORAGE অনুমতির জন্য Environment#isExternalStorageManager()

প্রেক্ষাপটে অনুরোধ করুন

রানটাইম অনুমতির মতোই, ব্যবহারকারী যখন কোনও নির্দিষ্ট কাজের জন্য অনুমতির প্রয়োজন হয় তখন অ্যাপগুলিকে প্রেক্ষাপটে বিশেষ অনুমতির অনুরোধ করা উচিত। উদাহরণস্বরূপ, ব্যবহারকারী একটি নির্দিষ্ট সময়ে একটি ইমেল পাঠানোর সময়সূচী নির্ধারণ না করা পর্যন্ত SCHEDULE_EXACT_ALARMS অনুমতির অনুরোধ করার জন্য অপেক্ষা করুন।

অনুরোধটি ব্যাখ্যা করুন

সিস্টেম সেটিংসে পুনঃনির্দেশিত করার আগে একটি যুক্তি দিন। যেহেতু ব্যবহারকারীরা বিশেষ অনুমতি দেওয়ার জন্য অস্থায়ীভাবে অ্যাপটি ছেড়ে যান, তাই সিস্টেম সেটিংসে বিশেষ অ্যাপ অ্যাক্সেস পৃষ্ঠায় উদ্দেশ্য চালু করার আগে একটি ইন-অ্যাপ UI দেখান। এই UI-তে স্পষ্টভাবে ব্যাখ্যা করা উচিত যে অ্যাপটির কেন অনুমতি প্রয়োজন এবং ব্যবহারকারী কীভাবে সেটিংস পৃষ্ঠায় এটি প্রদান করবেন।