এই পৃষ্ঠায় ব্যাকগ্রাউন্ডে অবস্থান ব্যবহারের অনুমতি অনুরোধ ও পরিচালনা করার সর্বোত্তম পদ্ধতি ব্যাখ্যা করা হয়েছে।
"সর্বদা অনুমতি দিন" অবস্থান অনুমতির জন্য অনুরোধ করুন
অ্যান্ড্রয়েড ১৪ থেকে শুরু করে , ব্যবহারকারীর অবস্থান অ্যাক্সেস করার জন্য অ্যাপগুলোর অবশ্যই ACCESS_BACKGROUND_LOCATION পারমিশন থাকতে হবে। নেভিগেশন এসডিকে তার ম্যানিফেস্ট ফাইলে এই পারমিশনটি অন্তর্ভুক্ত করে, তাই (অন্য কোনো উদ্দেশ্যে প্রয়োজন না হলে) আপনাকে এটির জন্য আলাদাভাবে অনুরোধ করার দরকার নেই, কারণ গ্রেডল ম্যানিফেস্ট মার্জার নিশ্চিত করবে যে এটি অ্যাপের ম্যানিফেস্টের সাথে যুক্ত হয়ে গেছে।
তবে, ব্যাকগ্রাউন্ডে লোকেশন অ্যাক্সেস করার জন্য ACCESS_BACKGROUND_LOCATION পারমিশন থাকাই যথেষ্ট নয় এবং আমরা ব্যবহারকারীদের কাছ থেকে "Allow all the time" লোকেশন পারমিশন অনুরোধ করার পরামর্শ দিই। এটি নিশ্চিত করে যে অ্যাপটি ব্যাকগ্রাউন্ডে চলতে এবং নোটিফিকেশন দেখাতে পারে, যা নেভিগেশনের সময় লোকেশনের নির্ভুলতা সর্বাধিক করে তোলে।
অ্যাপটি ব্যাকগ্রাউন্ডে চলার সময় অনুমতি দিলে কীভাবে অবস্থানের নির্ভুলতা বাড়বে এবং ব্যবহারকারীদের নেভিগেশন অভিজ্ঞতা উন্নত হবে, তা প্রম্পটটিতে ব্যবহারকারীদের কাছে ব্যাখ্যা করা উচিত।

