Android 13'teki bildirimler, önceki Android sürümlerinde kullanılan devre dışı bırakma modelinden farklı olarak etkinleştirme modelini kullanır. Android 13'te tüm uygulamaların bildirim istemi göndermeden önce kullanıcılardan izin istemesi gerekir. Bu model, bildirim kesintilerini azaltmaya, bilgi yükünü en aza indirmeye ve kullanıcıların kendileri için önemli olan bildirimleri kontrol etmelerine yardımcı olur. Kullanıcıların kaydolma modelini desteklemek için OEM'lerin bildirim ve çalışma zamanı izni sistemlerinde değişiklik yapması gerekir.
Bu sayfada, OEM'lerin bu değişikliği desteklemek için neler uygulaması gerektiği ve uygulamanın nasıl doğrulanacağı açıklanmaktadır.
Etkinleştirme bildirimleriyle ilgili değişiklikleri uygulama
Android 13'ten itibaren uygulamaların bildirim gönderme amacını bildirmesi gerekir. Bu amaçla, bildirim göndermeden önce sistemden android.permission.POST_NOTIFICATION
çalışma zamanı izni istemeleri gerekir.
Android 13 ve sonraki sürümlerde, bir uygulamanın kullanıcıya bildirim gönderip gönderemeyeceğini belirleyen ayar izin sisteminde saklanır. Android 13'ten önce bu ayar bildirim sisteminde depolanıyordu. Bu nedenle, OEM'lerin bir uygulamanın bildirim göndermesine izin verilip verilmediğiyle ilgili mevcut bildirim verilerini bildirim sisteminden çalışma zamanı izni sistemine taşıması gerekir. Ayrıca OEM'ler, uygulama geliştiricilere bu verileri sunan bildirim sistemindeki mevcut API'leri de korumalıdır.
Bildirim ve izin sistemlerindeki değişiklikler, kullanıcı bildirim davranışının izin verme modeline dayanır ve Uygulama yönergeleri bölümünde açıklanır.
Etkinleştirme modelinde kullanıcı bildirimlerinin davranışı
Aşağıdaki tabloda, Android 13 çalıştıran bir cihazdaki çeşitli uygulama sürümlerinin bildirim davranışı gösterilmektedir:
Android 13 yüklü cihaz | Android 13 veya sonraki sürümleri hedefleyen uygulamalar | Android 13'ten önceki sürümleri hedefleyen uygulamalar |
---|---|---|
Yeni yükleme | Bildirimler, uygulama tarafından istenene kadar engellenir.
Uygulamalar, izin isteme zamanını kontrol eder. |
Bildirimler, işletim sistemi tarafından istenene kadar engellenir.
İzin, uygulama ilk kez çalıştırıldığında istenir. |
Mevcut uygulama (yükseltme) | Uygulama tarafından istenene kadar bildirimlere izin verilir.
Geçici izin, uygulama ilk uygun çalıştırmada izin isteyene kadar verilir. |
Bildirimlere, işletim sistemi tarafından istenene kadar izin verilir.
Uygulama ilk kez çalıştırılana kadar geçici izin verilir. |
Uygulama yönergeleri
Referans uygulama için bildirim hizmeti, izin hizmeti ve politika hizmeti'ne bakın. Varsayılan izin işleyicileri için istisnaları uygulamak üzere Çalışma Zamanı İzinleri başlıklı makaleyi inceleyin.
Uygulama sırasında, Android 13 veya daha düşük SDK'ları hedefleyen uygulamalarda kullanıcı bildirimi davranışıyla ilgili aşağıdaki yönergeleri kullanın:
- Android 13 cihazlara yeni yüklenen uygulamalar, kullanıcı bir izin istemini onaylamadan bildirim göndermemelidir.
- Uygulama, Android 13 ve sonraki sürümleri hedefliyorsa kullanıcı izni isteme zamanını ve isteyip istemeyeceğini kontrol ettiğinden, uygulama tarafından istenene kadar bildirimler engellenmelidir.
- Uygulama, Android 13'ten daha eski sürümleri hedefliyorsa işletim sistemi tarafından istenene kadar bildirimler engellenmelidir. İşletim sistemi, uygulamanın ilk çalıştırılmasında izin istemini göstermelidir.
Android 13'e yükseltilmeden önce cihazda bulunan veya yedekleme ve geri yükleme yoluyla geri yüklenen tüm uygulamaların, kullanıcı bu uygulamadan bir etkinliği ilk kez başlatana kadar bildirim göndermesine izin verilmelidir.
Android 13 ve sonraki sürümlerin SDK'sını hedefleyen uygulamalarda, kullanıcı daha önce bu uygulamanın bildirim ayarlarını uygulama veya
NotificationChannel
düzeyinde özelleştirmediyse geçici izin verme işlemini iptal edin. Uygulamaların bildirim göndermeye devam edebilmesi için kullanıcıdan izin istemesi gerekir.Android 13'ü hedefleyen ve yükseltilmiş bir uygulamada geçici yükseltme izni aracılığıyla bildirim izni yoksa ve kullanıcı uygulamayı en az bir kez başlattıysa uygulamanın başka ön plan hizmetleri çalıştırmasına izin verilmeden önce bildirim izni istemi göstermesi gerekir.
Android 13'ten düşük bir hedef SDK sürümüne sahip uygulamalarda, uygulama en az bir
NotificationChannel
oluşturduktan sonraki ilk etkinlik başlatma işlemini engelleyin. Böylece, kullanıcıya uygulamadan bildirim almak isteyip istemediğini soran bir izin istemi gösterilir.Bir kullanıcı, yükseltme yapılan cihazdaki bir uygulama veya cihaza geri yüklenen bir yedekleme için daha önce uygulama ya da
NotificationChannel
düzeyinde bildirim ayarlarını özelleştirdiyse uygulama düzeyindeki ayar,FLAG_PERMISSION_USER_SET
işaretiyle birlikte izin sistemine taşınmalıdır. Uygulama özellikle istemediği sürece kullanıcıya başka bildirim izni istemi gösterilmemelidir.
Yedekleme ve geri yükleme, Android 13 cihaz ile daha eski bir işletim sistemi sürümüne sahip cihaz arasında hem ileri hem de geri uyumlu olmalıdır. Android 13 cihazda oluşturulan yedekleme verileri daha eski bir işletim sistemi sürümüne, daha eski bir işletim sistemi sürümündeki yedekleme verileri ise Android 13 cihazına geri yüklenmelidir.
Devam eden medya oynatma ile ilişkili medya bildirimleri, bildirim izninden muaf olmalıdır.
Bildirim ve izin sistemlerinde yapılan değişiklikleri doğrulama
Uygulamayı doğrulamak için aşağıdaki testleri çalıştırın:
PreferencesHelperTest
,NotificationManagerServiceTest
içinde belirtilen birim testleri.Yükseltmeleri, yedekleme ve geri yüklemeyi test eden tüm manuel testler.
Bildirim gönderen tüm CTS İzin ve Bildirim sistemi testleri. Bu testlerden bazıları cts/tests/tests/permission/, NotificationManagerTest.java ve cts/tests/tests/notificationlegacy/ konumunda bulunur.