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

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

অ্যান্ড্রয়েড ১৩ টার্গেট করা অ্যাপগুলোর জন্য প্রযোজ্য আচরণগত পরিবর্তনের তালিকাটিও পর্যালোচনা করে নিতে ভুলবেন না।

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

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

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

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

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

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

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

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

অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) ডিভাইসের ব্যাটারি লাইফ আরও ভালোভাবে পরিচালনা করার জন্য সিস্টেমকে নিম্নলিখিত উপায়গুলো প্রদান করে:

  • সিস্টেম কখন আপনার অ্যাপকে 'সীমাবদ্ধ' অ্যাপ স্ট্যান্ডবাই বাকেটে রাখবে, সে সংক্রান্ত নিয়মাবলী হালনাগাদ করা হয়েছে।
  • যখন ব্যবহারকারী ব্যাকগ্রাউন্ডে ব্যাটারি ব্যবহারের জন্য আপনার অ্যাপটিকে "সীমাবদ্ধ" অবস্থায় রাখেন, তখন আপনার অ্যাপটি যে কাজ করতে পারবে তার উপর নতুন সীমাবদ্ধতা আরোপ করা হয়।

এই পরিবর্তনগুলো সহ আপনার অ্যাপটি পরীক্ষা করার সময়, নিম্নলিখিত বিষয়গুলো অবশ্যই যাচাই করে নেবেন:

  • সিস্টেম যখন আপনার অ্যাপটিকে 'restricted' App Standby Bucket- এ রাখে, তখন এটি কীভাবে সাড়া দেয় তা পরীক্ষা করুন। আপনার অ্যাপটিকে এই বাকেটে অ্যাসাইন করতে নিম্নলিখিত Android Debug Bridge (ADB) কমান্ডটি ব্যবহার করুন:

    adb shell am set-standby-bucket PACKAGE_NAME restricted
    
  • ব্যাকগ্রাউন্ডে ব্যাটারি ব্যবহারের জন্য "সীমাবদ্ধ" অবস্থায় থাকা অ্যাপগুলোর ক্ষেত্রে সাধারণত প্রযোজ্য নিম্নলিখিত সীমাবদ্ধতাগুলোর প্রতি আপনার অ্যাপ কীভাবে সাড়া দেয়, তা পরীক্ষা করুন:

    • ফোরগ্রাউন্ড পরিষেবা চালু করা যাচ্ছে না
    • বিদ্যমান ফোরগ্রাউন্ড সার্ভিসগুলো ফোরগ্রাউন্ড থেকে সরিয়ে দেওয়া হয়।
    • অ্যালার্মগুলো বেজে ওঠে না।
    • কাজগুলো সম্পন্ন করা হয় না

    আপনার অ্যাপটিকে এই 'restricted' অবস্থায় রাখতে নিম্নলিখিত ADB কমান্ডটি ব্যবহার করুন:

    adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND ignore
    

উচ্চ অগ্রাধিকার ফায়ারবেস ক্লাউড মেসেজ (FCM) কোটা

অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) ফায়ারবেস ক্লাউড মেসেজিং (এফসিএম) কোটা আপডেট করে, যা উচ্চ অগ্রাধিকারের এফসিএম-এর প্রতিক্রিয়ায় নোটিফিকেশন দেখানো অ্যাপগুলির জন্য উচ্চ অগ্রাধিকারের এফসিএম ডেলিভারির নির্ভরযোগ্যতা উন্নত করে। অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩)-এ নিম্নলিখিত পরিবর্তনগুলি এসেছে:

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

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

যদি আপনার অ্যাপ্লিকেশনটি উচ্চ অগ্রাধিকার সম্পন্ন FCM-গুলোর প্রতিক্রিয়ায় সবসময় নোটিফিকেশন পোস্ট না করে, তাহলে আমরা সুপারিশ করি যে আপনি এই FCM-গুলোর অগ্রাধিকার 'সাধারণ' -এ পরিবর্তন করুন, যাতে যে বার্তাগুলোর ফলে নোটিফিকেশন তৈরি হয় সেগুলোর অগ্রাধিকার কমে না যায়।

গোপনীয়তা

নোটিফিকেশনের জন্য রানটাইম অনুমতি

অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩)-এ POST_NOTIFICATIONS নামে একটি রানটাইম নোটিফিকেশন পারমিশন চালু করা হয়েছে। এই পরিবর্তনটি ব্যবহারকারীদের জন্য সবচেয়ে গুরুত্বপূর্ণ নোটিফিকেশনগুলোতে মনোযোগ দিতে সাহায্য করে।

এই ফিচারের অতিরিক্ত নিয়ন্ত্রণ ও নমনীয়তার সুবিধাগুলো পেতে আমরা আপনাকে যত দ্রুত সম্ভব অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণ ব্যবহার করার জন্য জোরালোভাবে সুপারিশ করছি।

অ্যাপ পারমিশন সংক্রান্ত সেরা অনুশীলনগুলো সম্পর্কে আরও জানুন।

ক্লিপবোর্ড থেকে সংবেদনশীল বিষয়বস্তু লুকান

যদি আপনার অ্যাপ ব্যবহারকারীদের পাসওয়ার্ড বা ক্রেডিট কার্ডের তথ্যের মতো সংবেদনশীল বিষয়বস্তু ক্লিপবোর্ডে কপি করার অনুমতি দেয়, তাহলে ClipboardManager#setPrimaryClip() কল করার আগে আপনাকে অবশ্যই ClipData-এর ClipDescription এ একটি ফ্ল্যাগ যোগ করতে হবে। এই ফ্ল্যাগটি যোগ করলে কন্টেন্ট প্রিভিউতে সংবেদনশীল বিষয়বস্তু প্রদর্শিত হওয়া থেকে বিরত থাকে।

সংবেদনশীল বিষয়বস্তু চিহ্নিত না করে অনুলিপি করা পাঠ্যের পূর্বরূপ।
সংবেদনশীল বিষয়বস্তু চিহ্নিত না করে অনুলিপি করা পাঠ্যের পূর্বরূপ।
অনুলিপি করা পাঠ্যের পূর্বরূপ সংবেদনশীল বিষয়বস্তু হিসেবে চিহ্নিত করা হয়েছে।
অনুলিপি করা পাঠ্যের পূর্বরূপ সংবেদনশীল বিষয়বস্তু হিসেবে চিহ্নিত করা হয়েছে।

সংবেদনশীল বিষয়বস্তু চিহ্নিত করতে, ClipDescription এ একটি অতিরিক্ত বুলিয়ান যোগ করুন। লক্ষ্যযুক্ত এপিআই লেভেল নির্বিশেষে সকল অ্যাপেরই এটি করা উচিত।


// 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:sharedUserId ডিফাইন করেননি। আপডেট করা অ্যাপগুলো আগের শেয়ার্ড ইউজার আইডিটিই ব্যবহার করবে।

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

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

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

অ্যান্ড্রয়েড ১৩ বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলিতে, ব্যবহারকারীরা ডিফল্টরূপে ফোরগ্রাউন্ড পরিষেবাগুলির সাথে যুক্ত বিজ্ঞপ্তিগুলি খারিজ করতে পারেন

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

স্পিচ সার্ভিস বাস্তবায়নের পুরোনো কপিটি সরিয়ে ফেলা হয়েছে

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

অ্যান্ড্রয়েড ১২-এ নিম্নলিখিত পরিবর্তনগুলো ঘটেছে:

  • SpeechService কার্যকারিতাগুলো Speech Services by Google অ্যাপে স্থানান্তরিত করা হয়েছে, যা ডিফল্ট SpeechService প্রোভাইডার হয়ে উঠেছে।
  • ডিভাইসে স্পিচ রিকগনিশন সমর্থন করার জন্য RecognitionService কার্যকারিতাটি Android System Intelligence অ্যাপে স্থানান্তর করা হয়েছে।

অ্যান্ড্রয়েড ১২-এ অ্যাপের সামঞ্জস্যতা বজায় রাখতে সাহায্য করার জন্য, গুগল অ্যাপটি ‘স্পিচ সার্ভিসেস বাই গুগল’ অ্যাপে ট্র্যাফিক পাঠানোর জন্য একটি ট্রাম্পোলিন ব্যবহার করত। অ্যান্ড্রয়েড ১৩-এ এই ট্রাম্পোলিনটি সরিয়ে ফেলা হয়েছে।

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