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