Bildirim çalışma zamanında istenen izin

Android 13 (API düzeyi 33) ve sonraki sürümler, bir uygulamadan istisnasız (Ön Plan Hizmetleri (FGS) dahil) bildirimler göndermek için çalışma anında izin vermektedir: 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 en kısa sürede Android 13 veya sonraki bir sürümü hedeflemenizi önemle tavsiye ederiz. 12L (API düzeyi 32) veya daha eski sürümleri hedeflemeye devam ederseniz izini uygulamanızın işlevi bağlamında isteme konusunda esnekliğinizi bir miktar kaybedersiniz.

İzni beyan etme

Uygulamanızdan yeni bildirim izni istemek için uygulamanızı Android 13'ü hedefleyecek şekilde güncelleyin ve aşağıdaki bölümlerde gösterildiği gibi diğer çalışma zamanı izinlerini isteme ile benzer bir süreci tamamlayın.

Uygulamanızın manifest dosyasında beyan etmeniz gereken izin aşağıdaki kod snippet'inde gösterilmektedir:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

Uygulama özellikleri, izinler iletişim kutusunda kullanıcının seçimine bağlıdır

Bu iletişim kutusunda kullanıcılar aşağıdaki işlemleri yapabilir:

Aşağıdaki bölümlerde, kullanıcının gerçekleştirdiği işleme bağlı olarak uygulamanızın nasıl davranacağı açıklanmaktadır.

Kullanıcı "İzin ver"i seçer

Kullanıcı izin ver seçeneğini belirlerse uygulamanız aşağıdakileri yapabilir:

Kullanıcı "İzin verme"yi seçer

Kullanıcı İzin verme seçeneğini belirlerse uygulamanız, istisna kapsamına girmediği sürece bildirim gönderemez. Belirli birkaç rol hariç tüm bildirim kanalları engellenir. Bu durum, kullanıcı sistem ayarlarından uygulamanızla ilgili tüm bildirimleri manuel olarak devre dışı bıraktığında ortaya çıkan davranışa benzer.

Dikkat: Uygulamanız 12L veya daha eski bir sürümü hedefliyorsa ve kullanıcı İzin verme'ye bir kez bile dokunursa aşağıdakilerden biri gerçekleşene kadar kullanıcıdan tekrar izin istenmez:

  • Kullanıcı, uygulamanızı kaldırıp yeniden yükler.
  • Uygulamanızı Android 13 veya sonraki sürümleri hedefleyecek şekilde güncelleyebilirsiniz.

Kullanıcı, iletişim kutusunu kaydırarak kapatır

