Android 13 (API düzeyi 33) ve sonraki sürümler, bir uygulamadan muaf olmayan (Ön Plan Hizmeti (FGS)) bildirimler göndermek için bir çalışma zamanı iznini destekler: 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 esneklikten yararlanmak için mümkün olan en kısa sürede Android 13 veya sonraki bir sürümü hedeflemenizi önemle tavsiye ederiz. 12L (API düzeyi 32) veya daha düşük sürümleri hedeflemeye devam ederseniz uygulamanızın işlevselliği bağlamında izin istediğinizde biraz esneklik kaybedersiniz.
İzni beyan edin
Uygulamanızdan yeni bildirim iznini istemek için uygulamanızı Android 13'ü hedefleyecek şekilde güncelleyin ve aşağıdaki bölümlerde gösterilen diğer çalışma zamanında istenen izinleri isteme işlemine benzer bir işlemi tamamlayın.
Uygulamanızın manifest dosyasında beyan etmeniz gereken izin, aşağıdaki kod snippet'inde görünür:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Uygulama özellikleri, izinler iletişim kutusundaki kullanıcı seçimine bağlıdır
Bu iletişim kutusunda kullanıcılar aşağıdaki işlemleri yapabilir:
- İzin ver'i seçin
- İzin verme'yi seçin
- İki düğmeye de basmadan iletişim kutusundan uzağa kaydırın
Aşağıdaki bölümlerde, kullanıcının gerçekleştirdiği işleme bağlı olarak uygulamanızın nasıl davrandığı açıklanmaktadır.
Kullanıcı "İzin ver"i seçer
Kullanıcı izin ver seçeneğini belirlerse uygulamanız aşağıdakileri yapabilir:
- Bildirim gönder'e dokunun. Tüm bildirim kanallarına izin verilir.
- Ön plan hizmetleriyle ilgili bildirimler yayınlayın. Bu bildirimler bildirim çekmecesinde görünür.
Kullanıcı "İzin verme"yi seçer
Kullanıcı izin verme seçeneğini belirlerse uygulamanız muafiyet için uygun olmadığı sürece bildirim gönderemez. Birkaç belirli rol dışındaki tüm bildirim kanalları engellenir. Bu durum, kullanıcı sistem ayarlarında uygulamanıza ait tüm bildirimleri manuel olarak kapattığında ortaya çıkan davranışa benzer.
Dikkat: Uygulamanız 12 L veya daha düşük bir değeri hedefliyorsa ve kullanıcı yalnızca bir kez bile İzin verme'ye dokunursa aşağıdakilerden biri gerçekleşene kadar kullanıcıdan tekrar sorulmaz:
- Kullanıcı uygulamanızı kaldırıp yeniden yükler.
- Uygulamanızı, Android 13 veya sonraki bir sürümü hedefleyecek şekilde güncellemeniz gerekir.
Kullanıcı hızlıca iletişim kutusunu kapatarak uzaklaştırıyor
Kullanıcı, iletişim kutusunu hızlıca kaydırırsa (izin ver veya izin verme'yi seçmez) bildirim izninin durumu değişmez.
Yeni yüklenen uygulamalar üzerindeki efektler
Bir kullanıcı Android 13 veya sonraki sürümleri çalıştıran bir cihaza uygulamanızı yüklerse uygulamanızın bildirimleri varsayılan olarak kapalıdır. Uygulamanızın, bildirim göndermek için siz yeni izin isteyene ve kullanıcı bu izni uygulamanıza verene kadar beklemesi gerekir.
İzinler iletişim kutusunun gösterileceği saat, uygulamanızın hedef SDK sürümüne bağlıdır:
- Uygulamanız Android 13 veya sonraki bir sürümü hedefliyorsa izin iletişim kutusunun ne zaman gösterileceği tamamen kontrolüne sahiptir. Bu fırsatı kullanarak kullanıcılara uygulamanın neden bu izne ihtiyacı olduğunu açıklayın ve onları izni vermeye teşvik edin.
- Uygulamanız 12L (API düzeyi 32) veya daha düşük bir sürümü hedefliyorsa uygulamanız bir bildirim kanalı oluşturmanızdan sonra ilk kez etkinlik başlattığında ya da uygulamanız bir etkinlik başlatıp ilk bildirim kanalını oluşturduğunda sistem izin iletişim kutusunu gösterir. Bu sorun genellikle uygulama başlatılırken gerçekleşir.
Mevcut uygulamalara yapılan güncellemeler üzerindeki etkiler
Kullanıcı cihazını Android 13 veya sonraki bir sürüme yükselttiğinde sistem, bildirim izniyle ilişkili kesintileri en aza indirmek için uygun uygulamalara yönelik izni otomatik olarak önceden verir. Başka bir deyişle, bu uygulamalar kullanıcılara bildirim göndermeye devam edebilir ve kullanıcılar çalışma zamanında izin istemi görmez.
Ön izin için uygunluk
Uygulamanızın otomatik önceden verme işlemine uygun olması için uygulamanızın mevcut bir bildirim kanalının olması ve 12 L veya daha düşük çözünürlüğe sahip bir cihazda kullanıcı tarafından bildirimlerinin açıkça devre dışı bırakılmaması gerekir.
Kullanıcı 12 L veya daha düşük kapasiteli bir cihazda uygulamanızla ilgili bildirimleri devre dışı bıraktıysa cihaz Android 13 veya sonraki bir sürüme yükseltildiğinde bu ret devam eder.
Muafiyetler
Bu bölümde, bildirim izni davranışı değişikliğinden muaf tutulan bildirimler ve uygulamalar yer alır. Android 13 (API düzeyi 33) veya sonraki sürümlerde kullanıcı, bildirim iznini reddederse Görev Yöneticisi'nde ön plan hizmetleriyle ilgili bildirimleri görmeye devam eder ancak bildirim çekmecesinde görmez.
Medya oturumları
Medya oturumları ile ilgili bildirimler bu davranış değişikliğinden muaftır.
Telefon çağrılarını kendi kendine yönetecek şekilde yapılandırılan uygulamalar
Uygulamanız, telefon çağrılarını kendi kendine yönetecek şekilde kendisini yapılandırıyorsa uygulamanızın Notification.CallStyle
bildirim stilini kullanan bildirimler göndermesi için POST_NOTIFICATIONS
iznine ihtiyacınız yoktur.
Aşağıdakilerin her birini yapması durumunda sistem, uygulamanızı telefon çağrılarını kendi kendine yönetecek şekilde yapılandırmış olarak kabul eder:
MANAGE_OWN_CALLS
iznini beyan eder.ConnectionService
arayüzünü uygular.registerPhoneAccount()
numaralı telefonu arayarak cihazın telekomünikasyon sağlayıcısına kaydolur.
Uygulamanızı test etme
Uygulamanızı, Android 13 veya sonraki sürümleri çalıştıran bir cihazda ilk kez kullanıldığında bildirim izninin nasıl etkilediğini değerlendirebilirsiniz. Aşağıdaki Android Debug Bridge (ADB) komutları, test cihazınızı sıfırlamaya gerek kalmadan en yaygın kullanıcı seçimlerini ve cihaz yükseltmelerini simüle etmenizi sağlar:
Uygulama, Android 13 veya sonraki sürümleri çalıştıran bir cihaza yeni yüklendiğinde:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
Kullanıcı, uygulama 12 L veya daha düşük performansa sahip bir cihaza yüklendiğinde bildirimleri etkin tutar, ardından cihaz Android 13 veya sonraki bir sürüme yükseltilirse:
adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
Uygulama 12 L veya daha düşük performansa sahip bir cihaza yüklendiğinde kullanıcı, bildirimleri manuel olarak devre dışı bırakır ve ardından cihaz Android 13 veya sonraki bir sürüme yükseltilirse:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
En iyi uygulamalar
Bu bölümde, yeni bildirim iznini uygulamanızda en etkili şekilde kullanmanın çeşitli yolları açıklanmaktadır.
Uygulamanızın hedef SDK sürümünü güncelleyin
İzin iletişim kutusunun ne zaman gösterileceği konusunda uygulamanıza daha fazla esneklik kazandırmak için uygulamanızı Android 13 veya sonraki sürümleri hedefleyecek şekilde güncelleyin.
Bildirim izin isteminin gösterilmesini bekle
Kullanıcılardan herhangi bir izin vermelerini istemeden önce uygulamanızı tanımalarına olanak tanıyın.
Yeni kullanıcılar uygulamayı keşfetmek ve her bir bildirim isteğinin faydalarını ilk elden öğrenmek isteyebilir. Bir kullanıcı işleminden izin istemini tetikleyebilirsiniz. Aşağıdaki listede, bildirim izin istemini göstermenin uygun olduğu durumlara dair birkaç örnek gösterilmektedir:
- Kullanıcı, "uyarı zili" düğmesine dokunur.
- Kullanıcı, başka bir kişinin sosyal medya hesabını takip etmeyi seçer.
- Kullanıcı yemek siparişi gönderir.
Şekil 1'de bildirim izni istemek için önerilen bir iş akışı gösterilmektedir. shouldShowRequestPermissionRationale()
true
değerini döndürmezse uygulamanızın ortadaki ekranı, yani "Bildirim alın" başlık metnini içeren orta ekranı görüntülemesi gerekmez.
Alternatif olarak, kullanıcılara uygulamanızı tanımaları için bir şans verdikten sonra görünecek bir istek de ayarlayabilirsiniz. Örneğin, kullanıcının uygulamanızı üçüncü veya dördüncü kez açmasını bekleyebilirsiniz.
İzni bağlam içinde isteyin
Uygulamanızda bildirim izinleri istediğinizde bunu doğru bağlamda yapın. Böylece bildirimlerin ne için kullanıldığı ve kullanıcının uygulamayı neden etkinleştirmesi gerektiği açıkça anlaşılır. Örneğin, bir e-posta uygulamasında her yeni e-posta veya yalnızca kullanıcının tek alıcı olduğu e-postalar için bildirim gönderme seçenekleri bulunabilir.
Niyetlerinizi şeffaf bir şekilde açıklamak için bu fırsatı kullanın. Böylece kullanıcıların uygulamanıza bildirim izni verme olasılığı artar.
Uygulamanızın bildirim gönderip gönderemeyeceğini kontrol etme
Uygulamanız bildirim göndermeden önce, kullanıcının uygulamanız için bildirimleri etkinleştirip etkinleştirmediğini onaylayın. Bunu yapmak için areNotificationsEnabled()
numaralı telefonu arayın.
İzni sorumlu bir şekilde kullanın
Bildirim göndermek için onay aldıktan sonra izni sorumlu bir şekilde kullanmayı unutmayın. Kullanıcılar, uygulamanızın gönderdiği günlük bildirim sayısını görebilir ve istedikleri zaman bu izni iptal edebilirler.