অবস্থান অনুমতি অনুরোধ

ব্যবহারকারীর গোপনীয়তা রক্ষার জন্য, যেসব অ্যাপ অবস্থান পরিষেবা ব্যবহার করে, তাদের অবশ্যই অবস্থানের অনুমতি চাইতে হবে।

একাধিক অনুমতি অবস্থানের সাথে সম্পর্কিত। আপনি কোন অনুমতিগুলো এবং কীভাবে অনুরোধ করবেন, তা আপনার অ্যাপের ব্যবহারের ক্ষেত্রের জন্য প্রয়োজনীয় অবস্থানের উপর নির্ভর করে।

এই পৃষ্ঠায় বিভিন্ন ধরনের অবস্থানের প্রয়োজনীয়তা বর্ণনা করা হয়েছে এবং প্রতিটি ক্ষেত্রে কীভাবে অবস্থানের অনুমতির জন্য অনুরোধ করতে হয়, তা ব্যাখ্যা করা হয়েছে।

অবস্থান সংক্রান্ত অনুমতি অনুরোধ করার জন্য, সকল রানটাইম অনুমতির ক্ষেত্রে প্রযোজ্য সর্বোত্তম পদ্ধতি অনুসরণ করুন।

অবস্থান অ্যাক্সেসের প্রকারভেদ

প্রতিটি অনুমতির নিম্নলিখিত বৈশিষ্ট্যগুলোর সমন্বয় রয়েছে:

সম্মুখভাগের অবস্থান

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

  • একটি নেভিগেশন অ্যাপের মধ্যে থাকা একটি ফিচারের মাধ্যমে ব্যবহারকারীরা ধাপে ধাপে দিকনির্দেশনা পেতে পারেন।
  • একটি মেসেজিং অ্যাপের মধ্যে থাকা একটি ফিচারের মাধ্যমে ব্যবহারকারীরা অন্য ব্যবহারকারীর সাথে তাদের বর্তমান অবস্থান শেয়ার করতে পারেন।

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

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

    এছাড়াও, আপনাকে ' location নামের একটি ফোরগ্রাউন্ড সার্ভিস টাইপ ডিক্লেয়ার করতে হবে, যেমনটি নিচের কোড স্নিপেটে দেখানো হয়েছে। অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) এবং এর পরবর্তী সংস্করণগুলোতে, আপনাকে অবশ্যই এই ফোরগ্রাউন্ড সার্ভিস টাইপটি ডিক্লেয়ার করতে হবে।

    <!-- Recommended for Android 9 (API level 28) and lower. -->
    <!-- Required for Android 10 (API level 29) and higher. -->
    <service
        android:name="MyNavigationService"
        android:foregroundServiceType="location" ... >
        <!-- Any inner elements would go here. -->
    </service>
    

যখন আপনার অ্যাপ ACCESS_COARSE_LOCATION অথবা ACCESS_FINE_LOCATION পারমিশনের জন্য অনুরোধ করে, তখন আপনি ফোরগ্রাউন্ড লোকেশনের প্রয়োজনীয়তা ঘোষণা করেন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

<manifest ... >
  <!-- Always include this permission -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

  <!-- Include only if your app benefits from precise location access. -->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

পটভূমির অবস্থান

অ্যাপটির কোনো ফিচার যদি ক্রমাগত অন্যান্য ব্যবহারকারীদের সাথে লোকেশন শেয়ার করে অথবা জিওফেন্সিং এপিআই (Geofencing API) ব্যবহার করে, তাহলে অ্যাপটির ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেসের প্রয়োজন হয়। এর কয়েকটি উদাহরণ নিচে দেওয়া হলো:

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

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

অ্যান্ড্রয়েড ১০ (এপিআই লেভেল ২৯) এবং এর পরবর্তী সংস্করণগুলোতে, রানটাইমে ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেসের অনুরোধ করার জন্য আপনাকে আপনার অ্যাপের ম্যানিফেস্টে অবশ্যই ACCESS_BACKGROUND_LOCATION পারমিশনটি ঘোষণা করতে হবে। অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলোতে, যখন আপনার অ্যাপ ফোরগ্রাউন্ড লোকেশন অ্যাক্সেস পায়, তখন এটি স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেসও পেয়ে যায়।

<manifest ... >
  <!-- Required only when requesting background location access on
       Android 10 (API level 29) and higher. -->
  <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>

নির্ভুলতা

অ্যান্ড্রয়েড অবস্থানের নির্ভুলতার নিম্নলিখিত স্তরগুলি সমর্থন করে:

আনুমানিক
ডিভাইসের অবস্থানের একটি আনুমানিক ধারণা প্রদান করে। যদি এই আনুমানিক অবস্থানটি LocationManagerService বা FusedLocationProvider থেকে আসে, তবে এর নির্ভুলতা প্রায় ৩ বর্গ কিলোমিটার (প্রায় ১.২ বর্গ মাইল) পর্যন্ত হয়ে থাকে। আপনার অ্যাপ এই নির্ভুলতার স্তরে অবস্থান গ্রহণ করতে পারে, যখন আপনি ACCESS_COARSE_LOCATION পারমিশনটি ঘোষণা করেন কিন্তু ACCESS_FINE_LOCATION পারমিশনটি নয়।
সুনির্দিষ্ট
ডিভাইসের অবস্থানের একটি যথাসম্ভব নির্ভুল আনুমানিক হিসাব প্রদান করে। যদি অবস্থানের আনুমানিক হিসাবটি LocationManagerService বা FusedLocationProvider থেকে আসে, তবে এই হিসাবটি সাধারণত প্রায় ৫০ মিটার (১৬০ ফুট)-এর মধ্যে থাকে এবং কখনও কখনও কয়েক মিটার (১০ ফুট) বা তার চেয়েও বেশি নির্ভুল হয়। আপনি যখন ACCESS_FINE_LOCATION পারমিশনটি ঘোষণা করবেন, তখন আপনার অ্যাপ এই স্তরের নির্ভুলতায় অবস্থান গ্রহণ করতে পারবে।

যদি ব্যবহারকারী আনুমানিক অবস্থানের অনুমতি দেন , তাহলে আপনার অ্যাপ অন্য যে কোনো অবস্থানের অনুমতিই ঘোষণা করুক না কেন, সে শুধু আনুমানিক অবস্থানই অ্যাক্সেস করতে পারবে।

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

পটভূমি অবস্থান অনুদানের অনুস্মারক

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

আপনার অ্যাপের SDK নির্ভরতাগুলিতে অবস্থানের প্রয়োজনীয়তাগুলি পরীক্ষা করুন।

আপনার অ্যাপ এমন কোনো SDK ব্যবহার করে কিনা যা লোকেশন পারমিশনের উপর নির্ভরশীল, বিশেষ করে ACCESS_FINE_LOCATION পারমিশনের উপর, তা যাচাই করুন। এ বিষয়ে আরও জানতে Medium-এ প্রকাশিত "Getting to know the behaviors of your SDK dependencies" ব্লগ পোস্টটি পড়ুন।

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

অ্যান্ড্রয়েডে অবস্থান অনুমতি সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত উপকরণগুলি দেখুন:

কোডল্যাবস

ভিডিও

নমুনা