व्यवहार में बदलाव: सभी ऐप्लिकेशन

Android 13 प्लैटफ़ॉर्म के काम करने के तरीके में कुछ बदलाव किए गए हैं. इनका असर आपके ऐप्लिकेशन पर पड़ सकता है. कॉन्टेंट बनाने ये बदलाव, Android 13 पर चलने वाले सभी ऐप्लिकेशन पर लागू होते हैं. targetSdkVersion की परवाह किए बिना. आपको अपने ऐप्लिकेशन की जांच करनी चाहिए और फिर उसे इस तरह बदलना चाहिए: जहां भी लागू हो, इनका सही तरीके से समर्थन करना ज़रूरी है.

ऐप्लिकेशन के व्यवहार में हुए उन बदलावों की सूची भी ज़रूर देखें जिनसे सिर्फ़ ऐप्लिकेशन पर असर पड़ेगा Android 13 को टारगेट करने वाला.

परफ़ॉर्मेंस और बैटरी

टास्क मैनेजर

नोटिफ़िकेशन पैनल के नीचे एक बटन होता है, जो
  बैकग्राउंड में चल रहे ऐप्लिकेशन की संख्या. बटन दबाने पर
  यह बटन, एक डायलॉग बॉक्स दिखता है, जिसमें अलग-अलग ऐप्लिकेशन के नाम की सूची होती है. कॉन्टेंट बनाने
  'रोकें' बटन हर ऐप्लिकेशन की दाईं ओर होता है
पहली इमेज. टास्क मैनेजर के लिए वर्कफ़्लो , जो आपको इसकी अनुमति देता है उपयोगकर्ताओं को ऐसे ऐप्लिकेशन बंद करने होंगे जिनमें फ़ोरग्राउंड सेवाओं का इस्तेमाल जारी हो. यह वर्कफ़्लो यह सुविधा सिर्फ़ Android 13 या उसके बाद के वर्शन वाले डिवाइसों पर दिखती है.

Android 13 (एपीआई लेवल 33) की शुरुआत में, उपयोगकर्ता इस वर्कफ़्लो को पूरा कर सकते हैं: उन ऐप्लिकेशन को बंद करने के लिए सूचना दिखाने वाला पैनल जिनमें फ़ोरग्राउंड सेवाएं पहले से मौजूद हैं, जैसा कि यहां दिखाया गया है पहली इमेज में दिखाया गया है. इस किफ़ायती कीमत को टास्क मैनेजर. ऐप्लिकेशन के पास इसे मैनेज करने की सुविधा होनी चाहिए यूज़र-इनीशिएटेड बंद हो रहा है.

JobScheduler का इस्तेमाल करके, प्रीफ़ेच किए गए काम को बेहतर बनाने के लिए

JobScheduler, ऐप्लिकेशन के लिए खास जॉब को "प्रीफ़ेच" के तौर पर मार्क करने का तरीका मुहैया कराता है जॉब (JobInfo.Builder.setPrefetch() का इस्तेमाल करके), इसका मतलब है कि उन्हें काम करना चाहिए और उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, अगला ऐप्लिकेशन लॉन्च किए जाने के आस-पास और उससे पहले उपलब्ध होगा. अब तक, JobScheduler ने सिर्फ़ प्रीफ़ेच जॉब को दिखाने के लिए सिग्नल का इस्तेमाल किया है मुफ़्त या ज़रूरत से ज़्यादा डेटा का इस्तेमाल करना.

Android 13 (एपीआई लेवल 33) और उसके बाद वाले वर्शन में, सिस्टम यह तय किया जाता है कि अगली बार कोई ऐप्लिकेशन कब लॉन्च होगा. साथ ही, उस अनुमान का इस्तेमाल करके उसे चलाया जाता है प्रीफ़ेच जॉब. ऐप्लिकेशन को अपने किसी भी काम के लिए प्रीफ़ेच जॉब का इस्तेमाल करने की कोशिश करनी चाहिए ऐसा करने के लिए कहा जा सकता है.

बैटरी का इस्तेमाल

Android 13 (एपीआई लेवल 33) की मदद से, सिस्टम को बेहतर बनाने के लिए ये तरीके अपनाए जाते हैं डिवाइस की बैटरी लाइफ़ मैनेज करें:

इन बदलावों को लागू करके अपने ऐप्लिकेशन की जांच करते समय, इन बातों का ध्यान रखें चीज़ें:

  • देखें कि सिस्टम, आपके ऐप्लिकेशन को "पाबंदी के साथ" कैटगरी में रखने पर क्या करता है ऐप्स स्टैंडबाय बकेट. इसका इस्तेमाल करें अपने ऐप्लिकेशन को इस बकेट के लिए असाइन करने के लिए, Android डीबग ब्रिज (ADB) निर्देश का पालन करें:

    adb shell am set-standby-bucket PACKAGE_NAME restricted
    
  • देखें कि आपका ऐप्लिकेशन, आम तौर पर लागू होने वाली इन पाबंदियों के हिसाब से कैसे काम करता है ऐसे ऐप्लिकेशन पर "प्रतिबंधित" राज्य बैकग्राउंड में बैटरी के इस्तेमाल के लिए:

    • फ़ोरग्राउंड सेवाएं लॉन्च नहीं की जा सकीं
    • फ़ोरग्राउंड से जुड़ी मौजूदा सेवाओं को हटा दिया गया है
    • अलार्म ट्रिगर नहीं किए गए हैं
    • जॉब नहीं चलाए जाते

    अपने ऐप्लिकेशन को इस "प्रतिबंधित" सूची में रखने के लिए, नीचे दिए गए ADB कमांड का इस्तेमाल करें राज्य:

    adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND ignore
    

