Android 13 প্ল্যাটফর্মে এমন আচরণগত পরিবর্তন রয়েছে যা আপনার অ্যাপকে প্রভাবিত করতে পারে। নিম্নলিখিত আচরণগত পরিবর্তনগুলি সমস্ত অ্যাপের ক্ষেত্রে প্রযোজ্য যখন তারা Android 13 এ চলে, targetSdkVersion নির্বিশেষে। আপনার অ্যাপটি পরীক্ষা করা উচিত এবং তারপরে প্রযোজ্য ক্ষেত্রে এগুলি সঠিকভাবে সমর্থন করার জন্য প্রয়োজন অনুসারে এটি পরিবর্তন করা উচিত।
শুধুমাত্র Android 13-কে লক্ষ্য করে এমন অ্যাপগুলিকে প্রভাবিত করে এমন আচরণগত পরিবর্তনের তালিকাটিও পর্যালোচনা করতে ভুলবেন না।
কর্মক্ষমতা এবং ব্যাটারি
টাস্ক ম্যানেজার
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) থেকে শুরু করে, ব্যবহারকারীরা নোটিফিকেশন ড্রয়ার থেকে একটি ওয়ার্কফ্লো সম্পূর্ণ করতে পারেন যাতে চলমান ফোরগ্রাউন্ড পরিষেবা রয়েছে এমন অ্যাপগুলি বন্ধ করা যায়, যেমনটি চিত্র ১-এ দেখানো হয়েছে। এই সুবিধাটি টাস্ক ম্যানেজার নামে পরিচিত। অ্যাপগুলিকে অবশ্যই ব্যবহারকারী-প্রবর্তিত এই স্টপিং পরিচালনা করতে সক্ষম হতে হবে।
JobScheduler ব্যবহার করে প্রিফেচ জব হ্যান্ডলিং উন্নত করুন
JobScheduler অ্যাপগুলিকে নির্দিষ্ট কাজগুলিকে "prefetch" কাজ হিসাবে চিহ্নিত করার একটি উপায় প্রদান করে ( JobInfo.Builder.setPrefetch() ব্যবহার করে), যার অর্থ হল ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য পরবর্তী অ্যাপ লঞ্চের কাছাকাছি এবং তার আগে এগুলি চালানো আদর্শ। ঐতিহাসিকভাবে, JobScheduler শুধুমাত্র প্রিফেচ কাজগুলিকে সুযোগসন্ধানীভাবে বিনামূল্যে বা অতিরিক্ত ডেটা ব্যবহার করার জন্য সিগন্যাল ব্যবহার করেছে।
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং তার উচ্চতর সংস্করণে, সিস্টেমটি পরবর্তী সময়ে একটি অ্যাপ কখন চালু হবে তা নির্ধারণ করার চেষ্টা করে এবং প্রিফেচ কাজ চালানোর জন্য সেই অনুমান ব্যবহার করে। পরবর্তী অ্যাপ লঞ্চের আগে অ্যাপগুলি যে কোনও কাজ করতে চায় তার জন্য প্রিফেচ কাজ ব্যবহার করার চেষ্টা করা উচিত।
ব্যাটারি রিসোর্স ব্যবহার
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) ডিভাইসের ব্যাটারি লাইফ আরও ভালোভাবে পরিচালনা করার জন্য সিস্টেমকে নিম্নলিখিত উপায়গুলি প্রদান করে:
- সিস্টেম কখন আপনার অ্যাপটিকে "সীমাবদ্ধ" অ্যাপ স্ট্যান্ডবাই বাকেটে রাখবে সে সম্পর্কে আপডেট করা নিয়ম।
- ব্যবহারকারী যখন আপনার অ্যাপটিকে ব্যাকগ্রাউন্ড ব্যাটারি ব্যবহারের জন্য "সীমাবদ্ধ" অবস্থায় রাখে, তখন আপনার অ্যাপটি যে কাজ করতে পারে তার উপর নতুন সীমাবদ্ধতা।
এই পরিবর্তনগুলি ব্যবহার করে আপনার অ্যাপটি পরীক্ষা করার সময়, নিম্নলিখিত বিষয়গুলি পরীক্ষা করে দেখুন:
সিস্টেম যখন আপনার অ্যাপটিকে "সীমাবদ্ধ" অ্যাপ স্ট্যান্ডবাই বাকেটে রাখে তখন কীভাবে সাড়া দেয় তা পরীক্ষা করুন। এই বাকেটে আপনার অ্যাপটি বরাদ্দ করতে নিম্নলিখিত Android Debug Bridge (ADB) কমান্ডটি ব্যবহার করুন:
adb shell am set-standby-bucket PACKAGE_NAME restricted
ব্যাকগ্রাউন্ড ব্যাটারি ব্যবহারের জন্য "সীমাবদ্ধ" অবস্থায় থাকা অ্যাপগুলিতে সাধারণত প্রযোজ্য নিম্নলিখিত বিধিনিষেধগুলিতে আপনার অ্যাপ কীভাবে সাড়া দেয় তা পরীক্ষা করুন:
- ফোরগ্রাউন্ড পরিষেবা চালু করা যাচ্ছে না
- বিদ্যমান ফোরগ্রাউন্ড পরিষেবাগুলি ফোরগ্রাউন্ড থেকে সরানো হয়েছে
- অ্যালার্মগুলি চালু হয় না
- কাজগুলি সম্পন্ন হয় না
আপনার অ্যাপটিকে এই "সীমাবদ্ধ" অবস্থায় রাখতে নিম্নলিখিত ADB কমান্ডটি ব্যবহার করুন:
adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND ignore
উচ্চ অগ্রাধিকার ফায়ারবেস ক্লাউড মেসেজ (FCM) কোটা
উচ্চ অগ্রাধিকার FCM-এর প্রতিক্রিয়ায় বিজ্ঞপ্তি প্রদর্শনকারী অ্যাপগুলির জন্য উচ্চ অগ্রাধিকার FCM ডেলিভারির নির্ভরযোগ্যতা উন্নত করতে Android 13 (API লেভেল 33) Firebase Cloud Messaging (FCM) কোটা আপডেট করে। Android 13 (API লেভেল 33) এ নিম্নলিখিত পরিবর্তন করা হয়েছে:
- অ্যাপ স্ট্যান্ডবাই বাকেট আর নির্ধারণ করে না যে একটি অ্যাপ কতগুলি উচ্চ অগ্রাধিকার FCM ব্যবহার করতে পারে।
- যদি কোনও অ্যাপ ধারাবাহিকভাবে উচ্চ-অগ্রাধিকার বার্তা পাঠাচ্ছে এবং কোনও বিজ্ঞপ্তি না আসে, তাহলে সিস্টেম এখন উচ্চ অগ্রাধিকার বার্তাগুলিকে ডাউনগ্রেড করে।
অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলির মতো, উচ্চ অগ্রাধিকার FCM গুলি যেগুলি কোটার চেয়ে বেশি যায় সেগুলিকে স্বাভাবিক অগ্রাধিকারে ডাউনগ্রেড করা হয়। FCM-এর প্রতিক্রিয়ায় Foreground Services (FGS) শুরু করার সময়, আমরা RemoteMessage.getPriority() এর ফলাফল পরীক্ষা করার এবং এটি PRIORITY_HIGH কিনা তা নিশ্চিত করার এবং/অথবা সম্ভাব্য ForegroundServiceStartNotAllowedException ব্যতিক্রমগুলি পরিচালনা করার পরামর্শ দিই।
যদি আপনার অ্যাপ্লিকেশনটি সর্বদা উচ্চ অগ্রাধিকার FCM-এর প্রতিক্রিয়ায় বিজ্ঞপ্তি পোস্ট না করে, তাহলে আমরা আপনাকে এই FCM-এর অগ্রাধিকার স্বাভাবিকে পরিবর্তন করার পরামর্শ দিচ্ছি যাতে বিজ্ঞপ্তির ফলে আসা বার্তাগুলি ডাউনগ্রেড না হয়।
গোপনীয়তা
বিজ্ঞপ্তির জন্য রানটাইম অনুমতি
অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) একটি রানটাইম নোটিফিকেশন অনুমতি চালু করেছে: POST_NOTIFICATIONS । এই পরিবর্তন ব্যবহারকারীদের তাদের কাছে সবচেয়ে গুরুত্বপূর্ণ নোটিফিকেশনগুলিতে মনোনিবেশ করতে সাহায্য করে।
এই বৈশিষ্ট্যের অতিরিক্ত নিয়ন্ত্রণ এবং নমনীয়তার প্রভাব পেতে আমরা আপনাকে যত তাড়াতাড়ি সম্ভব Android 13 বা তার উচ্চতর সংস্করণগুলিকে লক্ষ্য করার পরামর্শ দিচ্ছি।
অ্যাপ অনুমতির সর্বোত্তম অনুশীলন সম্পর্কে আরও জানুন।
ক্লিপবোর্ড থেকে সংবেদনশীল কন্টেন্ট লুকান
যদি আপনার অ্যাপ ব্যবহারকারীদের পাসওয়ার্ড বা ক্রেডিট কার্ডের তথ্যের মতো সংবেদনশীল কন্টেন্ট ক্লিপবোর্ডে কপি করার অনুমতি দেয়, তাহলে ClipboardManager#setPrimaryClip() কল করার আগে আপনাকে ClipData-এর ClipDescription এ একটি ফ্ল্যাগ যোগ করতে হবে। এই ফ্ল্যাগ যোগ করলে কন্টেন্ট প্রিভিউতে সংবেদনশীল কন্টেন্ট দেখা যাবে না।


