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

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

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

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

অবস্থান অ্যাক্সেসের ধরন

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

ফোরগ্রাউন্ড অবস্থান

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

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

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

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

    অতিরিক্তভাবে, নিম্নলিখিত কোড স্নিপেটে দেখানো হিসাবে আপনি একটি ফোরগ্রাউন্ড পরিষেবা প্রকারের location ঘোষণা করার পরামর্শ দেওয়া হচ্ছে৷ Android 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 অ্যাপের মধ্যে, একটি বৈশিষ্ট্য ব্যবহারকারীদের তাদের হোম ডিভাইসগুলিকে কনফিগার করার অনুমতি দেয় যাতে ব্যবহারকারী যখন তাদের বাড়ি ছেড়ে যায় তখন তারা বন্ধ করে দেয় এবং ব্যবহারকারী যখন বাড়িতে ফিরে আসে তখন আবার চালু করে।

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

Android 10 (API স্তর 29) এবং উচ্চতর, রানটাইমে ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেসের অনুরোধ করার জন্য আপনাকে অবশ্যই আপনার অ্যাপের ম্যানিফেস্টে 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 নিম্নলিখিত স্তরের অবস্থান নির্ভুলতা সমর্থন করে:

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

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

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

রানটাইমে অবস্থান অ্যাক্সেস অনুরোধ

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

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

ব্যবহারকারী শেয়ার অবস্থান বোতাম নির্বাচন করার পরে, সিস্টেমের অবস্থান অনুমতি ডায়ালগ প্রদর্শিত হবে
চিত্র 1. অবস্থান ভাগ করে নেওয়ার বৈশিষ্ট্য যার জন্য ফোরগ্রাউন্ড অবস্থান অ্যাক্সেস প্রয়োজন৷ যদি ব্যবহারকারী শুধুমাত্র অ্যাপটি ব্যবহার করার সময় Allow নির্বাচন করেন তাহলে বৈশিষ্ট্যটি সক্ষম হয়।

ব্যবহারকারী শুধুমাত্র আনুমানিক অবস্থান মঞ্জুর করতে পারেন

Android 12 (API লেভেল 31) বা তার উপরে, ব্যবহারকারীরা অনুরোধ করতে পারে যে আপনার অ্যাপটি শুধুমাত্র আনুমানিক অবস্থানের তথ্য পুনরুদ্ধার করবে, এমনকি যখন আপনার অ্যাপ ACCESS_FINE_LOCATION রানটাইম অনুমতির অনুরোধ করে।

এই সম্ভাব্য ব্যবহারকারীর আচরণ পরিচালনা করতে, নিজে থেকে ACCESS_FINE_LOCATION অনুমতির অনুরোধ করবেন না৷ পরিবর্তে, একটি একক রানটাইম অনুরোধে ACCESS_FINE_LOCATION অনুমতি এবং ACCESS_COARSE_LOCATION উভয় অনুমতির জন্য অনুরোধ করুন৷ আপনি যদি শুধুমাত্র ACCESS_FINE_LOCATION জন্য অনুরোধ করার চেষ্টা করেন, তাহলে সিস্টেম Android 12-এর কিছু রিলিজের অনুরোধ উপেক্ষা করে। যদি আপনার অ্যাপটি Android 12 বা উচ্চতরকে লক্ষ্য করে, তাহলে সিস্টেম Logcat- এ নিম্নলিখিত ত্রুটি বার্তাটি লগ করবে:

ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION.

যখন আপনার অ্যাপ ACCESS_FINE_LOCATION এবং ACCESS_COARSE_LOCATION উভয়ের জন্য অনুরোধ করে, তখন সিস্টেম অনুমতি ডায়ালগে ব্যবহারকারীর জন্য নিম্নলিখিত বিকল্পগুলি অন্তর্ভুক্ত থাকে:

  • সুনির্দিষ্ট : আপনার অ্যাপকে সুনির্দিষ্ট অবস্থানের তথ্য পেতে অনুমতি দেয়।
  • আনুমানিক : আপনার অ্যাপকে শুধুমাত্র আনুমানিক অবস্থানের তথ্য পেতে অনুমতি দেয়।

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

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

