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 sürümünden bağımsız olarak Android 13 çalıştıran tüm uygulamalar için geçerlidir. Uygulamanızı test etmeli ve uygun olduğunda doğru şekilde desteklemesi için gerektiği şekilde değiştirmelisiniz.

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

Performans ve pil

Görev Yöneticisi

Bildirim çekmecesinin alt kısmında, arka planda o anda çalışan uygulamaların 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ğı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ışı tamamlayabilir. Bu ödeme Görev Yöneticisi olarak bilinir. Uygulamaların kullanıcı tarafından başlatılan bu durdurma işlemini işleyebilmesi gerekir.

JobScheduler'ı kullanarak önceden getirme işini yönetme

Job Scheduler, uygulamaların belirli işleri "önceden getirme" işleri (JobInfo.Builder.setPrefetch() kullanarak) olarak işaretlemesi için bir yol sağlar. Bu da kullanıcı deneyimini iyileştirmek için işlerin ideal olarak bir sonraki uygulama lansmanına yakın ve öncesinde çalışması gerekir. Geçmişte JobPlanr, önceden getirme işlerinin uygun bir şekilde ücretsiz veya fazla verileri kullanmasına izin vermek için yalnızca sinyali kullanıyordu.

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

Pil Kaynağı Kullanımı

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

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

  • Sistem tarafından "kısıtlanmış" Uygulama Bekleme Paketi'ne yerleştirildiğinde uygulamanızın 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ı için "kısıtlanmış" durumdaki uygulamalar için genellikle 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 tetiklenmez
    • İş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), Firebase Cloud Messaging (FCM) kotalarını güncelleyerek yüksek öncelikli FCM'lere yanıt olarak bildirim gösteren uygulamalar için yüksek öncelikli FCM tesliminin güvenilirliğini artırır. Android 13'te (API düzeyi 33) aşağıdakiler değişti:

  • Uygulama Bekleme Paketleri artık bir uygulamanın kaç tane yüksek öncelikli FCM kullanabileceğini belirleymiyor.
  • 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çeklendirilir.

Android'in önceki sürümlerinde de 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şlattığınızda RemoteMessage.getPriority() sonucunu kontrol edip sonucun PRIORITY_HIGH olduğunu doğrulamanızı ve/veya olası ForegroundServiceStartNotAllowedException istisnaları işlemenizi ö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), bir çalışma zamanı bildirim izni sunar: POST_NOTIFICATIONS. Bu değişiklik, kullanıcıların kendileri için en önemli bildirimlere odaklanmasına yardımcı olacak.

Bu özelliğin ek kontrol ve esnekliğinin etkilerini elde etmek için en kısa sürede Android 13 veya sonraki bir sürümü hedeflemenizi önemle tavsiye ederiz.

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

Hassas içeriği panodan gizle

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

Hassas içeriği işaretlemeden metin önizlemesi kopyalandı
Hassas içeriği işaretlemeden metin önizlemesi kopyalandı.
Hassas içeriği işaretleyen metin önizlemesi kopyalandı.
Hassas içeriği işaretleyen metin önizlemesi kopyalandı.

Hassas içeriği işaretlemek için ClipDescription öğesine fazladan bir boole ekleyin. Hedeflenen API düzeyinden bağımsız olarak 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 edinmek için Kopyala ve yapıştır özelliği sayfasını ziyaret edin.

Güvenlik

Paylaşılan kullanıcı kimliğinden geçiş yapın

Uygulamanız desteği sonlandırılan android:sharedUserId özelliğini kullanıyorsa ve artık özelliğin işlevselliğine dayanmıyorsa 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, sisteme uygulamanızın artık paylaşılan bir kullanıcı kimliğine güvenmediğini bildirir. Uygulamanız android:sharedUserMaxSdkVersion tanımlıysa 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 deterministik olmayan davranışa neden olur. Bunun yerine, paylaşılan bileşenlerin birlikte çalışmasını kolaylaştırmak için uygulamanız, 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 varsayılan olarak kullanıcılar ön plan hizmetleriyle ilişkili bildirimleri kapatabilir.

Temel işlevler

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

Android 13, Voice IME, RecognitionService ve amaç tabanlı 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şlevi, 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, belirli bir uygulamayı sabit kodlamak yerine, cihazın varsayılan SpeechService sağlayıcısını kullanmalıdır.