تغييرات السلوك: جميع التطبيقات

يتضمّن نظام Android 13 الأساسي تغييرات في السلوك قد تؤثّر في تطبيقك. تشير رسالة الأشكال البيانية تنطبق التغييرات التالية في السلوك على جميع التطبيقات عند تشغيلها على نظام التشغيل Android 13، بغض النظر عن targetSdkVersion. يجب اختبار تطبيقك ثم تعديله وفقًا لما يلي: اللازمة لدعم هذه بشكل صحيح، حيثما ينطبق ذلك.

تأكد أيضًا من مراجعة قائمة تغييرات السلوك التي تؤثر في التطبيقات فقط التي تستهدف الإصدار 13 من نظام التشغيل Android

الأداء والبطارية

إدارة المهام

هناك زر أسفل درج الإشعارات يشير إلى
  عدد التطبيقات التي تعمل في الخلفية حاليًا عند الضغط على
  هذا الزر، سيظهر مربع حوار يسرد أسماء التطبيقات المختلفة. تشير رسالة الأشكال البيانية
  يظهر زر الإيقاف على يسار كل تطبيق.
الشكل 1. سير العمل لإدارة المهام ، والذي يسمح من المستخدمين إيقاف التطبيقات التي تتضمّن خدمات جارية تعمل في المقدّمة سير العمل هذا تظهر فقط على الأجهزة التي تعمل بنظام التشغيل Android 13 أو الإصدارات الأحدث.

بدءًا من Android 13 (المستوى 33)، يمكن للمستخدمين إكمال سير عمل من لائحة الإشعارات لإيقاف التطبيقات التي تتضمّن خدمات جارية تعمل في المقدّمة، على النحو الموضّح في الشكل 1. تُعرف هذه الوظيفة إدارة المهام: يجب أن تتمكّن التطبيقات من التعامل مع هذا الإجراء إجراء من قِبل المستخدم يتوقف.

تحسين التعامل مع مهام الجلب المسبق باستخدام Job Scheduler

توفّر أداة Jobscheduler طريقة للتطبيقات لوضع علامة "الجلب المُسبَق" على مهام معيّنة. وظائف (باستخدام JobInfo.Builder.setPrefetch())، ما يعني أنّه يجب إدارتها قريبًا وقبل إطلاق التطبيق التالي لتحسين تجربة المستخدم. في السابق، كانت Jobscheduler تستخدم الإشارة فقط للسماح بالجلب المسبق للمهام. استخدام بيانات مجانية أو زائدة في فرص.

في نظام التشغيل Android 13 (المستوى 33) والإصدارات الأحدث، يحاول النظام ما يلي: لتحديد المرة القادمة التي سيتم فيها تشغيل التطبيق، ويستخدم هذا التقدير لتشغيله لمهام الجلب المسبق. يجب أن تحاول التطبيقات استخدام مهام الجلب المُسبَق لأي عمل تريده قبل إطلاق التطبيق التالي.

استخدام موارد البطارية

يوفّر Android 13 (المستوى 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
    

حصص الرسائل السحابية من Firebase ذات الأولوية العالية

يعدّل Android 13 (المستوى 33 من واجهة برمجة التطبيقات) حصص المراسلة عبر السحابة الإلكترونية من Firebase (FCM) لتحسين موثوقية التسليم عبر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" ذي الأولوية العالية للتطبيقات التي تعرض إشعارات استجابةً للمراسلة عبر السحابة الإلكترونية من Firebase ذات الأولوية العالية. تم تغيير ما يلي في Android 13 (المستوى 33):

  • لم تعد حزم تطبيقات وضع الاستعداد تحدِّد عدد حزم "المراسلة عبر السحابة الإلكترونية من Firebase" ذات الأولوية العالية التي يمكن لأحد التطبيقات استخدامها.
  • يتم تغيير حصص "المراسلة عبر السحابة الإلكترونية من Firebase" ذات الأولوية العالية بما يتناسب مع عدد الإشعارات المعروضة للمستخدم استجابةً للمراسلة "المراسلة عبر السحابة الإلكترونية من Firebase" ذات الأولوية العالية.

كما في إصدارات Android السابقة، يتم إرجاع مراسلة عبر السحابة الإلكترونية من Firebase ذات الأولوية العالية التي تتجاوز الحصة إلى الأولوية العادية. عند بدء الخدمات التي تعمل في المقدّمة (FGS) استجابةً لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase"، ننصحك بالتحقق من نتيجة RemoteMessage.getPriority() و/أو التأكّد من أنها PRIORITY_HIGH و/أو التعامل مع أي استثناءات ForegroundServiceStartNotAllowedException محتملة.

إذا كان تطبيقك لا ينشر الإشعارات دائمًا استجابةً للمراسلة عبر السحابة الإلكترونية من Firebase ذات الأولوية العالية، ننصحك بتغيير أولوية هذه الخدمة إلى عادية كي لا يتم خفض مستوى الرسائل التي تؤدي إلى إرسال إشعار إلى إصدار سابق.

الخصوصية

إذن التشغيل للإشعارات

يوفِّر Android 13 (المستوى 33) وقت تشغيل إذن إرسال الإشعارات: POST_NOTIFICATIONS يساعد هذا التغيير المستخدمين في التركيز على الإشعارات الأكثر أهمية معهم.

ننصحك بشدة باستهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث في أسرع وقت ممكن. أكبر قدر ممكن من الحصول على تأثيرات مزيد من التحكم والمرونة هذه الميزة.

مزيد من المعلومات حول أفضل الممارسات المتعلقة بأذونات التطبيقات.

إخفاء المحتوى الحسّاس من الحافظة

إذا كان تطبيقك يسمح للمستخدمين بنسخ المحتوى الحسّاس، مثل كلمات المرور أو بيانات الرصيد بطاقة البيانات، يجب إضافة علامة إلى ملف ClipData يُرجى ClipDescription قبل الاتصال بـ ClipboardManager#setPrimaryClip(). جارٍ الإضافة تمنع هذه العلامة ظهور المحتوى الحسّاس في معاينة المحتوى.

تم نسخ معاينة النص بدون الإبلاغ عن المحتوى الحسّاس.
تم نسخ معاينة النص بدون الإبلاغ عن المحتوى الحسّاس.
تم نسخ معاينة النص للإبلاغ عن المحتوى الحسّاس.
تم نسخ معاينة النص للإبلاغ عن المحتوى الحسّاس.

للإبلاغ عن محتوى حسّاس، أضِف قيمة منطقية إضافية إلى 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، بما في ذلك أداة تحرير أسلوب الإدخال الصوتي، RecognitionService وقائمة على نية الشراء واجهة برمجة التطبيقات — بدءًا من تطبيق Google.

في نظام التشغيل Android 12، حدثت التغييرات التالية:

  • تم نقل SpeechService وظيفة إلى خدمات تقنيات الكلام من قِبل Google ، والذي أصبح مزوّد SpeechService التلقائي.
  • تم نقل وظيفة "RecognitionService" إلى نظام Android. تطبيق الذكاء لدعم التعرف على الكلام على الجهاز.

للمساعدة في الحفاظ على توافق التطبيقات على الإصدار 12 من نظام Android، يمكن استخدام تطبيق Google ترامبولين لتحويل حركة المرور إلى تطبيق "خدمات تقنيات الكلام من Google". ضِمن Android 13، تمت إزالة هذا الترامبولين.

يجب أن تستخدم التطبيقات الموفّر التلقائي للجهاز لـ SpeechService بدلاً من الترميز الثابت لتطبيق معين.