সংবেদনশীল কন্টেন্ট চিহ্নিত করতে, ClipDescription এ একটি বুলিয়ান অতিরিক্ত যোগ করুন। লক্ষ্যযুক্ত API স্তর নির্বিশেষে, সমস্ত অ্যাপের এটি করা উচিত।
// When your app is compiled with the API level 33 SDK or higher
clipData.apply {
description.extras = PersistableBundle().apply {
putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)
}
}
// If your app is compiled with a lower SDK
clipData.apply {
description.extras = PersistableBundle().apply {
putBoolean("android.content.extra.IS_SENSITIVE", true)
}
}
নতুন ক্লিপবোর্ড UI সম্পর্কে আরও জানতে, কপি এবং পেস্ট বৈশিষ্ট্য পৃষ্ঠাটি দেখুন।
নিরাপত্তা
শেয়ার করা ব্যবহারকারী আইডি থেকে দূরে সরে যান
যদি আপনার অ্যাপটি অবচিত android:sharedUserId অ্যাট্রিবিউট ব্যবহার করে এবং অ্যাট্রিবিউটের কার্যকারিতার উপর আর নির্ভর না করে, তাহলে আপনি android:sharedUserMaxSdkVersion অ্যাট্রিবিউটটিকে 32 এ সেট করতে পারেন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
<manifest ...> <!-- To maintain backward compatibility, continue to use "android:sharedUserId" if you already added it to your manifest. --> android:sharedUserId="SHARED_PACKAGE_NAME" android:sharedUserMaxSdkVersion="32" ... </manifest>
এই বৈশিষ্ট্যটি সিস্টেমকে বলে যে আপনার অ্যাপটি আর কোনও শেয়ার্ড ইউজার আইডির উপর নির্ভর করে না। যদি আপনার অ্যাপটি android:sharedUserMaxSdkVersion ঘোষণা করে এবং Android 13 বা তার উচ্চতর ভার্সন চালিত ডিভাইসে নতুন ইনস্টল করা হয়, তাহলে আপনার অ্যাপটি এমন আচরণ করবে যেন আপনি কখনও android:sharedUserId সংজ্ঞায়িত করেননি। আপডেট করা অ্যাপগুলি এখনও বিদ্যমান শেয়ার্ড ইউজার আইডি ব্যবহার করে।
শেয়ার করা ব্যবহারকারী আইডি প্যাকেজ ম্যানেজারের মধ্যে অ-নির্ধারণী আচরণ সৃষ্টি করে। আপনার অ্যাপের পরিবর্তে শেয়ার করা উপাদানগুলির মধ্যে আন্তঃকার্যকারিতা সহজতর করার জন্য পরিষেবা এবং সামগ্রী সরবরাহকারীর মতো সঠিক যোগাযোগ ব্যবস্থা ব্যবহার করা উচিত।
ব্যবহারকারীর অভিজ্ঞতা
অগ্রভাগের পরিষেবার বিজ্ঞপ্তি খারিজ করা যাবে
অ্যান্ড্রয়েড ১৩ বা তার পরবর্তী ভার্সন চালানো ডিভাইসগুলিতে, ব্যবহারকারীরা ডিফল্টরূপে ফোরগ্রাউন্ড পরিষেবার সাথে সম্পর্কিত বিজ্ঞপ্তিগুলি বাতিল করতে পারেন ।
মূল কার্যকারিতা
স্পিচ সার্ভিস বাস্তবায়নের লিগ্যাসি কপি সরানো হয়েছে
অ্যান্ড্রয়েড ১৩ গুগল অ্যাপ থেকে SpeechService বাস্তবায়ন—যার মধ্যে রয়েছে ভয়েস আইএমই, RecognitionService এবং একটি ইনটেন্ট-ভিত্তিক এপিআই —সমেত—সমেত সবকিছু সরিয়ে দেয়।
অ্যান্ড্রয়েড ১২-তে, নিম্নলিখিত পরিবর্তনগুলি ঘটেছে:
-
SpeechServiceকার্যকারিতাগুলি Speech Services by Google অ্যাপে স্থানান্তরিত করা হয়েছিল, যা ডিফল্টSpeechServiceপ্রদানকারী হয়ে ওঠে। - ডিভাইসে স্পিচ রিকগনিশন সমর্থন করার জন্য
RecognitionServiceকার্যকারিতাটি Android System Intelligence অ্যাপে স্থানান্তরিত করা হয়েছে।
অ্যান্ড্রয়েড ১২-তে অ্যাপের সামঞ্জস্য বজায় রাখতে, গুগল অ্যাপটি ট্র্যাফিককে স্পিচ সার্ভিসেস বাই গুগল অ্যাপে ডাইভার্ট করার জন্য একটি ট্রাম্পোলিন ব্যবহার করে। অ্যান্ড্রয়েড ১৩-তে, এই ট্রাম্পোলিনটি সরানো হয়।
অ্যাপগুলিকে SpeechService এর জন্য ডিভাইসের ডিফল্ট প্রদানকারী ব্যবহার করা উচিত, কোনও নির্দিষ্ট অ্যাপকে হার্ড-কোড করার পরিবর্তে।