Davranış değişiklikleri: tüm uygulamalar

Android 13 platformu, uygulamanızı etkileyebilecek davranış değişikliklerini içerir. Aşağıdaki davranış değişiklikleri, targetSdkVersion sürümünden bağımsız olarak Android 13 ile çalışan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeli ve ardından uygun olduğu durumlarda, doğru şekilde desteklemek için gerekli değişiklikleri yapmalısınız.

Yalnızca Android 13'ü hedefleyen uygulamaları etkileyen davranış değişiklikleri listesini de mutlaka inceleyin.

Performans ve pil

Görev Yöneticisi

Bildirim çekmecesinin alt kısmında, arka planda çalışan uygulamaların sayısını gösteren bir düğme bulunur. Bu düğmeye bastığınızda farklı uygulamaların adlarını listeleyen bir iletişim kutusu görünür. Durdur düğmesi, her uygulamanın sağındadır
Şekil 1. Kullanıcıların devam eden ön plan hizmetleri olan uygulamaları durdurmasına olanak tanıyan Görev Yöneticisi iş akışı. Bu iş akışı yalnızca Android 13 veya sonraki sürümleri çalıştıran cihazlarda görünür.

Android 13'ten (API düzeyi 33) itibaren kullanıcılar, Şekil 1'de gösterildiği gibi devam eden ön plan hizmetleri olan uygulamaları durdurmak için bildirim çekmecesinden bir iş akışını tamamlayabilirler. Bu olanak Görev Yöneticisi olarak bilinir. Uygulamalar, kullanıcı tarafından başlatılan bu durdurmayı kaldırabilmelidir.

JobScheduler kullanarak önceden getirme işlerinin işlenmesini iyileştirme

JobScheduler, uygulamaların belirli işleri "önceden getir" (JobInfo.Builder.setPrefetch() kullanarak) olarak işaretlemesine bir yol sunar. Bu da, kullanıcı deneyimini iyileştirmek için ideal olarak bir sonraki uygulama lansmanına yakın ve o tarihten önce çalışmaları gerektiği anlamına gelir. JobScheduler geçmişte bu sinyali yalnızca önceden getirme işlerinin serbest veya fazla veriyi fırsatçı bir şekilde kullanmasına izin vermek için kullanıyordu.

Android 13 (API düzeyi 33) ve sonraki sürümlerde sistem, bir uygulamanın bir sonraki lansmanını belirlemeye çalışır ve bu tahmini önceden getirme işlerini çalıştırmak için kullanır. Uygulamalar, bir sonraki uygulama lansmanından önce yapılmasını istedikleri işlerde önceden getirme işlerini kullanmaya çalışmalıdır.

Pil Kaynağı Kullanımı

Android 13 (API düzeyi 33), sistemin cihazın pil ömrünü daha iyi yönetebilmesi için aşağıdaki yolları sağlar:

Uygulamanızı bu değişikliklerle test ederken aşağıdaki noktaları kontrol ettiğinizden emin olun:

  • Uygulamanızın, sistem uygulamanızı "kısıtlanmış" Uygulama Bekleme Paketine yerleştirdiğinde nasıl tepki verdiğini test edin. Uygulamanızı bu pakete atamak için aşağıdaki Android Debug Bridge (ADB) komutunu kullanın:

    adb shell am set-standby-bucket PACKAGE_NAME restricted
    
  • Uygulamanızın, arka planda pil kullanımı nedeniyle "kısıtlanmış" durumda olan uygulamalar için yaygın olarak geçerli olan aşağıdaki kısıtlamalara nasıl tepki verdiğini test edin:

    • Ön plan hizmetleri başlatılamıyor
    • Mevcut ön plan hizmetleri ön plandan kaldırılır
    • Alarmlar tetiklenmedi
    • İşler yürütülmüyor

    Uygulamanızı "kısıtlı" duruma getirmek için aşağıdaki ADB komutunu kullanın:

    adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND ignore
    

Yüksek Öncelikli Firebase Cloud Mesajı (FCM) Kotaları

Android 13 (API düzeyi 33), yüksek öncelikli FCM'lere yanıt olarak bildirim gösteren uygulamalar için yüksek öncelikli FCM yayınının güvenilirliğini artırmak amacıyla Firebase Cloud Messaging (FCM) kotalarını günceller. Android 13'te (API düzeyi 33) aşağıdakiler değişti:

  • Uygulama Bekleme Paketleri artık bir uygulamanın kullanabileceği yüksek öncelikli FCM sayısını belirlemez.
  • Yüksek öncelikli FCM kotaları, Yüksek Öncelikli FCM'lere yanıt olarak kullanıcıya gösterilen bildirim sayısıyla orantılı olarak ölçeklenir.