ডায়ালগটি শুধুমাত্র আনুমানিক অবস্থানকে নির্দেশ করে এবং এতে 3টি বোতাম রয়েছে, একটি অন্যটির উপরে
চিত্র 2. সিস্টেম অনুমতি ডায়ালগ যা প্রদর্শিত হয় যখন আপনার অ্যাপ শুধুমাত্র ACCESS_COARSE_LOCATION অনুরোধ করে।
ডায়ালগে 2 সেট বিকল্প রয়েছে, একটির উপরে অন্যটি
চিত্র 3. সিস্টেম অনুমতি ডায়ালগ যেটি প্রদর্শিত হয় যখন আপনার অ্যাপ ACCESS_FINE_LOCATION এবং ACCESS_COARSE_LOCATION উভয়ের জন্য একটি একক রানটাইম অনুরোধে অনুরোধ করে।

ব্যবহারকারীর পছন্দ অনুমতি অনুদান প্রভাবিত করে

নিম্নলিখিত সারণীটি অনুমতিগুলি দেখায় যা সিস্টেম আপনার অ্যাপকে অনুমোদন করে, ব্যবহারকারীরা অনুমতি রানটাইম ডায়ালগে যে বিকল্পগুলি বেছে নেয় তার উপর ভিত্তি করে:

সুনির্দিষ্ট আনুমানিক
অ্যাপটি ব্যবহার করার সময় ACCESS_FINE_LOCATION এবং
ACCESS_COARSE_LOCATION
ACCESS_COARSE_LOCATION
শুধু এই সময় ACCESS_FINE_LOCATION এবং
ACCESS_COARSE_LOCATION
ACCESS_COARSE_LOCATION
অস্বীকার করুন কোন অবস্থান অনুমতি নেই কোন অবস্থান অনুমতি নেই

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

কোটলিন

val locationPermissionRequest = registerForActivityResult(
        ActivityResultContracts.RequestMultiplePermissions()
    ) { permissions ->
        when {
            permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
                // Precise location access granted.
            }
            permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
                // Only approximate location access granted.
            } else -> {
                // No location access granted.
            }
        }
    }

// ...

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(arrayOf(
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.ACCESS_COARSE_LOCATION))

জাভা

ActivityResultLauncher<String[]> locationPermissionRequest =
    registerForActivityResult(new ActivityResultContracts
        .RequestMultiplePermissions(), result -> {
            Boolean fineLocationGranted = result.getOrDefault(
                    Manifest.permission.ACCESS_FINE_LOCATION, false);
            Boolean coarseLocationGranted = result.getOrDefault(
                    Manifest.permission.ACCESS_COARSE_LOCATION,false);
            if (fineLocationGranted != null && fineLocationGranted) {
                // Precise location access granted.
            } else if (coarseLocationGranted != null && coarseLocationGranted) {
                // Only approximate location access granted.
            } else {
                // No location access granted.
            }
        }
    );

// ...

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(new String[] {
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.ACCESS_COARSE_LOCATION
});

সুনির্দিষ্ট অবস্থানে আপগ্রেড করার অনুরোধ করুন

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

ব্যবহারকারী আপনার অ্যাপের অবস্থান অ্যাক্সেসকে আনুমানিক থেকে সুনির্দিষ্ট পর্যন্ত আপগ্রেড করার অনুরোধ করতে, নিম্নলিখিতগুলি করুন:

  1. প্রয়োজনে, কেন আপনার অ্যাপটির অনুমতি প্রয়োজন তা ব্যাখ্যা করুন
  2. আবার একসাথে ACCESS_FINE_LOCATION এবং ACCESS_COARSE_LOCATION অনুমতির জন্য অনুরোধ করুন৷ যেহেতু ব্যবহারকারী ইতিমধ্যেই সিস্টেমটিকে আপনার অ্যাপে আনুমানিক অবস্থান দেওয়ার অনুমতি দিয়েছে, তাই চিত্র 4 এবং চিত্র 5 -এ দেখানো হিসাবে এইবার সিস্টেম ডায়ালগটি আলাদা:
