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

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

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

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

অবস্থানের অনুমতির অনুরোধ করতে, সমস্ত রানটাইম অনুমতির জন্য সর্বোত্তম অনুশীলনগুলি অনুসরণ করুন।

লোকেশন অ্যাক্সেসের ধরণ

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

অগ্রভাগের অবস্থান

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

  • একটি নেভিগেশন অ্যাপের মধ্যে, একটি বৈশিষ্ট্য ব্যবহারকারীদের পালাক্রমে দিকনির্দেশনা পেতে দেয়।
  • একটি মেসেজিং অ্যাপের মধ্যে, একটি বৈশিষ্ট্য ব্যবহারকারীদের তাদের বর্তমান অবস্থান অন্য ব্যবহারকারীর সাথে ভাগ করে নেওয়ার অনুমতি দেয়।

যদি আপনার অ্যাপের কোনও বৈশিষ্ট্য নিম্নলিখিত পরিস্থিতিতে ডিভাইসের বর্তমান অবস্থান অ্যাক্সেস করে, তাহলে সিস্টেমটি আপনার অ্যাপটিকে ফোরগ্রাউন্ড লোকেশন ব্যবহার করছে বলে বিবেচনা করে:

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

    অতিরিক্তভাবে, আপনাকে একটি ফোরগ্রাউন্ড পরিষেবার ধরণ location করতে হবে, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে। অ্যান্ড্রয়েড 10 (API স্তর 29) এবং উচ্চতর সংস্করণে, আপনাকে অবশ্যই এই ফোরগ্রাউন্ড পরিষেবার ধরণ ঘোষণা করতে হবে।

    <!-- 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>

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

যদি অ্যাপের মধ্যে থাকা কোনও বৈশিষ্ট্য ক্রমাগত অন্য ব্যবহারকারীদের সাথে অবস্থান ভাগ করে নেয় বা জিওফেন্সিং 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>

সঠিকতা

Android supports the following levels of location accuracy:

আনুমানিক
ডিভাইসের অবস্থানের একটি অনুমান প্রদান করে। যদি এই অবস্থানের অনুমান LocationManagerService বা FusedLocationProvider থেকে করা হয়, তাহলে এই অনুমানটি প্রায় 3 বর্গ কিলোমিটার (প্রায় 1.2 বর্গ মাইল) এর মধ্যে সঠিক। আপনি যখন ACCESS_COARSE_LOCATION অনুমতি ঘোষণা করেন কিন্তু ACCESS_FINE_LOCATION অনুমতি ঘোষণা করেন না, তখন আপনার অ্যাপটি এই স্তরের নির্ভুলতার অবস্থানগুলি গ্রহণ করতে পারে।
সুনির্দিষ্ট
ডিভাইসের অবস্থানের একটি অনুমান প্রদান করে যা যথাসম্ভব নির্ভুল। যদি অবস্থানের অনুমান LocationManagerService বা FusedLocationProvider থেকে করা হয়, তাহলে এই অনুমান সাধারণত প্রায় 50 মিটার (160 ফুট) এর মধ্যে থাকে এবং কখনও কখনও কয়েক মিটার (10 ফুট) বা তার চেয়েও ভালোর মধ্যেও নির্ভুল হয়। আপনি যখন ACCESS_FINE_LOCATION অনুমতি ঘোষণা করেন তখন আপনার অ্যাপটি এই স্তরের নির্ভুলতার অবস্থানগুলি গ্রহণ করতে পারে।

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

ব্যবহারকারী যখন কেবল আনুমানিক অবস্থান অ্যাক্সেস মঞ্জুর করেন তখনও আপনার অ্যাপটি কাজ করবে। যদি আপনার অ্যাপের কোনও বৈশিষ্ট্যের জন্য ACCESS_FINE_LOCATION অনুমতি ব্যবহার করে সুনির্দিষ্ট অবস্থান অ্যাক্সেসের প্রয়োজন হয়, তাহলে আপনি ব্যবহারকারীকে আপনার অ্যাপটিকে সুনির্দিষ্ট অবস্থান অ্যাক্সেস করার অনুমতি দিতে বলতে পারেন।

ব্যাকগ্রাউন্ড লোকেশন অনুদানের অনুস্মারক

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

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

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

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

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

কোডল্যাব

ভিডিও

নমুনা