Android'in önceki sürümlerinde olduğu gibi, kotayı aşan yüksek öncelikli FCM'ler normal önceliğe düşürülür. FCM'ye yanıt olarak Ön Plan Hizmeti'ni (FGS) başlatırken RemoteMessage.getPriority() sonucunu kontrol etmenizi ve sonucun PRIORITY_HIGH olduğunu onaylamanızı ve/veya olası ForegroundServiceStartNotAllowedException istisnaları ele almanızı öneririz.

Uygulamanız Yüksek Öncelikli FCM'lere yanıt olarak her zaman bildirim yayınlamıyorsa bildirimle sonuçlanan iletilerin eski sürüme geçirilmemesi için bu FCM'lerin önceliğini normal olarak değiştirmenizi öneririz.

Gizlilik

Bildirimler için çalışma zamanı izni

Android 13 (API düzeyi 33), çalışma zamanı bildirim iznini kullanıma sunuyor: POST_NOTIFICATIONS. Bu değişiklik, kullanıcıların kendileri için en önemli bildirimlere odaklanmasına yardımcı olur.

Bu özelliğin sunduğu ek denetim ve esneklik özelliklerinden yararlanmak için en kısa sürede Android 13 veya sonraki bir sürümü hedeflemenizi önemle tavsiye ederiz.

Uygulama izinleri en iyi uygulamaları hakkında daha fazla bilgi edinin.

Hassas içeriği panoda gizleyin

Uygulamanız, kullanıcıların şifreler veya kredi kartı bilgileri gibi hassas içerikleri panoya kopyalamasına izin veriyorsa ClipboardManager#setPrimaryClip() işlevini çağırmadan önce ClipData’nın ClipDescription öğesine bir bayrak eklemeniz gerekir. Bu işaretin eklenmesi, hassas içeriğin içerik önizlemesinde görünmesini engeller.

Metin önizlemesi, hassas içerik işaretlenmeden kopyalandı
Metin önizlemesi, hassas içerik işaretlenmeden kopyalandı.
Hassas içerikleri işaretleyen metin önizlemesi kopyalandı.
Hassas içerikleri işaretleyen metin önizlemesi kopyalandı.

Hassas içerikleri işaretlemek için ClipDescription öğesine fazladan bir boole ekleyin. Hedeflenen API düzeyi ne olursa olsun tüm uygulamalar bunu yapmalıdır.


// 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)
    }
}

Yeni pano kullanıcı arayüzü hakkında daha fazla bilgi için Kopyala ve yapıştır özellik sayfasını ziyaret edin.

Güvenlik

Paylaşılan kullanıcı kimliğinden taşıma

Uygulamanız kullanımdan kaldırılan android:sharedUserId özelliğini kullanıyorsa ve artık özelliğin işlevine bağlı değilse android:sharedUserMaxSdkVersion özelliğini aşağıdaki kod snippet'inde gösterildiği gibi 32 olarak ayarlayabilirsiniz:

<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>

Bu özellik, sisteme uygulamanızın artık paylaşılan bir kullanıcı kimliğine dayalı olmadığını bildirir. Uygulamanız android:sharedUserMaxSdkVersion özelliğini beyan ederse ve Android 13 veya sonraki sürümleri çalıştıran cihazlara yeni yüklenirse android:sharedUserId öğesini hiç tanımlamamışsınız gibi davranır. Güncellenen uygulamalar mevcut paylaşılan kullanıcı kimliğini kullanmaya devam eder.

Paylaşılan kullanıcı kimlikleri, paket yöneticisi içinde belirleyici olmayan davranışlara neden olur. Paylaşılan bileşenler arasında birlikte çalışabilirliği kolaylaştırmak için uygulamanız bunun yerine hizmetler ve içerik sağlayıcılar gibi uygun iletişim mekanizmaları kullanmalıdır.

Kullanıcı deneyimi

Kapatılabilir ön plan hizmet bildirimleri

Android 13 veya sonraki sürümleri çalıştıran cihazlarda kullanıcılar varsayılan olarak ön plan hizmetleriyle ilişkili bildirimleri kapatabilir.

Temel işlevler

Konuşma hizmetinin eski kopyası uygulaması kaldırıldı

Android 13, Voice IME, RecognitionService ve amaca dayalı bir API dahil olmak üzere SpeechService uygulamasını Google uygulamasından kaldırır.

Android 12'de aşağıdaki değişiklikler gerçekleşti:

  • SpeechService işlevleri, varsayılan SpeechService sağlayıcısı olan Google Ses Hizmetleri uygulamasına taşındı.
  • RecognitionService işlevi, cihaz üzerinde konuşma tanımayı desteklemek için Android System Intelligence uygulamasına taşındı.

Google uygulaması, Android 12'de uygulama uyumluluğunu korumaya yardımcı olmak için trafiği Google Ses Hizmetleri uygulamasına yönlendirmek üzere bir trambolin kullanır. Android 13'te bu trambolin kaldırılmıştır.

Uygulamalar, SpeechService için belirli bir uygulamayı sabit kodlamak yerine cihazın varsayılan sağlayıcısını kullanmalıdır.