ডায়ালগে 'সুনির্দিষ্ট অবস্থানে পরিবর্তন করুন', 'শুধু এই সময়', এবং 'অস্বীকার করুন' বিকল্প রয়েছে।
চিত্র 4. ব্যবহারকারী পূর্বে আনুমানিক এবং অ্যাপটি ব্যবহার করার সময় নির্বাচন করেছেন ( চিত্র 3 থেকে সংলাপে)।
ডায়ালগে 'শুধু এই সময়' এবং 'অস্বীকার করুন' বিকল্প রয়েছে।
চিত্র 5. ব্যবহারকারী পূর্বে আনুমানিক এবং শুধুমাত্র এই সময় নির্বাচন করেছেন ( চিত্র 3 থেকে সংলাপে)।

প্রাথমিকভাবে শুধুমাত্র অগ্রভাগের অবস্থানের জন্য অনুরোধ করুন

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

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

ফোরগ্রাউন্ড লোকেশন অ্যাক্সেস সক্ষম করে এমন বোতামটি পটভূমির অবস্থান সক্ষম করে এমন বোতাম থেকে অর্ধেক স্ক্রীন দৈর্ঘ্য দূরে অবস্থিত
চিত্র 6. উভয় বৈশিষ্ট্যের জন্য অবস্থান অ্যাক্সেসের প্রয়োজন, কিন্তু শুধুমাত্র "আশেপাশের বৈশিষ্ট্যগুলি সুপারিশ করুন" বৈশিষ্ট্যটির জন্য ব্যাকগ্রাউন্ড অবস্থান অ্যাক্সেস প্রয়োজন৷

ক্রমবর্ধমান অনুরোধগুলি সম্পাদন করার প্রক্রিয়াটি নিম্নরূপ:

  1. প্রথমে, আপনার অ্যাপটিকে এমন বৈশিষ্ট্যগুলির জন্য ব্যবহারকারীদের গাইড করা উচিত যেগুলির জন্য ফোরগ্রাউন্ড অবস্থান অ্যাক্সেসের প্রয়োজন, যেমন চিত্র 1-এ "স্থান ভাগ করুন" বৈশিষ্ট্য বা চিত্র 2-এ "বর্তমান অবস্থান দেখান" বৈশিষ্ট্য৷

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

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

প্রয়োজনে ব্যাকগ্রাউন্ড লোকেশনের অনুরোধ করুন

চিত্র 7. সেটিংস পৃষ্ঠায় সব সময় অনুমতি দিন নামক একটি বিকল্প রয়েছে, যা ব্যাকগ্রাউন্ড অবস্থান অ্যাক্সেস মঞ্জুর করে।

অনুমতি ডায়ালগের বিষয়বস্তু টার্গেট SDK সংস্করণের উপর নির্ভর করে

যখন আপনার অ্যাপের কোনো বৈশিষ্ট্য Android 10 (API লেভেল 29) চালিত কোনো ডিভাইসে ব্যাকগ্রাউন্ড লোকেশনের জন্য অনুরোধ করে, তখন সিস্টেম পারমিশন ডায়ালগে Allow all time নামে একটি বিকল্প থাকে। ব্যবহারকারী এই বিকল্পটি নির্বাচন করলে, আপনার অ্যাপের বৈশিষ্ট্যটি ব্যাকগ্রাউন্ড অবস্থান অ্যাক্সেস লাভ করে।

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

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

অ্যাপ্লিকেশান Android 11 বা উচ্চতরকে লক্ষ্য করে

