আচরণ পরিবর্তন: সমস্ত অ্যাপ্লিকেশন

অ্যান্ড্রয়েড 13 প্ল্যাটফর্মে এমন আচরণের পরিবর্তন রয়েছে যা আপনার অ্যাপকে প্রভাবিত করতে পারে। নিম্নলিখিত আচরণের পরিবর্তনগুলি সমস্ত অ্যাপের ক্ষেত্রে প্রযোজ্য যখন সেগুলি Android 13 এ চলে, targetSdkVersion নির্বিশেষে। আপনার অ্যাপটি পরীক্ষা করা উচিত এবং তারপরে যেখানে প্রযোজ্য সেখানে সঠিকভাবে সমর্থন করার জন্য প্রয়োজন অনুসারে এটি সংশোধন করা উচিত।

এছাড়াও আচরণ পরিবর্তনের তালিকা পর্যালোচনা করতে ভুলবেন না যা শুধুমাত্র Android 13 টার্গেট করা অ্যাপগুলিকে প্রভাবিত করে

কর্মক্ষমতা এবং ব্যাটারি

টাস্ক ম্যানেজার

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

Android 13 (API স্তর 33) থেকে শুরু করে, ব্যবহারকারীরা চলমান ফোরগ্রাউন্ড পরিষেবা রয়েছে এমন অ্যাপগুলি বন্ধ করতে বিজ্ঞপ্তি ড্রয়ার থেকে একটি ওয়ার্কফ্লো সম্পূর্ণ করতে পারেন, যেমন চিত্র 1-এ দেখানো হয়েছে। এই সামর্থ্য টাস্ক ম্যানেজার নামে পরিচিত। অ্যাপগুলি অবশ্যই এই ব্যবহারকারীর দ্বারা শুরু করা স্টপিং পরিচালনা করতে সক্ষম হবে।

JobScheduler ব্যবহার করে প্রিফেচ জব হ্যান্ডলিং উন্নত করুন

JobScheduler অ্যাপগুলির জন্য নির্দিষ্ট কাজগুলিকে "প্রিফেচ" কাজ হিসাবে চিহ্নিত করার একটি উপায় প্রদান করে ( JobInfo.Builder.setPrefetch() ব্যবহার করে), যার অর্থ ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পরবর্তী অ্যাপ লঞ্চের কাছাকাছি এবং তার আগে তাদের আদর্শভাবে চালানো উচিত। ঐতিহাসিকভাবে, JobScheduler শুধুমাত্র সিগন্যাল ব্যবহার করে চাকরিকে সুযোগসুবিধাপূর্ণভাবে বিনামূল্যে বা অতিরিক্ত ডেটা ব্যবহার করতে দেওয়ার জন্য।

অ্যান্ড্রয়েড 13 (এপিআই লেভেল 33) এবং উচ্চতর, সিস্টেমটি পরবর্তী সময়ে একটি অ্যাপ চালু করা হবে তা নির্ধারণ করার চেষ্টা করে এবং প্রিফেচ কাজগুলি চালানোর জন্য সেই অনুমান ব্যবহার করে। অ্যাপগুলিকে পরবর্তী অ্যাপ লঞ্চের আগে যে কোনও কাজের জন্য প্রিফেচ কাজগুলি ব্যবহার করার চেষ্টা করা উচিত।

ব্যাটারি সম্পদ ব্যবহার

Android 13 (API লেভেল 33) ডিভাইসের ব্যাটারি লাইফকে আরও ভালভাবে পরিচালনা করার জন্য সিস্টেমের জন্য নিম্নলিখিত উপায়গুলি প্রদান করে:

আপনি এই পরিবর্তনগুলির সাথে আপনার অ্যাপ পরীক্ষা করার সময়, নিম্নলিখিত জিনিসগুলি পরীক্ষা করতে ভুলবেন না:

  • পরীক্ষা করুন কিভাবে আপনার অ্যাপটি সাড়া দেয় যখন সিস্টেম এটিকে "সীমাবদ্ধ" অ্যাপ স্ট্যান্ডবাই বাকেটের মধ্যে রাখে। এই বালতিতে আপনার অ্যাপটি বরাদ্দ করতে নিম্নলিখিত 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) কোটা

