ব্যাকগ্রাউন্ড লোকেশন ব্যবহার সংক্রান্ত পেশাদার পদ্ধতি

এই পৃষ্ঠায় ব্যাকগ্রাউন্ড লোকেশন ব্যবহারের অনুমতি চাওয়া ও ম্যানেজ করার পেশাদার পদ্ধতি সম্পর্কে ব্যাখ্যা করা হয়েছে।

"সব সময় অনুমতি দিন" লোকেশন সংক্রান্ত অনুমতির অনুরোধ করুন

Android 14 থেকে শুরু করে, ব্যবহারকারীর লোকেশন অ্যাক্সেস করার জন্য অ্যাপের কাছে অবশ্যই ACCESS_BACKGROUND_LOCATION অনুমতি থাকতে হবে। Navigation SDK-এর ম্যানিফেস্ট ফাইলে এই অনুমতি অন্তর্ভুক্ত থাকে, তাই আপনাকে স্পষ্টভাবে এর জন্য অনুরোধ করতে হবে না (অন্য কোনও উদ্দেশ্যে প্রয়োজন না হলে), কারণ Gradle ম্যানিফেস্ট মার্জার নিশ্চিত করবে যে এটি অ্যাপের ম্যানিফেস্টের সাথে মার্জ করা হয়েছে।

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

অ্যাপ ব্যাকগ্রাউন্ডে চলার সময় অনুমতি দিলে কীভাবে লোকেশন অ্যাকুরেসি এবং নেভিগেশন অভিজ্ঞতা উন্নত হবে তা প্রম্পটে ব্যবহারকারীকে ব্যাখ্যা করতে হবে।

নমুনা অনুমতি
ডায়ালগ

লোকেশন অ্যাক্সেসের জন্য ব্যবহারকারীদের প্রম্পট করার ব্যাপারে আরও তথ্যের জন্য, Android ডেভেলপার ডকুমেন্টেশনে লোকেশন অনুমতির জন্য অনুরোধ করুন | সেন্সর এবং লোকেশন | Android ডেভেলপার দেখুন।

নেভিগেশন বিজ্ঞপ্তি সঠিকভাবে মুছে ফেলা হয়েছে কিনা তা নিশ্চিত করুন

আপনার অ্যাপ যাতে বিজ্ঞপ্তি আর প্রয়োজন না থাকার পরেও তা চালু না রাখে, তা নিশ্চিত করতে, নিশ্চিত করুন যে আপনি নিম্নলিখিত ক্লিনআপ ধাপগুলি পালন করছেন:

  • startGuidance() ইনভোক করার পরে, stopGuidance() অথবা clearDestination() ইনভোক করতে ভুলবেন না।
  • ArrivalListener রেজিস্টার করার পরে, এটি আনরেজিস্টার করতে ভুলবেন না।
  • RoadSnappedLocationProvider রেজিস্টার করার পরে, এটি আনরেজিস্টার করতে ভুলবেন না।

এইসব ধাপ সম্পূর্ণ করলে, বিজ্ঞপ্তি আর প্রয়োজন না হলে তা যে চালু থাকবে না তা নিশ্চিত করা যায়, যার ফলে ব্যাটারি শেষ হয়ে যাওয়া এবং মেমরি লিক হওয়ার সম্ভাবনা থাকে।

NavigationApi#initForegroundServiceManager পদ্ধতি আবার চালু করার সময়, প্রথমে NavigationApi#clearForegroundServiceManager চালু করুন

আপনার অ্যাপ ForegroundServiceManager ব্যবহার করলে, NavigationApi#initForegroundServiceManagerProvider ইনভোক করার আগে NavigationApi#clearForegroundServiceManager ইনভোক করুন এবং আপনি আগে থেকেই ForegroundServiceManager ইনিশিয়ালাইজ করে থাকলে, NavigationApi#initForegroundServiceManagerMessageAndIntent ইনভোক করুন। ফোরগ্রাউন্ড সার্ভিস ম্যানেজার শুরু করার পরে, বিজ্ঞপ্তি আইডি বা বিজ্ঞপ্তির কন্টেন্ট আপডেট করতে আপনি এটি করতে পারেন।