যদি আপনার অ্যাপটিকে ACCESS_BACKGROUND_LOCATION অনুমতি না দেওয়া হয়, এবং shouldShowRequestPermissionRationale() true দেখায়, তাহলে নিম্নলিখিতগুলি অন্তর্ভুক্ত করে এমন ব্যবহারকারীদের একটি শিক্ষামূলক UI দেখান:

  • কেন আপনার অ্যাপের বৈশিষ্ট্যটির ব্যাকগ্রাউন্ড অবস্থানে অ্যাক্সেস প্রয়োজন তার একটি স্পষ্ট ব্যাখ্যা।
  • সেটিংস বিকল্পের ব্যবহারকারীর-দৃশ্যমান লেবেল যা পটভূমির অবস্থান মঞ্জুর করে (উদাহরণস্বরূপ, চিত্র 7-এ সব সময় অনুমতি দিন )। আপনি এই লেবেল পেতে getBackgroundPermissionOptionLabel() কল করতে পারেন। এই পদ্ধতির রিটার্ন মান ব্যবহারকারীর ডিভাইস ভাষা পছন্দ স্থানীয়করণ করা হয়.
  • ব্যবহারকারীদের অনুমতি প্রত্যাখ্যান করার জন্য একটি বিকল্প। ব্যবহারকারীরা ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেস প্রত্যাখ্যান করলে, তারা আপনার অ্যাপ ব্যবহার চালিয়ে যেতে সক্ষম হবেন।
ব্যবহারকারীরা একটি অ্যাপের অবস্থান সেটিংস পরিবর্তন করতে সিস্টেম বিজ্ঞপ্তিতে ট্যাপ করতে পারেন
চিত্র 8. বিজ্ঞপ্তি ব্যবহারকারীকে মনে করিয়ে দেয় যে তারা একটি অ্যাপে ব্যাকগ্রাউন্ড অবস্থান অ্যাক্সেস মঞ্জুর করেছে।

অ্যাপটি লক্ষ্য করে Android 10 বা তার চেয়ে কম

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

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

ব্যবহারকারী পটভূমি অবস্থান নির্ভুলতা প্রভাবিত করতে পারেন

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

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

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

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

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

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

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

কোডল্যাব

ভিডিও

নমুনা

,

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

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

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

অবস্থান অ্যাক্সেসের ধরন

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

ফোরগ্রাউন্ড অবস্থান

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

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

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

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

    অতিরিক্তভাবে, নিম্নলিখিত কোড স্নিপেটে দেখানো হিসাবে আপনি একটি ফোরগ্রাউন্ড পরিষেবা প্রকারের location ঘোষণা করার পরামর্শ দেওয়া হচ্ছে৷ Android 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 অ্যাপের মধ্যে, একটি বৈশিষ্ট্য ব্যবহারকারীদের তাদের হোম ডিভাইসগুলিকে কনফিগার করার অনুমতি দেয় যাতে ব্যবহারকারী যখন তাদের বাড়ি ছেড়ে যায় তখন তারা বন্ধ করে দেয় এবং ব্যবহারকারী যখন বাড়িতে ফিরে আসে তখন আবার চালু করে।

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

Android 10 (API স্তর 29) এবং উচ্চতর, রানটাইমে ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেসের অনুরোধ করার জন্য আপনাকে অবশ্যই আপনার অ্যাপের ম্যানিফেস্টে 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 নিম্নলিখিত স্তরের অবস্থান নির্ভুলতা সমর্থন করে:

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

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

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

রানটাইমে অবস্থান অ্যাক্সেস অনুরোধ

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

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

ব্যবহারকারী শেয়ার অবস্থান বোতাম নির্বাচন করার পরে, সিস্টেমের অবস্থান অনুমতি ডায়ালগ প্রদর্শিত হবে
চিত্র 1. অবস্থান ভাগ করে নেওয়ার বৈশিষ্ট্য যার জন্য ফোরগ্রাউন্ড অবস্থান অ্যাক্সেস প্রয়োজন৷ যদি ব্যবহারকারী শুধুমাত্র অ্যাপটি ব্যবহার করার সময় Allow নির্বাচন করেন তাহলে বৈশিষ্ট্যটি সক্ষম হয়।