Kullanıcı iletişim kutusunu kaydırarak kapatırsa (yani izin ver veya izin verme'yi seçmezse) bildirim izninin durumu değişmez.

Yeni yüklenen uygulamalar üzerindeki etkiler

Bir kullanıcı, uygulamanızı Android 13 veya sonraki sürümleri çalıştıran bir cihaza yüklerse uygulamanızın bildirimleri varsayılan olarak kapalıdır. Uygulamanız, yeni izni istemeniz ve kullanıcının uygulamanıza bu izni vermesi için bildirim göndermeyi beklemelidir.

İzin iletişim kutusunun gösterildiği zaman, uygulamanızın hedef SDK sürümüne bağlıdır:

  • Uygulamanız Android 13 veya sonraki sürümleri hedefliyorsa izin iletişim kutusunun ne zaman gösterileceği tamamen uygulamanızın kontrolündedir. Bu fırsatı kullanarak kullanıcılara uygulamanın neden bu izne ihtiyacı olduğunu açıklayın ve izin vermeye teşvik edin.
  • Uygulamanız 12L (API düzeyi 32) veya daha eski sürümleri hedefliyorsa sistem, bildirim kanalı oluşturduktan sonra uygulamanız bir etkinliği ilk kez başlattığında veya uygulamanız bir etkinliği başlatıp ilk bildirim kanalını oluşturduğunda izin iletişim kutusunu gösterir. Bu genellikle uygulamanın başlatıldığı anda gerçekleşir.

Mevcut uygulamalarda yapılan güncellemeler üzerindeki etkileri

Bildirim izniyle ilgili kesintileri en aza indirmek için sistem, kullanıcı cihazını Android 13 veya sonraki bir sürüme yükselttiğinde tüm uygun uygulamalara otomatik olarak önceden izin 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.

İzin ön izni için uygunluk

Uygulamanızın otomatik ön izin için uygun olması için mevcut bir bildirim kanalına sahip olması ve 12L veya daha eski bir sürüm çalıştıran bir cihazda kullanıcı tarafından bildirimlerinin açıkça devre dışı bırakılmaması gerekir.

Kullanıcı, 12L veya önceki sürümleri çalıştıran bir cihazda uygulamanızın bildirimlerini 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 olan bildirim ve uygulama grubu yer alır. Android 13 (API düzeyi 33) veya sonraki sürümlerde kullanıcı bildirim iznini reddederse ön plan hizmetleriyle ilgili bildirimleri Görev Yöneticisi'nde görmeye devam eder ancak bildirim çekmecesinde görmez.

Medya oturumları

Medya oturumlarıyla ilgili bildirimler bu davranış değişikliğinden muaftır.

Telefon aramalarını kendi kendine yönetecek şekilde yapılandırılmış uygulamalar

Uygulamanız telefon aramalarını kendi kendine yönetecek şekilde yapılandırılmışsa Notification.CallStyle bildirim stilini kullanan bildirimler göndermesi için POST_NOTIFICATIONS iznine ihtiyacınız yoktur.

Sistem, uygulamanızın aşağıdakilerin her birini yapıyorsa kendisini telefon aramalarını kendi kendine yönetmek için yapılandırdığını düşünür:

  1. MANAGE_OWN_CALLS iznini beyan eder.
  2. ConnectionService arayüzünü uygular.
  3. registerPhoneAccount() numaralı telefonu arayarak cihazın telekom sağlayıcısına kayıt yapar.

Uygulamanızı test etme

Bildirim izninin, Android 13 veya sonraki sürümleri çalıştıran bir cihazda ilk kez kullanıldığında uygulamanızı nasıl etkilediğini değerlendirebilirsiniz. Aşağıdaki Android Debug Bridge (ADB) komutu grupları, test cihazınızı sıfırlamanız gerekmeden en yaygın kullanıcı seçimleri ve cihaz yükseltme sıralarını simüle etmenize olanak tanır:

  • Uygulama, Android 13 veya sonraki sürümleri çalıştıran bir cihaza yeni yüklendiyse:

    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
  • Uygulama, 12L veya önceki sürümlerin yüklü olduğu bir cihaza yüklendiğinde bildirimler etkin durumda kalır ve cihaz daha sonra 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, 12L veya önceki bir sürümü çalıştıran 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ükseltilir:

    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 kullanabileceğiniz çeşitli yöntemler açıklanmaktadır.

Uygulamanızın hedef SDK sürümünü güncelleme

Uygulamanızın izin iletişim kutusunun ne zaman gösterileceği konusunda daha fazla esneklik elde etmek için uygulamanızı Android 13 veya sonraki sürümleri hedefleyecek şekilde güncelleyin.

Bildirim izni istemi gösterilmesini bekleyin

Kullanıcılardan izin vermelerini istemeden önce uygulamanızla ilgili bilgi edinmelerine izin verin.

Yeni kullanıcılar uygulamayı keşfetmek ve her bildirim isteğinin avantajlarını kendileri deneyimlemek isteyebilir. Kullanıcı işlemlerinden izin istemi tetikleyebilirsiniz. Aşağıdaki listede, bildirim izni istemlerini göstermenin uygun olduğu durumlara dair birkaç örnek verilmiştir:

  • Kullanıcı bir "uyarı zili" düğmesine dokunur.
  • Kullanıcı, bir kullanıcının sosyal medya hesabını takip etmeyi seçer.
  • Kullanıcı, yemek siparişi gönderir.

Şekil 1'de, bildirim izni istemek için önerilen iş akışı gösterilmektedir. shouldShowRequestPermissionRationale() true döndürmediği sürece uygulamanızın "Bildirim alın" başlıklı metnin yer aldığı orta ekranı göstermesi gerekmez.

Alternatif olarak, kullanıcılara uygulamanızla tanışmaları için bir fırsat tanıdıktan sonra istek gösterilecek şekilde ayar yapabilirsiniz. Örneğin, kullanıcının uygulamanızı üçüncü veya dördüncü kez açmasını bekleyebilirsiniz.

Kullanıcı oturum açtıktan sonra, seyahat güncellemeleriyle ilgili bildirim almak için bir davetiye gösterilir. Kullanıcı &quot;Katılıyorum&quot; düğmesine bastıktan sonra uygulama yeni izni ister ve sistem iletişim kutusunun görünmesine neden olur
Şekil 1. Bildirim izni isteğinde bulunmak için önerilen kullanıcı odaklı iş akışı. Orta ekran yalnızca shouldShowRequestPermissionRationale() true döndürüyorsa gereklidir.

İzni bağlamda isteme

Uygulamanızda bildirim izinleri istediğinizde, bildirimlerin ne için kullanıldığının ve kullanıcının neden etkinleştirmesi gerektiğinin açıkça anlaşılması için bunu doğru bağlamda yapın. Örneğin, bir e-posta uygulaması 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 içerebilir.

Niyetinizi net bir şekilde belirtmek için bu fırsattan yararlanın. Böylece kullanıcıların uygulamanıza bildirim izni verme olasılığı artar.

Uygulamanızın bildirim gönderip gönderemediğ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. Bunun için areNotificationsEnabled() işlevini çağırın.

İzni sorumlu şekilde kullanma

Bildirim gönderme 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 diledikleri zaman izni iptal edebilirler.