অ্যাপ্লিকেশন অনুমতি সেরা অনুশীলন

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

অ্যান্ড্রয়েড পারমিশন সম্পর্কে আরও সাধারণ ধারণা পেতে, অনুগ্রহ করে পারমিশন ওভারভিউ দেখুন। আপনার কোডে পারমিশন নিয়ে কীভাবে কাজ করবেন সে সম্পর্কে বিস্তারিত জানতে, অ্যাপ পারমিশন অনুরোধ করা দেখুন।

অ্যান্ড্রয়েড ৬.০+ এ অনুমতি

অ্যান্ড্রয়েড ৬.০ (এপিআই লেভেল ২৩) এবং এর পরবর্তী সংস্করণগুলোতে, অ্যাপগুলো ইনস্টলেশনের আগে নয়, বরং রানটাইমে ব্যবহারকারীর কাছ থেকে অনুমতি চাইতে পারে। এর ফলে, অ্যাপগুলো তখনই অনুমতি চাইতে পারে যখন তাদের প্রকৃতপক্ষে কোনো পরিষেবা বা সেই পরিষেবা দ্বারা সুরক্ষিত ডেটার প্রয়োজন হয়। যদিও এটি অ্যাপের সামগ্রিক আচরণে (অগত্যা) কোনো পরিবর্তন আনে না, তবে এটি সংবেদনশীল ব্যবহারকারী ডেটা পরিচালনার পদ্ধতিতে কিছু পরিবর্তন নিয়ে আসে:

বর্ধিত পরিস্থিতিগত প্রেক্ষাপট

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

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

অনুমতি প্রদানে অধিকতর নমনীয়তা

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

লেনদেনের বোঝা বৃদ্ধি

ব্যবহারকারীদেরকে পারমিশন গ্রুপগুলোর জন্য একসাথে নয়, বরং আলাদাভাবে অ্যাক্সেস মঞ্জুর করতে বলা হয়। এই কারণে, আপনি যে পারমিশনগুলোর জন্য অনুরোধ করছেন তার সংখ্যা ন্যূনতম রাখা অত্যন্ত গুরুত্বপূর্ণ। এটি পারমিশন মঞ্জুর করার ক্ষেত্রে ব্যবহারকারীর উপর বোঝা বাড়িয়ে দেয় এবং ফলস্বরূপ, অনুরোধগুলোর মধ্যে অন্তত একটি প্রত্যাখ্যাত হওয়ার সম্ভাবনাও বৃদ্ধি করে।

ডিফল্ট হ্যান্ডলার হওয়ার জন্য প্রয়োজনীয় অনুমতিসমূহ

কিছু অ্যাপ কল লগ এবং এসএমএস বার্তার মতো সংবেদনশীল ব্যবহারকারী তথ্যে অ্যাক্সেসের উপর নির্ভর করে। আপনি যদি কল লগ এবং এসএমএস বার্তার জন্য নির্দিষ্ট অনুমতিগুলো অনুরোধ করতে চান এবং আপনার অ্যাপটি প্লে স্টোরে প্রকাশ করতে চান, তবে এই রানটাইম অনুমতিগুলো অনুরোধ করার আগে আপনাকে অবশ্যই ব্যবহারকারীকে একটি কোর সিস্টেম ফাংশনের জন্য আপনার অ্যাপটিকে ডিফল্ট হ্যান্ডলার হিসেবে সেট করতে অনুরোধ করতে হবে।

ডিফল্ট হ্যান্ডলার সম্পর্কে আরও তথ্যের জন্য, ব্যবহারকারীদের ডিফল্ট হ্যান্ডলার প্রম্পট দেখানোর নির্দেশনাসহ, শুধুমাত্র ডিফল্ট হ্যান্ডলারে ব্যবহৃত অনুমতি সংক্রান্ত নির্দেশিকাটি দেখুন

আপনি যে লাইব্রেরিগুলো নিয়ে কাজ করছেন, সেগুলো সম্পর্কে জানুন।

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