ব্যবহারকারী শুধুমাত্র আনুমানিক অবস্থান মঞ্জুর করতে পারেন

Android 12 (API লেভেল 31) বা তার উপরে, ব্যবহারকারীরা অনুরোধ করতে পারে যে আপনার অ্যাপটি শুধুমাত্র আনুমানিক অবস্থানের তথ্য পুনরুদ্ধার করবে, এমনকি যখন আপনার অ্যাপ ACCESS_FINE_LOCATION রানটাইম অনুমতির অনুরোধ করে।

এই সম্ভাব্য ব্যবহারকারীর আচরণ পরিচালনা করতে, নিজে থেকে ACCESS_FINE_LOCATION অনুমতির অনুরোধ করবেন না৷ পরিবর্তে, একটি একক রানটাইম অনুরোধে ACCESS_FINE_LOCATION অনুমতি এবং ACCESS_COARSE_LOCATION উভয় অনুমতির জন্য অনুরোধ করুন৷ আপনি যদি শুধুমাত্র ACCESS_FINE_LOCATION জন্য অনুরোধ করার চেষ্টা করেন, তাহলে সিস্টেম Android 12-এর কিছু রিলিজের অনুরোধ উপেক্ষা করে। যদি আপনার অ্যাপটি Android 12 বা উচ্চতরকে লক্ষ্য করে, তাহলে সিস্টেম Logcat- এ নিম্নলিখিত ত্রুটি বার্তাটি লগ করবে:

ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION.

যখন আপনার অ্যাপ ACCESS_FINE_LOCATION এবং ACCESS_COARSE_LOCATION উভয়ের জন্য অনুরোধ করে, তখন সিস্টেম অনুমতি ডায়ালগে ব্যবহারকারীর জন্য নিম্নলিখিত বিকল্পগুলি অন্তর্ভুক্ত থাকে:

  • সুনির্দিষ্ট : আপনার অ্যাপকে সুনির্দিষ্ট অবস্থানের তথ্য পেতে অনুমতি দেয়।
  • আনুমানিক : আপনার অ্যাপকে শুধুমাত্র আনুমানিক অবস্থানের তথ্য পেতে অনুমতি দেয়।

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

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

ডায়ালগটি শুধুমাত্র আনুমানিক অবস্থানকে নির্দেশ করে এবং এতে 3টি বোতাম রয়েছে, একটি অন্যটির উপরে
চিত্র 2. সিস্টেম অনুমতি ডায়ালগ যা প্রদর্শিত হয় যখন আপনার অ্যাপ শুধুমাত্র ACCESS_COARSE_LOCATION অনুরোধ করে।
ডায়ালগে 2 সেট বিকল্প রয়েছে, একটির উপরে অন্যটি
চিত্র 3. সিস্টেম অনুমতি ডায়ালগ যেটি প্রদর্শিত হয় যখন আপনার অ্যাপ ACCESS_FINE_LOCATION এবং ACCESS_COARSE_LOCATION উভয়ের জন্য একটি একক রানটাইম অনুরোধে অনুরোধ করে।

ব্যবহারকারীর পছন্দ অনুমতি অনুদান প্রভাবিত করে

নিম্নলিখিত সারণীটি অনুমতিগুলি দেখায় যা সিস্টেম আপনার অ্যাপকে অনুমোদন করে, ব্যবহারকারীরা অনুমতি রানটাইম ডায়ালগে যে বিকল্পগুলি বেছে নেয় তার উপর ভিত্তি করে:

সুনির্দিষ্ট আনুমানিক
অ্যাপটি ব্যবহার করার সময় ACCESS_FINE_LOCATION এবং
ACCESS_COARSE_LOCATION
ACCESS_COARSE_LOCATION
শুধু এই সময় ACCESS_FINE_LOCATION এবং
ACCESS_COARSE_LOCATION
ACCESS_COARSE_LOCATION
অস্বীকার করুন কোন অবস্থান অনুমতি নেই কোন অবস্থান অনুমতি নেই

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

কোটলিন