Android 13 (API লেভেল 33) ফায়ারবেস ক্লাউড মেসেজিং (FCM) কোটাগুলি আপডেট করে উচ্চ অগ্রাধিকারের FCMগুলির প্রতিক্রিয়াতে বিজ্ঞপ্তিগুলি দেখায় এমন অ্যাপগুলির জন্য উচ্চ অগ্রাধিকার FCM বিতরণের নির্ভরযোগ্যতা উন্নত করতে৷ Android 13 (API স্তর 33) এ নিম্নলিখিতগুলি পরিবর্তিত হয়েছে:

  • অ্যাপ স্ট্যান্ডবাই বাকেটগুলি আর কতগুলি উচ্চ অগ্রাধিকারের FCM ব্যবহার করতে পারে তা নির্ধারণ করে না৷
  • উচ্চ অগ্রাধিকার এফসিএম-এর প্রতিক্রিয়ায় ব্যবহারকারীকে দেখানো বিজ্ঞপ্তির সংখ্যার অনুপাতে উচ্চ অগ্রাধিকার FCM কোটা স্কেল।

অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলির মতো, উচ্চ অগ্রাধিকারের FCMগুলি যেগুলি কোটা অতিক্রম করে সেগুলিকে সাধারণ অগ্রাধিকারে নামিয়ে দেওয়া হয়৷ একটি FCM-এর প্রতিক্রিয়া হিসাবে ফোরগ্রাউন্ড পরিষেবাগুলি (FGS) শুরু করার সময়, আমরা RemoteMessage.getPriority() এর ফলাফল পরীক্ষা করার এবং এটি PRIORITY_HIGH এবং/অথবা সম্ভাব্য ForegroundServiceStartNotAllowedException ব্যতিক্রমগুলি পরিচালনা করার জন্য সুপারিশ করি৷

যদি আপনার অ্যাপ্লিকেশান সবসময় উচ্চ অগ্রাধিকারের FCM-এর প্রতিক্রিয়া হিসাবে বিজ্ঞপ্তিগুলি পোস্ট না করে, তাহলে আমরা সুপারিশ করি যে আপনি এই FCMগুলির অগ্রাধিকারকে স্বাভাবিকের মধ্যে পরিবর্তন করুন যাতে বিজ্ঞপ্তির ফলে বার্তাগুলি ডাউনগ্রেড না হয়৷

গোপনীয়তা

বিজ্ঞপ্তির জন্য রানটাইম অনুমতি

Android 13 (API লেভেল 33) একটি রানটাইম বিজ্ঞপ্তি অনুমতি প্রবর্তন করে: 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 সংজ্ঞায়িত করেননি। আপডেট করা অ্যাপ এখনও বিদ্যমান শেয়ার করা ইউজার আইডি ব্যবহার করে।

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

ব্যবহারকারীর অভিজ্ঞতা

বাতিলযোগ্য ফোরগ্রাউন্ড পরিষেবা বিজ্ঞপ্তি

যে ডিভাইসগুলিতে Android 13 বা তার বেশি চলমান, ব্যবহারকারীরা ডিফল্টরূপে অগ্রভাগের পরিষেবাগুলির সাথে সম্পর্কিত বিজ্ঞপ্তিগুলি খারিজ করতে পারে

মূল কার্যকারিতা

বক্তৃতা পরিষেবা বাস্তবায়নের উত্তরাধিকার অনুলিপি সরানো হয়েছে

অ্যান্ড্রয়েড 13 SpeechService ইমপ্লিমেন্টেশনকে সরিয়ে দেয়—যেতে ভয়েস আইএমই, RecognitionService এবং একটি ইন্টেন্ট-ভিত্তিক API রয়েছে—Google অ্যাপ থেকে।

অ্যান্ড্রয়েড 12 এ, নিম্নলিখিত পরিবর্তনগুলি ঘটেছে:

  • SpeechService কার্যকারিতাগুলি Google অ্যাপ দ্বারা স্পিচ পরিষেবাগুলিতে স্থানান্তরিত হয়েছিল, যা ডিফল্ট SpeechService প্রদানকারী হয়ে উঠেছে৷
  • RecognitionService কার্যকারিতা Android সিস্টেম ইন্টেলিজেন্স অ্যাপে সরানো হয়েছে যাতে ডিভাইসে স্পিচ রিকগনিশন সমর্থন করা যায়।

Android 12-এ অ্যাপের সামঞ্জস্য বজায় রাখতে সাহায্য করার জন্য, Google অ্যাপ Google অ্যাপের স্পিচ পরিষেবাগুলিতে ট্রাফিক ডাইভার্ট করতে একটি ট্রামপোলিন ব্যবহার করে। অ্যান্ড্রয়েড 13 এ, এই ট্রামপোলিনটি সরানো হয়েছে।

অ্যাপ্লিকেশানগুলিকে একটি নির্দিষ্ট অ্যাপের হার্ড-কোডিংয়ের পরিবর্তে SpeechService এর জন্য ডিভাইসের ডিফল্ট প্রদানকারী ব্যবহার করা উচিত৷