ব্যবহারকারীদের কাছে লোকেশন অ্যাক্সেসের অনুমতি চাওয়ার বিষয়ে আরও তথ্যের জন্য, অ্যান্ড্রয়েড ডেভেলপার ডকুমেন্টেশনের “Request location permissions | Sensors and location | Android Developers” অংশটি দেখুন।
ন্যাভিগেশন নোটিফিকেশনগুলির যথাযথ পরিষ্করণ নিশ্চিত করুন
আপনার অ্যাপে অপ্রয়োজনীয় নোটিফিকেশনগুলো যেন চালু না থাকে, তা নিশ্চিত করতে নিম্নলিখিত পরিষ্করণ ধাপগুলো অনুসরণ করুন:
-
startGuidance()কল করার পর, অবশ্যইstopGuidance()অথবাclearDestination()কল করুন। -
ArrivalListenerনিবন্ধন করার পর, অবশ্যই এটিকে অনিবন্ধন করে নেবেন। -
RoadSnappedLocationProviderনিবন্ধন করার পর, এটি অনিবন্ধন করতে ভুলবেন না।
এই ধাপগুলো সম্পন্ন করলে অপ্রয়োজনীয় নোটিফিকেশনগুলো চালু থাকে না, যা ব্যাটারির দ্রুত ক্ষয় এবং মেমরি লিকের কারণ হতে পারে।
NavigationApi#initForegroundServiceManager মেথডগুলো পুনরায় কল করার সময়, প্রথমে NavigationApi#clearForegroundServiceManager কল করুন।
আপনার অ্যাপ যদি ForegroundServiceManager ব্যবহার করে থাকে, তাহলে NavigationApi# NavigationApi#initForegroundServiceManagerProvider NavigationApi#clearForegroundServiceManager কল করুন, এবং যদি আপনি ইতিমধ্যেই ForegroundServiceManager ইনিশিয়ালাইজ করে থাকেন, তাহলে NavigationApi#initForegroundServiceManagerMessageAndIntent কল করুন। ফোরগ্রাউন্ড সার্ভিস ম্যানেজার ইনিশিয়ালাইজ করার পরে নোটিফিকেশন আইডি বা নোটিফিকেশনের বিষয়বস্তু আপডেট করতে আপনি এটি করতে পারেন।
অ্যান্ড্রয়েড ১৪-এ প্রবর্তিত নতুন বিধিনিষেধ সম্পর্কে
অ্যান্ড্রয়েড ১৪ (অ্যান্ড্রয়েড ইউ) ব্যাকগ্রাউন্ডে ব্যবহারকারীর লোকেশন অ্যাক্সেস করার ক্ষেত্রে অ্যাপগুলোর ওপর নতুন বিধিনিষেধ আরোপ করেছে । এই পরিবর্তনগুলোর প্রভাব কমাতে, ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেস আরও ভালোভাবে পরিচালনা করার জন্য নেভিগেশন এসডিকে-কে ৫.৪.০ সংস্করণে আপডেট করা হয়েছে। আমরা আপনাকেও আপনার ইমপ্লিমেন্টেশন আপডেট করার পরামর্শ দিচ্ছি, যাতে আপনার অ্যাপ সবচেয়ে নির্ভুল লোকেশন ডেটা অ্যাক্সেস করতে পারে।
অ্যান্ড্রয়েড ১৪-এর পরিবর্তনগুলো নেভিগেশন এসডিকে-কে কীভাবে প্রভাবিত করে
যখন আপনি আপনার অ্যাপে startGuidance() কল করেন, তখন ফোরগ্রাউন্ড সার্ভিসটি টার্ন-বাই-টার্ন নেভিগেশনের জন্য ব্যবহারকারীকে নোটিফিকেশন দেখানো শুরু করে। রুট আপডেট করতে এবং সঠিক ভিজ্যুয়াল ও অডিও নির্দেশনা দেখানোর জন্য টার্ন-বাই-টার্ন নেভিগেশন ব্যবহারকারীর লোকেশন অ্যাক্সেস করার ক্ষমতার উপর নির্ভরশীল। অ্যান্ড্রয়েড ১৪ থেকে, ব্যাকগ্রাউন্ডে ব্যবহারকারীর সঠিক লোকেশন অ্যাক্সেস করার জন্য ব্যবহারকারীর অনুমতির প্রয়োজন হয়। ডিফল্টভাবে, যদি কোনো অ্যাপের কাছে ব্যাকগ্রাউন্ডে লোকেশন অ্যাক্সেসের জন্য ব্যবহারকারীর অনুমতি না থাকে এবং লোকেশন আপডেটের জন্য একটি ফোরগ্রাউন্ড সার্ভিস চালু করার চেষ্টা করে, তাহলে সিস্টেম একটি SecurityException থ্রো করে, যার ফলে অ্যাপটি ক্র্যাশ করে।
নেভিগেশন এসডিকে কীভাবে এই সমস্যাটি সমাধান করে
সংস্করণ 5.4.0 থেকে শুরু করে, নেভিগেশন SDK এই SecurityException অ্যাপকে প্রভাবিত না করেই পরিচালনা করে, যার ফলে নেভিগেশন ব্যাকগ্রাউন্ডে চলতে পারে। এছাড়াও, নেভিগেশন SDK তার AndroidManifest এ ACCESS_BACKGROUND_LOCATION পারমিশনটি অন্তর্ভুক্ত করে। এইভাবে, আপনার অ্যাপকে নিজে থেকে পারমিশনটি ঘোষণা করার প্রয়োজন হয় না, কারণ Gradle মার্জিং এটি পরিচালনা করবে। তবে, অ্যাপটি ব্যাকগ্রাউন্ডে যাওয়ার আগে যদি ব্যবহারকারীকে কোনো নোটিফিকেশন দেখানো না হয়, তাহলে নেভিগেশন SDK লোকেশন আপডেটের জন্য সিস্টেমের উপর নির্ভর করবে। এই সিস্টেম আপডেটগুলো ঘন ঘন বা সুনির্দিষ্ট নাও হতে পারে এবং এর ফলে নেভিগেশনের অভিজ্ঞতা সর্বোত্তম নাও হতে পারে। এই কারণে, আমরা সুপারিশ করি যে আপনি ব্যবহারকারীদের কাছে ব্যাকগ্রাউন্ড লোকেশন অ্যাক্সেসের জন্য অনুরোধও করুন।
নেভিগেশনের জন্য অবস্থানের নির্ভুলতা উন্নত করতে অ্যাপ ডেভেলপাররা কী করতে পারেন
আপনার অ্যাপ আপডেট করে ব্যবহারকারীদের কাছে ব্যাকগ্রাউন্ডে লোকেশন অ্যাক্সেসের জন্য অনুরোধ জানানোর মাধ্যমে আপনি নেভিগেশন SDK দ্বারা ব্যবহৃত লোকেশন সিগন্যালের নির্ভুলতা উন্নত করতে পারেন। আরও তথ্যের জন্য, "সবসময় অনুমতি দিন" লোকেশন পারমিশনের অনুরোধ দেখুন।