val locationPermissionRequest = registerForActivityResult(
        ActivityResultContracts.RequestMultiplePermissions()
    ) { permissions ->
        when {
            permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
                // Precise location access granted.
            }
            permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
                // Only approximate location access granted.
            } else -> {
                // No location access granted.
            }
        }
    }

// ...

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(arrayOf(
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.ACCESS_COARSE_LOCATION))

জাভা

ActivityResultLauncher<String[]> locationPermissionRequest =
    registerForActivityResult(new ActivityResultContracts
        .RequestMultiplePermissions(), result -> {
            Boolean fineLocationGranted = result.getOrDefault(
                    Manifest.permission.ACCESS_FINE_LOCATION, false);
            Boolean coarseLocationGranted = result.getOrDefault(
                    Manifest.permission.ACCESS_COARSE_LOCATION,false);
            if (fineLocationGranted != null && fineLocationGranted) {
                // Precise location access granted.
            } else if (coarseLocationGranted != null && coarseLocationGranted) {
                // Only approximate location access granted.
            } else {
                // No location access granted.
            }
        }
    );

// ...

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(new String[] {
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.ACCESS_COARSE_LOCATION
});

সুনির্দিষ্ট অবস্থানে আপগ্রেড করার অনুরোধ করুন

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

ব্যবহারকারী আপনার অ্যাপের অবস্থান অ্যাক্সেসকে আনুমানিক থেকে সুনির্দিষ্ট পর্যন্ত আপগ্রেড করার অনুরোধ করতে, নিম্নলিখিতগুলি করুন:

  1. প্রয়োজনে, কেন আপনার অ্যাপটির অনুমতি প্রয়োজন তা ব্যাখ্যা করুন
  2. আবার একসাথে ACCESS_FINE_LOCATION এবং ACCESS_COARSE_LOCATION অনুমতির জন্য অনুরোধ করুন৷ যেহেতু ব্যবহারকারী ইতিমধ্যেই সিস্টেমটিকে আপনার অ্যাপে আনুমানিক অবস্থান দেওয়ার অনুমতি দিয়েছে, তাই চিত্র 4 এবং চিত্র 5 -এ দেখানো হিসাবে এইবার সিস্টেম ডায়ালগটি আলাদা:
ডায়ালগে 'সুনির্দিষ্ট অবস্থানে পরিবর্তন করুন', 'শুধু এই সময়', এবং 'অস্বীকার করুন' বিকল্প রয়েছে।
চিত্র 4. ব্যবহারকারী পূর্বে আনুমানিক এবং অ্যাপটি ব্যবহার করার সময় নির্বাচন করেছেন ( চিত্র 3 থেকে সংলাপে)।
ডায়ালগে 'শুধু এই সময়' এবং 'অস্বীকার করুন' বিকল্প রয়েছে।
চিত্র 5. ব্যবহারকারী পূর্বে আনুমানিক এবং শুধুমাত্র এই সময় নির্বাচন করেছেন ( চিত্র 3 থেকে সংলাপে)।

প্রাথমিকভাবে শুধুমাত্র অগ্রভাগের অবস্থানের জন্য অনুরোধ করুন

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

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

ফোরগ্রাউন্ড লোকেশন অ্যাক্সেস সক্ষম করে এমন বোতামটি পটভূমির অবস্থান সক্ষম করে এমন বোতাম থেকে অর্ধেক স্ক্রীন দৈর্ঘ্য দূরে অবস্থিত
চিত্র 6. উভয় বৈশিষ্ট্যের জন্য অবস্থান অ্যাক্সেসের প্রয়োজন, কিন্তু শুধুমাত্র "আশেপাশের বৈশিষ্ট্যগুলি সুপারিশ করুন" বৈশিষ্ট্যটির জন্য ব্যাকগ্রাউন্ড অবস্থান অ্যাক্সেস প্রয়োজন৷