ব্যবহারকারীরা যেমন একই কার্যকারিতার জন্য কম পারমিশন ব্যবহার করে এমন অ্যাপ বেছে নেন, তেমনি ডেভেলপারদেরও উচিত তাদের লাইব্রেরিগুলো পর্যালোচনা করা এবং এমন থার্ড-পার্টি SDK বেছে নেওয়া যেগুলো অপ্রয়োজনীয় পারমিশন ব্যবহার করছে না। উদাহরণস্বরূপ, আপনি যদি এমন কোনো লাইব্রেরি ব্যবহার করেন যা লোকেশন সংক্রান্ত কার্যকারিতা প্রদান করে, তবে নিশ্চিত করুন যে আপনি FINE_LOCATION পারমিশনটি অনুরোধ করছেন না, যদি না আপনি লোকেশন-ভিত্তিক টার্গেটিং কার্যকারিতা ব্যবহার করেন।

অবস্থানের ব্যাকগ্রাউন্ড অ্যাক্সেস সীমিত করুন

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

উভয় অনুমতি মডেলের জন্য পরীক্ষা করুন

অ্যান্ড্রয়েড ৬.০ (এপিআই লেভেল ২৩) এবং এর পরবর্তী সংস্করণগুলোতে, ব্যবহারকারীরা অ্যাপ ইনস্টল করার পরিবর্তে রান টাইমে অ্যাপের অনুমতি প্রদান ও প্রত্যাহার করে থাকেন। ফলে, আপনাকে আরও বিস্তৃত পরিসরের পরিস্থিতিতে আপনার অ্যাপটি পরীক্ষা করতে হবে। অ্যান্ড্রয়েড ৬.০-এর আগে, আপনি যুক্তিসঙ্গতভাবেই ধরে নিতে পারতেন যে, আপনার অ্যাপটি যদি আদৌ চলে, তবে অ্যাপ ম্যানিফেস্টে ঘোষিত সমস্ত অনুমতিই তার কাছে থাকবে। এখন, ব্যবহারকারী এপিআই লেভেল নির্বিশেষে যেকোনো অ্যাপের জন্য অনুমতি চালু বা বন্ধ করতে পারেন। বিভিন্ন অনুমতির পরিস্থিতিতে আপনার অ্যাপটি সঠিকভাবে কাজ করছে কিনা, তা নিশ্চিত করতে আপনার পরীক্ষা করা উচিত।

নিম্নলিখিত পরামর্শগুলো আপনাকে এপিআই লেভেল ২৩ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলোতে পারমিশন-সংক্রান্ত কোডের সমস্যা খুঁজে পেতে সাহায্য করবে:

  • আপনার অ্যাপের বর্তমান অনুমতিগুলো এবং সংশ্লিষ্ট কোড পাথগুলো শনাক্ত করুন।
  • অনুমতি-সুরক্ষিত পরিষেবা এবং ডেটা জুড়ে ব্যবহারকারীর প্রবাহ পরীক্ষা করুন।
  • প্রদত্ত বা বাতিলকৃত অনুমতির বিভিন্ন সংমিশ্রণ দিয়ে পরীক্ষা করুন। উদাহরণস্বরূপ, একটি ক্যামেরা অ্যাপ তার ম্যানিফেস্টে CAMERA , READ_CONTACTS , এবং ACCESS_FINE_LOCATION তালিকাভুক্ত করতে পারে। অ্যাপটি সমস্ত অনুমতি কনফিগারেশন সুষ্ঠুভাবে পরিচালনা করতে পারে কিনা তা নিশ্চিত করার জন্য, আপনার এই প্রতিটি অনুমতি চালু এবং বন্ধ রেখে অ্যাপটি পরীক্ষা করা উচিত।
  • কমান্ড লাইন থেকে অনুমতি পরিচালনা করতে adb টুলটি ব্যবহার করুন:
    • গ্রুপ অনুযায়ী অনুমতি এবং স্থিতি তালিকাভুক্ত করুন:
      $ adb shell pm list permissions -d -g
    • এক বা একাধিক অনুমতি প্রদান বা প্রত্যাহার করুন:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • আপনার অ্যাপে পারমিশন ব্যবহার করে এমন সার্ভিসগুলো বিশ্লেষণ করুন।

অতিরিক্ত সম্পদ