ज़्यादा प्राथमिकता वाला Firebase क्लाउड मैसेज (FCM) कोटा

Android 13 (एपीआई लेवल 33), Firebase क्लाउड से मैसेज (FCM) के कोटा को अपडेट करता है. इससे, ज़्यादा प्राथमिकता वाले FCM के जवाब में सूचनाएं दिखाने वाले ऐप्लिकेशन के लिए, ज़्यादा प्राथमिकता वाली FCM डिलीवरी को ज़्यादा भरोसेमंद बनाया जा सकता है. Android 13 (एपीआई लेवल 33) में ये बदलाव हुए हैं:

  • ऐप्लिकेशन स्टैंडबाय बकेट अब यह तय नहीं करते कि कोई ऐप्लिकेशन ज़्यादा प्राथमिकता वाले कितने FCM का इस्तेमाल कर सकता है.
  • ज़्यादा प्राथमिकता वाले FCM कोटा को, ज़्यादा प्राथमिकता वाले FCM कोटा को उपयोगकर्ता को दिखाई जाने वाली सूचनाओं की संख्या के अनुपात में बढ़ाया जाता है.

Android के पिछले वर्शन की तरह, कोटा से ज़्यादा प्राथमिकता वाले FCM को सामान्य प्राथमिकता में डाउनग्रेड कर दिया जाता है. हमारा सुझाव है कि FCM के जवाब में फ़ोरग्राउंड सेवाएं (एफ़जीएस) शुरू करते समय, RemoteMessage.getPriority() के नतीजे की जांच करें और पक्का करें कि यह PRIORITY_HIGH हो और/या किसी भी संभावित ForegroundServiceStartNotAllowedException अपवाद को हैंडल करे.

अगर आपका ऐप्लिकेशन हमेशा ज़्यादा प्राथमिकता वाले FCM के जवाब में सूचनाएं पोस्ट नहीं करता, तो हमारा सुझाव है कि आप इन FCM की प्राथमिकता को सामान्य में बदल दें, ताकि सूचना देने वाले मैसेज डाउनग्रेड न हों.

निजता

सूचनाओं के लिए रनटाइम की अनुमति

Android 13 (एपीआई लेवल 33) की मदद से रनटाइम की सुविधा मिलती है सूचना की अनुमति: POST_NOTIFICATIONS. इस बदलाव से, उपयोगकर्ताओं को उन सूचनाओं पर फ़ोकस करने में मदद मिलती है जो उनके लिए सबसे ज़्यादा ज़रूरी हैं उन्हें.

हमारा सुझाव है कि आप जल्द से जल्द Android 13 या उसके बाद के वर्शन को टारगेट करें के अतिरिक्त नियंत्रण और लचीलेपन के प्रभाव को यह सुविधा.

इसके बारे में ज़्यादा जानें ऐप्लिकेशन अनुमतियों के सबसे सही तरीके देखें.

क्लिपबोर्ड से संवेदनशील कॉन्टेंट छिपाएं

अगर आपका ऐप्लिकेशन, उपयोगकर्ताओं को पासवर्ड या क्रेडिट जैसे संवेदनशील कॉन्टेंट को कॉपी करने की अनुमति देता है कार्ड की जानकारी को क्लिपबोर्ड पर सेव करने के लिए, आपको ClipData के ClipboardManager#setPrimaryClip() पर कॉल करने से पहले 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)
    }
}

नए क्लिपबोर्ड यूज़र इंटरफ़ेस (यूआई) के बारे में ज़्यादा जानने के लिए, यहां जाएं कॉपी करने और चिपकाने की सुविधा वाला पेज.

सुरक्षा

शेयर किए गए यूज़र आईडी से माइग्रेट करें

अगर आपका ऐप्लिकेशन, 'अब काम नहीं करता' के तौर पर फ़्लैग किया गया है, तो 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 या इसके बाद के वर्शन वाले डिवाइसों पर, उपयोगकर्ता इसे खारिज कर सकते हैं फ़ोरग्राउंड से जुड़ी सूचनाएं सेवाएं डिफ़ॉल्ट.

मुख्य फ़ंक्शन

बोली पहचानने की सेवा को लागू करने की लेगसी कॉपी को हटा दिया गया है

Android 13, SpeechService को लागू करने की प्रोसेस को हटा देता है. इसमें यह भी शामिल है वॉइस IME, RecognitionService और इंटेंट-आधारित एपीआई—इनकी मदद से बनाया गया Google ऐप्लिकेशन.

Android 12 में ये बदलाव किए गए हैं:

  • SpeechService फ़ंक्शन को Speech Services में माइग्रेट किया गया Google ऐप्लिकेशन, जो डिफ़ॉल्ट रूप से SpeechService की सेवा देने वाली कंपनी बन गई है.
  • RecognitionService की सुविधा को Android सिस्टम में ट्रांसफ़र किया गया उपयोगकर्ता के डिवाइस पर बोली पहचानने की सुविधा देने के लिए इंटेलिजेंस ऐप्लिकेशन.

Android 12 पर ऐप्लिकेशन के साथ काम करने की सुविधा बनाए रखने के लिए, Google app Speech Services by Google ऐप्लिकेशन पर ट्रैफ़िक भेजने के लिए, ट्रैंपोलिन का इस्तेमाल किया जाता है. तय सीमा में Android 13, इस ट्रैंपोलिन को हटा दिया गया है.

ऐप्लिकेशन को SpeechService के लिए, डिवाइस की डिफ़ॉल्ट कंपनी का इस्तेमाल करना चाहिए किसी ऐप्लिकेशन को हार्ड-कोड करने की सुविधा मिलती है.