Android 14-এ চালু করা নতুন বিধিনিষেধ সম্পর্কে

Android 14 (Android U) নতুন বিধিনিষেধ প্রবর্তন করেছে যা ব্যাকগ্রাউন্ডে ব্যবহারকারীর লোকেশন অ্যাক্সেস করা অ্যাপের উপর প্রযোজ্য। এইসব পরিবর্তন প্রশমিত করতে, ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেস আরও ভালোভাবে ম্যানেজ করার জন্য Navigation SDK-এর 5.4.0 ভার্সন আপডেট করা হয়েছে। আপনার অ্যাপ যাতে সবচেয়ে সুনির্দিষ্ট লোকেশন ডেটা অ্যাক্সেস করা চালিয়ে যেতে পারে তা নিশ্চিত করতে, আপনার ইমপ্লিমেন্টেশন আপডেট করার জন্য আমরা সাজেস্ট করি।

Android 14-এ করা পরিবর্তন কীভাবে Navigation SDK-কে প্রভাবিত করে

আপনার অ্যাপে startGuidance() ইনভোক করলে, ফোরগ্রাউন্ড সার্ভিস ধাপে ধাপে নেভিগেশনের জন্য ব্যবহারকারীকে বিজ্ঞপ্তি দেখাতে শুরু করে। রুট আপডেট করতে এবং সঠিক ভিজ্যুয়াল ও অডিও নির্দেশিকা দেখাতে, ব্যবহারকারীর লোকেশন অ্যাক্সেস করার উপর ধাপে ধাপে নেভিগেশন নির্ভর করে। Android 14 থেকে শুরু করে, ব্যাকগ্রাউন্ডে ব্যবহারকারীর সুনির্দিষ্ট লোকেশন অ্যাক্সেস করার জন্য ব্যবহারকারীর অনুমতি প্রয়োজন। ডিফল্ট হিসেবে, কোনও অ্যাপের কাছে ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেস করার জন্য ব্যবহারকারীর অনুমতি না থাকলে এবং লোকেশন আপডেটের জন্য ফোরগ্রাউন্ড পরিষেবা শুরু করার চেষ্টা করলে, সিস্টেম SecurityException থ্রো করে, যার ফলে অ্যাপ ক্র্যাশ করে।

Navigation SDK কীভাবে এই সমস্যার সমাধান করে

ভার্সন ৫.৪.০ থেকে শুরু করে, Navigation SDK অ্যাপে কোনও প্রভাব না ফেলে এই SecurityException ম্যানেজ করে, যার ফলে ব্যাকগ্রাউন্ডে নেভিগেশন চলতে থাকে। এছাড়াও, Navigation SDK-এর AndroidManifest-এ ACCESS_BACKGROUND_LOCATION অনুমতি অন্তর্ভুক্ত থাকে। এইভাবে, আপনার অ্যাপকে নিজে থেকে অনুমতি ঘোষণা করতে হবে না, কারণ Gradle মার্জিং এটি ম্যানেজ করবে। তবে, অ্যাপ ব্যাকগ্রাউন্ডে যাওয়ার আগে ব্যবহারকারীকে কোনও বিজ্ঞপ্তি দেখানো না হলে, লোকেশন আপডেট দেওয়ার জন্য Navigation SDK সিস্টেমের উপর নির্ভর করবে। এইসব সিস্টেম আপডেট ঘন ঘন বা নির্ভুল নাও হতে পারে এবং এর ফলে নেভিগেশনের অভিজ্ঞতা আশানুরূপ নাও হতে পারে। এই কারণে, আমরা সাজেস্ট করি যে আপনিও ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেসের জন্য ব্যবহারকারীদের প্রম্পট করুন।

নেভিগেশনের জন্য লোকেশন অ্যাকুরেসি উন্নত করতে অ্যাপ ডেভেলপাররা কী করতে পারেন

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