ক্রমবর্ধমান অনুরোধগুলি সম্পাদন করার প্রক্রিয়াটি নিম্নরূপ:

  1. প্রথমে, আপনার অ্যাপটিকে এমন বৈশিষ্ট্যগুলির জন্য ব্যবহারকারীদের গাইড করা উচিত যেগুলির জন্য ফোরগ্রাউন্ড অবস্থান অ্যাক্সেসের প্রয়োজন, যেমন চিত্র 1-এ "স্থান ভাগ করুন" বৈশিষ্ট্য বা চিত্র 2-এ "বর্তমান অবস্থান দেখান" বৈশিষ্ট্য৷

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

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

প্রয়োজনে ব্যাকগ্রাউন্ড লোকেশনের অনুরোধ করুন

চিত্র 7. সেটিংস পৃষ্ঠায় সব সময় অনুমতি দিন নামক একটি বিকল্প রয়েছে, যা ব্যাকগ্রাউন্ড অবস্থান অ্যাক্সেস মঞ্জুর করে।

অনুমতি ডায়ালগের বিষয়বস্তু টার্গেট SDK সংস্করণের উপর নির্ভর করে

যখন আপনার অ্যাপের কোনো বৈশিষ্ট্য Android 10 (API লেভেল 29) চালিত কোনো ডিভাইসে ব্যাকগ্রাউন্ড লোকেশনের জন্য অনুরোধ করে, তখন সিস্টেম পারমিশন ডায়ালগে Allow all time নামে একটি বিকল্প থাকে। ব্যবহারকারী এই বিকল্পটি নির্বাচন করলে, আপনার অ্যাপের বৈশিষ্ট্যটি ব্যাকগ্রাউন্ড অবস্থান অ্যাক্সেস লাভ করে।

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

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

অ্যাপ্লিকেশান Android 11 বা উচ্চতরকে লক্ষ্য করে

যদি আপনার অ্যাপটিকে ACCESS_BACKGROUND_LOCATION অনুমতি না দেওয়া হয়, এবং shouldShowRequestPermissionRationale() true দেখায়, তাহলে নিম্নলিখিতগুলি অন্তর্ভুক্ত করে এমন ব্যবহারকারীদের একটি শিক্ষামূলক UI দেখান:

  • কেন আপনার অ্যাপের বৈশিষ্ট্যটির ব্যাকগ্রাউন্ড অবস্থানে অ্যাক্সেস প্রয়োজন তার একটি স্পষ্ট ব্যাখ্যা।
  • সেটিংস বিকল্পের ব্যবহারকারীর-দৃশ্যমান লেবেল যা পটভূমির অবস্থান মঞ্জুর করে (উদাহরণস্বরূপ, চিত্র 7-এ সব সময় অনুমতি দিন )। আপনি এই লেবেল পেতে getBackgroundPermissionOptionLabel() কল করতে পারেন। এই পদ্ধতির রিটার্ন মান ব্যবহারকারীর ডিভাইস ভাষা পছন্দ স্থানীয়করণ করা হয়.
  • ব্যবহারকারীদের অনুমতি প্রত্যাখ্যান করার জন্য একটি বিকল্প। ব্যবহারকারীরা ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেস প্রত্যাখ্যান করলে, তারা আপনার অ্যাপ ব্যবহার চালিয়ে যেতে সক্ষম হবেন।
ব্যবহারকারীরা একটি অ্যাপের অবস্থান সেটিংস পরিবর্তন করতে সিস্টেম বিজ্ঞপ্তিতে ট্যাপ করতে পারেন
চিত্র 8. বিজ্ঞপ্তি ব্যবহারকারীকে মনে করিয়ে দেয় যে তারা একটি অ্যাপে ব্যাকগ্রাউন্ড অবস্থান অ্যাক্সেস মঞ্জুর করেছে।

অ্যাপটি লক্ষ্য করে Android 10 বা তার চেয়ে কম

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

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

ব্যবহারকারী পটভূমি অবস্থান নির্ভুলতা প্রভাবিত করতে পারেন

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

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

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

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

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

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

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

কোডল্যাব

ভিডিও

নমুনা