অ্যাপের কোয়ালিটি উন্নত করা এবং ব্যবহারকারীর গোপনীয়তা রক্ষা করার অংশ হিসেবে, আমরা সাজেস্ট করি যে আপনি অ্যাপে অনুমতির ব্যবহার যতটা সম্ভব কম করুন। এটি ব্যবহারকারীদের খুব ভালো কোয়ালিটির অ্যাপ খুঁজে পেতে ও ব্যবহার করতে সাহায্য করে যা নিরাপদ ও সুরক্ষিত ব্যবহারকারীর পরিবেশ প্রদান করে।
ব্যবহারকারীর থেকে অনুমতি চাওয়ার ফলে ব্যবহারকারীর ফ্লোতে বাধা সৃষ্টি হয় এবং ব্যবহারকারী আপনার অনুরোধ প্রত্যাখ্যান করতে পারেন। এছাড়াও, প্রতিবার নতুন অনুমতি ঘোষণা করার সময়, আপনাকে অবশ্যই আপনার অ্যাপ কীভাবে ব্যবহারকারীর ডেটা অনুরোধ ও শেয়ার করে তা পর্যালোচনা করতে হবে। কিছু বিশেষভাবে সংবেদনশীল অনুমতি ও API-এর জন্য আপনাকে ডেটা অ্যাক্সেস, সংগ্রহ, ব্যবহার ও শেয়ার করার ব্যাপারে অ্যাপ-মধ্যস্থ ডিসক্লোজার প্রদান করতে হবে।
অনুমতির ব্যবহার কমানোর একাধিক বিকল্প উপায় আছে:
- যেখানে প্রযোজ্য সেখানে ব্যবহারকারীর ডেটা অ্যাক্সেসের অনুমতির জন্য কম বিশ্বস্ত বিকল্প ব্যবহার করুন, যেমন প্রয়োজন না হলে সুনির্দিষ্ট লোকেশন ডেটার পরিবর্তে আনুমানিক লোকেশন ডেটার অনুরোধ করা।
- পিকার ও অনুমতির বিকল্প ব্যবহার করুন যা স্কোপ করা পরিস্থিতিতে সংবেদনশীল অনুমতিতে অ্যাক্সেস প্রদান করে, যেমন ফটো পিকার, পরিচিতি পিকার এবং লোকেশন বোতাম
- এমন API কল করুন যা আপনার অ্যাপকে অনুমতি ঘোষণা না করেই বেছে নেওয়া কার্যকারিতা সম্পাদন করার অনুমতি দেয়।
- অনুমতি ঘোষণা করার পরিবর্তে, কার্যকারিতা সম্পাদন করতে নির্দিষ্ট ইনটেন্ট বা ইভেন্ট হ্যান্ডলার ইনভোক করুন।
- সিস্টেমটি বিভিন্ন ফাইল অপারেশনের জন্য বিল্ট-ইন কন্ট্র্যাক্ট প্রদান করে এবং কাস্টম কন্ট্র্যাক্ট-এর ক্ষেত্রেও কাজ করে।
আপনাকে কোনও অনুমতি ঘোষণা করতে হলে, সবসময় ব্যবহারকারীর সিদ্ধান্তকে সম্মান করুন এবং আপনার অ্যাপের অভিজ্ঞতাকে সুন্দরভাবে ডিগ্রেড করার একটি উপায় প্রদান করুন।
এই পৃষ্ঠায় এমন কিছু ব্যবহারের উদাহরণ দেওয়া হয়েছে যেখানে আপনার অ্যাপ কোনও অনুমতির প্রয়োজন ঘোষণা না করেই কাজ করতে পারে।
আশেপাশের জায়গা দেখুন
আপনার অ্যাপকে ব্যবহারকারীর আনুমানিক লোকেশন জানতে হতে পারে। এটি লোকেশন-সম্পর্কিত তথ্য দেখানোর জন্য উপযোগী, যেমন কাছাকাছি রেস্তোরাঁ। প্রতিটি লোকেশন ব্যবহারের ক্ষেত্রে অ্যাক্সেসের নির্ভুলতা এবং দৈর্ঘ্যের জন্য নিজস্ব অনন্য প্রয়োজনীয়তা রয়েছে, বেশিরভাগ ক্ষেত্রে ব্যবহারকারীর অবস্থান সম্পর্কে শুধুমাত্র একটি আনুমানিক ধারণা প্রয়োজন। আপনি যদি নিজের অ্যাপে এমন কোনও ফাংশনালিটি প্রয়োগ করেন যা ব্যবহারকারীর লোকেশনের উপর নির্ভর করে, তাহলে সঠিক অ্যাক্সেস পদ্ধতি বেছে নিতে আপনাকে সাহায্য করার জন্য নিম্নলিখিত বিকল্পগুলি বিবেচনা করুন।
- আপনার অ্যাপের কার্যকারিতার জন্য যদি সুনির্দিষ্ট লোকেশন প্রয়োজন হয়, কিন্তু অ্যাপ ব্যবহার করার সময় শুধুমাত্র নির্দিষ্ট কোনও মুহূর্তে যেমন "আমার আশেপাশে সার্চ করুন" বা ই-কমার্সের জন্য কোনও ঠিকানা অটো-ফিল করার সময়, তাহলে লোকেশন বোতাম ব্যবহার করা আপনার জন্য সবচেয়ে ভালো বিকল্প হতে পারে যাতে ব্যবহারকারীর সমস্যা এবং আরও বড় স্কোপের অনুমতির উপর নির্ভরতা, দুটিই কমানো যায়।
- আপনার অ্যাপের ঘন ঘন লোকেশন প্রয়োজন হলে,
ACCESS_COARSE_LOCATIONঅনুমতি ঘোষণা করুন। এই অনুমতি লোকেশন পরিষেবা থেকে ডিভাইসের আনুমানিক লোকেশন প্রদান করে, যেমনটি আনুমানিক লোকেশন অ্যাকুরেসি সম্পর্কে ডকুমেন্টেশনে বর্ণনা করা হয়েছে। - আপনার অ্যাপের যদি লোকেশন কম ঘন ঘন বা শুধুমাত্র একবার প্রয়োজন হয়, তাহলে ব্যবহারকারীকে পরিবর্তে একটি ঠিকানা বা পিন কোড লিখতে বলার কথা বিবেচনা করুন।
অন্যান্য ব্যবহারের ক্ষেত্রে ডিভাইসের লোকেশন আরও সঠিকভাবে অনুমান করার প্রয়োজন হতে পারে।
শুধুমাত্র সেইসব পরিস্থিতিতেই
ACCESS_FINE_LOCATION অনুমতি ঘোষণা করা যেতে পারে।
ফাইল তৈরি ও অ্যাক্সেস করুন
Android আপনাকে স্টোরেজ বা সেন্সর সম্পর্কিত কোনও অনুমতি ঘোষণা না করেই ফাইল তৈরি এবং অ্যাক্সেস করতে দেয়।
মিডিয়া ফাইল খুলুন
আপনার অ্যাপ ব্যবহারকারীদের তাদের ফটো এবং ভিডিও থেকে বেছে নেওয়ার অনুমতি দিতে পারে, যেমন মেসেজ অ্যাটাচমেন্ট বা প্রোফাইল ছবির জন্য।
এই কার্যকারিতা ব্যবহার করতে, ফটো পিকার ব্যবহার করুন। ফটো পিকার ব্যবহার করার জন্য কোনও রানটাইম অনুমতির প্রয়োজন হয় না। আপনার অ্যাপের সাথে শেয়ার করার জন্য ফটো বা ভিডিও বেছে নিতে, কোনও ব্যবহারকারী ফটো পিকারের সাথে ইন্টার্যাক্ট করলে, সিস্টেম বেছে নেওয়া মিডিয়া ফাইলের সাথে সম্পর্কিত URI-তে অস্থায়ী রিড অ্যাক্সেস প্রদান করে।
আপনার অ্যাপকে যদি ফটো পিকার ব্যবহার না করে মিডিয়া ফাইল অ্যাক্সেস করতে হয়, তাহলে আপনাকে কোনও স্টোরেজ সংক্রান্ত অনুমতি ঘোষণা করতে হবে না:
- আপনার অ্যাপের তৈরি করা মিডিয়া ফাইল অ্যাক্সেস করলে, আপনার অ্যাপের কাছে আগে থেকেই মিডিয়া স্টোরে এইসব ফাইলের অ্যাক্সেস আছে।
- অন্য অ্যাপের তৈরি করা মিডিয়া ফাইল অ্যাক্সেস করতে, Storage Access Framework ব্যবহার করুন।
ডকুমেন্ট খুলুন
আপনার অ্যাপ ব্যবহারকারীর তৈরি করা ডকুমেন্ট দেখাতে পারে, যা আপনার অ্যাপে বা অন্য কোনও অ্যাপে তৈরি করা হয়েছে। একটি সাধারণ উদাহরণ হল টেক্সট ফাইল।
এই পরিস্থিতিতে, পুরনো ডিভাইসের সাথে কম্প্যাটিবিলিটির জন্য শুধুমাত্র READ_EXTERNAL_STORAGE
ঘোষণা করুন। android:maxSdkVersion-কে 28-এ সেট করুন।
কোন অ্যাপ ডকুমেন্টটি তৈরি করেছে তার উপর নির্ভর করে, নিম্নলিখিতগুলির মধ্যে একটি করুন:
- ব্যবহারকারী আপনার অ্যাপে ডকুমেন্ট তৈরি করলে, সরাসরি এটি অ্যাক্সেস করুন।
- ব্যবহারকারী অন্য অ্যাপে ডকুমেন্ট তৈরি করলে, Storage Access Framework ব্যবহার করুন।
ফটো তুলুন
ব্যবহারকারীরা আগে থেকে ইনস্টল করা সিস্টেম ক্যামেরা অ্যাপ ব্যবহার করে আপনার অ্যাপে ছবি তুলতে পারেন।
এই পরিস্থিতিতে, CAMERA অনুমতি ঘোষণা করবেন না। পরিবর্তে, ACTION_IMAGE_CAPTURE ইনটেন্ট অ্যাকশন চালু করুন।
একটি ভিডিও রেকর্ড করুন
ব্যবহারকারীরা আগে থেকে ইনস্টল করা সিস্টেম ক্যামেরা অ্যাপ ব্যবহার করে আপনার অ্যাপে ভিডিও রেকর্ড করতে পারেন।
এই পরিস্থিতিতে, CAMERA অনুমতি ঘোষণা করবেন না। পরিবর্তে, ACTION_VIDEO_CAPTURE ইনটেন্ট অ্যাকশন চালু করুন।
আপনার অ্যাপের ইনস্ট্যান্স চালাচ্ছে এমন ডিভাইস শনাক্ত করুন
আপনার অ্যাপের কোনও নির্দিষ্ট ইনস্ট্যান্সকে জানতে হতে পারে যে এটি কোন ডিভাইসে চলছে। এটি এমন অ্যাপের জন্য উপযোগী যেগুলির ডিভাইস-নির্দিষ্ট পছন্দ বা মেসেজিং আছে, যেমন টিভি ডিভাইস এবং পরে থাকা যায় এমন ডিভাইসের জন্য বিভিন্ন প্লেলিস্ট।
এই পরিস্থিতিতে, ডিভাইসের IMEI সরাসরি অ্যাক্সেস করবেন না। আসলে, Android 10-এর ক্ষেত্রে আপনি এটি করতে পারবেন না। এর পরিবর্তে, নিম্নলিখিতগুলির মধ্যে কোনও একটি করুন:
- Instance ID লাইব্রেরি ব্যবহার করে আপনার অ্যাপের ইনস্ট্যান্সের জন্য একটি অনন্য ডিভাইস শনাক্তকারী পান।
- আপনার নিজের শনাক্তকারী তৈরি করুন যা আপনার অ্যাপের স্টোরেজের জন্য স্কোপ করা হয়েছে।
randomUUID()-এর মতো প্রাথমিক সিস্টেম ফাংশন ব্যবহার করুন।
ব্লুটুথের মাধ্যমে ডিভাইসের সাথে পেয়ার করুন
আপনার অ্যাপ ব্লুটুথের মাধ্যমে অন্য ডিভাইসে ডেটা ট্রান্সফার করে আরও উন্নত অভিজ্ঞতা প্রদান করতে পারে।
এই কার্যকারিতা সাপোর্ট করতে, ACCESS_FINE_LOCATION,
ACCESS_COARSE_LOCATIION বা BLUETOOTH_ADMIN অনুমতি ঘোষণা করবেন না। পরিবর্তে, কম্প্যানিয়ন ডিভাইস পেয়ারিং ব্যবহার করুন।
অটোমেটিক পেমেন্ট কার্ড নম্বর লেখা
Google Play পরিষেবা একটি লাইব্রেরি অফার করে যা আপনাকে অটোমেটিক পেমেন্ট কার্ড নম্বর
লিখতে দেয়। CAMERA অনুমতি ঘোষণা করার পরিবর্তে, আপনি
ডেবিট ও ক্রেডিট কার্ড শনাক্তকরণ লাইব্রেরি ব্যবহার করতে পারেন।
ফোন কল ও টেক্সট মেসেজ ম্যানেজ করা
Android এবং Google Play পরিষেবা এমন লাইব্রেরি অফার করে যা আপনাকে ফোন কল বা এসএমএস মেসেজ সম্পর্কিত কোনও অনুমতি ঘোষণা না করেই ফোন কল এবং টেক্সট মেসেজ ম্যানেজ করতে দেয়।
অটোমেটিক ওয়ান-টাইম পাসকোড লিখুন
দুই-ধাপে যাচাইকরণ ওয়ার্কফ্লো আরও সহজ করতে, আপনার অ্যাপ হয়ত অটোমেটিক ওয়ান-টাইম পাসকোড লিখে দেবে যা ব্যবহারকারীর পরিচয় যাচাই করতে তার ডিভাইসে পাঠানো হয়।
Google Play পরিষেবা দ্বারা পরিচালিত ডিভাইসে এই কার্যকারিতা কাজ করার জন্য, READ_SMS অনুমতি ঘোষণা করবেন না। পরিবর্তে, SMS Retriever API ব্যবহার করুন।
অন্যান্য ডিভাইসে, আপনার অ্যাপ Android 8.0 (API লেভেল ২৬) বা তার পরবর্তী যেকোনও ভার্সনকে টার্গেট করলে,
createAppSpecificSmsToken() ব্যবহার করে অ্যাপ-নির্দিষ্ট টোকেন তৈরি করুন। এই টোকেনটি
অন্য কোনও অ্যাপ বা পরিষেবায় পাস করুন যা যাচাইকরণ এসএমএস মেসেজ পাঠাতে পারে।
ব্যবহারকারীর ফোন নম্বর যাচাই করা
আপনার অ্যাপকে কোনও ব্যবহারকারীর ফোন নম্বর নিরাপদে যাচাই করার অনুমতি দিতে, প্রস্তাবিত সমাধান হল Digital Credentials API। এই API সরাসরি অথবা মানানসই অ্যাগ্রিগেটরদের মাধ্যমে ব্যবহার করলে, ডিভাইসের সংবেদনশীল অনুমতি না চেয়েই আপনি ব্যবহারকারীর অ্যাকাউন্ট তথ্য যাচাই করতে পারবেন। Firebase-এর মাধ্যমে সমাধান করতে, Firebase ফোন নম্বর যাচাইকরণ দেখুন।
বিকল্প হিসেবে, আপনি SMS Retriever API ব্যবহার করে, ওয়ান-টাইম পাসকোডের মাধ্যমে ব্যবহারকারীর ফোন নম্বর যাচাই করতে পারেন।
ব্যবহারকারীর ফোন নম্বর অটোমেটিক লিখুন
আরও দক্ষ সেলস বা সহায়তা প্রদান করতে, আপনার অ্যাপ ব্যবহারকারীকে তার ডিভাইসের ফোন নম্বর অটোমেটিক লিখতে দিতে পারে।
Google Play পরিষেবা দ্বারা পরিচালিত ডিভাইসে এই কার্যকারিতা কাজ করার জন্য, READ_PHONE_STATE অনুমতি ঘোষণা করবেন না। পরিবর্তে, ফোন নম্বর
ইঙ্গিত লাইব্রেরি ব্যবহার করুন।
ফোন কল ফিল্টার করুন
ব্যবহারকারীর জন্য অপ্রয়োজনীয় বাধা কমানোর জন্য, আপনার অ্যাপ স্প্যামের জন্য ফোন কল ফিল্টার করতে পারে।
এই কার্যকারিতা সাপোর্ট করতে, READ_PHONE_STATE অনুমতি ঘোষণা করবেন না।
পরিবর্তে, CallScreeningService API ব্যবহার করুন।
ফোন কল করুন
আপনার অ্যাপে হয়ত কোনও পরিচিতির তথ্যে ট্যাপ করে ফোন কল করার সুবিধা অফার করা হয়।
এই কার্যকারিতা ব্যবহার করতে, ACTION_CALL অ্যাকশনের পরিবর্তে
ACTION_DIAL ইনটেন্ট অ্যাকশন ব্যবহার করুন। ACTION_CALL-এর জন্য ইনস্টল-টাইম
অনুমতি CALL_PHONE প্রয়োজন, যা কল করতে পারে না এমন ডিভাইস, যেমন
কিছু ট্যাবলেট, আপনার অ্যাপ্লিকেশন ইনস্টল করা থেকে বিরত রাখে।
আপনার অ্যাপে কোনও বাধা সৃষ্টি হলে মিডিয়া পজ করুন
ব্যবহারকারী কোনও ফোন কল পেলে বা ব্যবহারকারীর কনফিগার করা অ্যালার্ম বেজে উঠলে, আপনার অ্যাপে অডিও ফোকাস ফিরে না আসা পর্যন্ত আপনার অ্যাপকে যেকোনও মিডিয়া প্লেব্যাক পজ করতে হবে।
এই কার্যকারিতা সাপোর্ট করতে, READ_PHONE_STATE অনুমতি ঘোষণা করবেন না।
পরিবর্তে, onAudioFocusChange() ইভেন্ট হ্যান্ডলার প্রয়োগ করুন, যা সিস্টেম তার অডিও ফোকাস পরিবর্তন করলে অটোমেটিক রান করে। কীভাবে অডিও ফোকাস প্রয়োগ করবেন
সেই সম্পর্কে আরও জানুন।
বারকোড স্ক্যান করুন
Android-এ Google Code Scanner API-এর জন্য সহায়তা অন্তর্ভুক্ত আছে, যা Google Play পরিষেবা দ্বারা পরিচালিত হয়, এটি আপনাকে কোনও ক্যামেরা অনুমতি ঘোষণা না করেই বারকোড ডিকোড করতে দেয়। এই API ব্যবহারকারীর গোপনীয়তা রক্ষা করতে সাহায্য করে এবং আপনার বারকোড-স্ক্যানিং ব্যবহারের ক্ষেত্রে কাস্টম UI তৈরি করার প্রয়োজনীয়তা কমিয়ে দেয়।
API বারকোড স্ক্যান করে এবং শুধুমাত্র স্ক্যান ফলাফল আপনার অ্যাপে ফেরত পাঠায়। ছবি অন-ডিভাইস প্রসেস করা হয় এবং Google কোনও ডেটা বা স্ক্যান ফলাফল স্টোর করে না।
আপনার অ্যাপে জটিল ব্যবহারের কেস বা বারকোড ফর্ম্যাট সাপোর্ট করার প্রয়োজন হলে অথবা কাস্টম UI-এর প্রয়োজন হলে, পরিবর্তে ML Kit বারকোড স্ক্যানিং API ব্যবহার করুন।
অব্যবহৃত অনুমতি রিসেট করুন
অব্যবহৃত রানটাইম অনুমতি ডিফল্ট, অস্বীকার করা অবস্থায় রিসেট করার জন্য Android একাধিক উপায় প্রদান করে।
ডিজাইন সংক্রান্ত নির্দেশিকা পড়ুন।
রানটাইম অনুমতির জন্য অনুরোধ করুন
আপনার অ্যাপকে রানটাইম অনুমতি ঘোষণা ও অনুরোধ করতে হবে কিনা তা মূল্যায়ন করার পরে, এটি করার জন্য একটি নির্দিষ্ট ওয়ার্কফ্লো অনুসরণ করুন।
ডিজাইন সংক্রান্ত নির্দেশিকা পড়ুন।
আপনার অ্যাপের কেন অনুমতি প্রয়োজন তা ব্যাখ্যা করুন
requestPermissions() ব্যবহার করলে একটি ডায়ালগ দেখানো হয় যা ইঙ্গিত করে যে আপনার অ্যাপ কোন কোন অনুমতি ব্যবহার করতে চায়, কিন্তু কেন চায় তা ব্যাখ্যা করে না, যা ব্যবহারকারীর কাছে বিভ্রান্তিকর হতে পারে।
এই ডায়ালগ কখন ও কীভাবে দেখাতে হবে সেই সম্পর্কে আরও তথ্য ও সাজেশন পেতে, ডিজাইন সংক্রান্ত নির্দেশিকা পড়ুন।
অনুমতি প্রত্যাখ্যান করা ম্যানেজ করুন
ব্যবহারকারী কোনও অনুমতি না দেওয়ার সিদ্ধান্ত নেওয়ার আগে ও পরে, এর ফলে কী হতে পারে তা বুঝতে আপনার অ্যাপকে সাহায্য করতে হবে।
ডিজাইন সংক্রান্ত নির্দেশিকা পড়ুন।