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

Android 13 platformu, uygulamanızı etkileyebilecek davranış değişiklikleri içerir. Aşağıdaki davranış değişiklikleri, targetSdkVersion bağımsız olarak Android 13'te çalıştırıldığında tüm uygulamalar için geçerlidir. Uygulamanızı test etmeli ve uygun olduğu durumlarda bunları düzgün şekilde desteklemek için gerektiği gibi değiştirmelisiniz.

Yalnızca Android 13'ü hedefleyen uygulamaları etkileyen davranış değişiklikleri listesini de incelemeyi unutmayın.

Performans ve pil

Görev Yöneticisi

Bildirim çekmecesinin en altında, şu anda arka planda çalışan uygulama sayısını gösteren bir düğme bulunur. Bu düğmeye bastığınızda farklı uygulamaların adlarının listelendiği bir iletişim kutusu görünür. Durdur düğmesi her uygulamanın sağında yer alır.
1.şekil 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ümlerin yüklü olduğu 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ı tamamlayabilir. Bu özellik, Görev Yöneticisi olarak bilinir. Uygulamalar, kullanıcı tarafından başlatılan bu durdurma işlemini yönetebilmelidir.

JobScheduler kullanarak önceden getirme işleme özelliğini iyileştirme

JobScheduler, uygulamaların belirli işleri "önceden getirme" işleri olarak işaretlemesine (JobInfo.Builder.setPrefetch() kullanarak) olanak tanır. Bu, kullanıcı deneyimini iyileştirmek için ideal olarak bir sonraki uygulama başlatma işlemine yakın ve ondan önce çalıştırılmaları gerektiği anlamına gelir. Geçmişte JobScheduler, yalnızca önceden getirme işlerinin ücretsiz veya fazla verileri fırsatçı bir şekilde kullanmasına izin vermek için sinyali kullanıyordu.

Android 13'te (API düzeyi 33) ve sonraki sürümlerde sistem, bir uygulamanın bir sonraki başlatılma zamanını belirlemeye çalışır ve bu tahmini kullanarak önceden getirme işlerini çalıştırır. Uygulamalar, bir sonraki uygulama başlatma işleminden önce yapılmasını istedikleri tüm işlemler için önceden getirme işlerini kullanmaya çalışmalıdır.

Pil Kaynak Kullanımı

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

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

  • Sistem, uygulamanızı "kısıtlanmış" uygulama bekleme grubuna yerleştirdiğinde uygulamanızın nasıl yanıt 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 plan pil kullanımı için "kısıtlanmış" durumda olan uygulamalara genellikle uygulanan aşağıdaki kısıtlamalara nasıl yanıt verdiğini test edin:

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

    Uygulamanızı bu "kısıtlanmış" 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 Message (FCM) kotaları

Android 13 (API düzeyi 33) güncellemeleri, yüksek öncelikli FCM'lere yanıt olarak bildirim gösteren uygulamalar için yüksek öncelikli FCM teslimatı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ğıdaki değişiklikler yapıldı:

  • Uygulama Bekletme Grupları artık bir uygulamanın kaç tane yüksek öncelikli FCM kullanabileceğini belirlemiyor.
  • Sistem artık, bildirimle sonuçlanmayan yüksek öncelikli mesajları tutarlı bir şekilde gönderen bir uygulama algılarsa yüksek öncelikli mesajların önceliğini düşürüyor.

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

Uygulamanız her zaman yüksek öncelikli FCM'lere yanıt olarak bildirim yayınlamıyorsa bildirimle sonuçlanan iletilerin önceliğinin düşürülmemesi için bu FCM'lerin önceliğini normal olarak değiştirmenizi öneririz.

Gizlilik

Bildirimler için çalışma zamanında istenen izin

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

Bu özelliğin ek kontrol ve esneklik avantajlarından yararlanmak için mümkün olan en kısa sürede Android 13 veya sonraki sürümleri hedeflemenizi önemle tavsiye ederiz.

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

Panodaki hassas içeriği gizleme

Uygulamanız, kullanıcıların şifre 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 işaret eklemeniz gerekir. Bu işareti eklemek, hassas içeriklerin içerik önizlemesinde görünmesini engeller.

Hassas içerik işaretlenmeden kopyalanan metnin önizlemesi
Hassas içerik işaretlenmeden kopyalanan metnin önizlemesi.
Kopyalanan metin önizlemesinde hassas içerik işaretleniyor.
Kopyalanan metin önizlemesinde hassas içerik işaretleniyor.

Hassas içeriği işaretlemek için ClipDescription öğesine bir boolean ekstra ekleyin. Hedeflenen API düzeyinden bağımsız olarak tüm uygulamalar bu işlemi 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 edinmek için Kopyalama ve yapıştırma özellik sayfasını ziyaret edin.

Güvenlik

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

Uygulamanız, desteği sonlandırılan android:sharedUserId özelliğini kullanıyorsa ve artık bu özelliğin işlevselliğine bağlı değilse aşağıdaki kod snippet'inde gösterildiği gibi android:sharedUserMaxSdkVersion özelliğini 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, uygulamanızın artık paylaşılan bir kullanıcı kimliğine bağlı olmadığını sisteme bildirir. Uygulamanız android:sharedUserMaxSdkVersion beyan ediyorsa ve Android 13 veya sonraki sürümleri çalıştıran cihazlara yeni yükleniyorsa uygulamanız, android:sharedUserId'ı 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öneticisinde deterministik olmayan davranışlara neden olur. Uygulamanız, paylaşılan bileşenler arasında birlikte çalışabilirliği kolaylaştırmak için bunun yerine hizmetler ve içerik sağlayıcılar gibi uygun iletişim mekanizmalarını kullanmalıdır.

Kullanıcı deneyimi

Kapatılabilir ön plan hizmeti bildirimleri

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

Temel işlevler

Konuşma hizmeti uygulamasının eski kopyası kaldırıldı

Android 13, Google uygulamasından SpeechService uygulamasını (Ses IME'si, RecognitionService ve amaç tabanlı API dahil) kaldırıyor.

Android 12'de aşağıdaki değişiklikler yapıldı:

  • SpeechService işlevleri, varsayılan SpeechService sağlayıcı haline gelen 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ı.

Android 12'de uygulama uyumluluğunu korumak için Google uygulaması, trafiği Google Konuşma Hizmetleri uygulamasına yönlendirmek üzere bir trambolin kullanır. Android 13'te bu trambolin kaldırılır.

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