Bildirim çalışma zamanında istenen izin

Android 13 (API düzeyi 33) ve sonraki sürümler, uygulamalardan muaf olmayan (Ön Plan Hizmeti (FGS) dahil) bildirimleri göndermek için POST_NOTIFICATIONS çalışma zamanı iznini destekler. 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ğinden 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 düşük bir sürümü hedeflemeye devam ederseniz uygulamanızın işlevselliği bağlamında izin isteme konusunda biraz esneklik kaybedersiniz.

İzni beyan edin

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 çalışma zamanında istenen diğer izinler ile benzer bir süreci tamamlayın.

Uygulamanızın manifest dosyasında beyan etmeniz gereken izin şu kod snippet'inde görünür:

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

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

Bu iletişim kutusunda kullanıcılar aşağıdaki işlemleri gerçekleştirebilir:

Aşağıdaki bölümlerde, kullanıcının gerçekleştirdiği işlemlere 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:

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

Kullanıcı, izin verme seçeneğini belirlerse uygulamanız, muafiyete uygun olmadığı sürece bildirim gönderemez. Belirli birkaç rol dışında tüm bildirim kanalları engellenir. Bu, kullanıcı sistem ayarlarında uygulamanız için tüm bildirimleri manuel olarak kapattığında gerçekleşen davranışa benzer.

Dikkat: Uygulamanız 12 L veya daha düşük bir değeri hedefliyorsa ve kullanıcı İzin verme'ye sadece 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 bir sürümü hedefleyecek şekilde güncellemeniz gerekir.

Kullanıcı, iletişim kutusundan kaydırarak uzaklaşıyor

Kullanıcı, iletişim kutusundan kaydırarak ayrılırsa (yani izin ver ya da izin verme) seçimlerini yapmazsa bildirim izninin durumu değişmez.

Yeni yüklenen uygulamalardaki efektler

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ın bildirim göndermek için siz yeni izni istemenize ve kullanıcı bu izni uygulamanıza izin verene kadar beklemelidir.

İzinler iletişim kutusunun gösterileceğ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ğini tamamen kontrol edebilir. Bu fırsatı, uygulamanın neden bu izne ihtiyaç duyduğunu açıklamak ve kullanıcıları izin vermeye teşvik etmek için kullanın.
  • Uygulamanız 12L (API düzeyi 32) veya daha düşük bir sürümü hedefliyorsa bir bildirim kanalı oluşturmanızdan sonra veya uygulamanız bir etkinlik başlatıp ilk bildirim kanalını oluşturduktan sonra uygulamanız ilk kez bir etkinlik başlattığında sistem izin iletişim kutusunu gösterir. Bu genellikle uygulama başlatma sırasında olur.

Mevcut uygulamalarda yapılan güncellemelerin etkileri

Bildirim izniyle ilişkili kesintileri en aza indirmek amacıyla, kullanıcı cihazını Android 13 veya sonraki bir sürüme yükselttiğinde sistem, uygun uygulamalara otomatik olarak 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 bir izin istemi görmez.

Önceden izin almaya uygunluk

Uygulamanızın otomatik ön bağışa uygun olması için mevcut bir bildirim kanalının olması ve 12L veya daha düşük kapasiteli bir cihazda bildirimlerinin kullanıcı tarafından açıkça devre dışı bırakılmamış olması gerekir.

Kullanıcı, 12L veya daha düşük 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 ret işlemi devam eder.

Muafiyetler

Bu bölüm, bildirim izni davranış değişikliğinden muaf olan bildirim ve uygulama grubunu içerir. 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 bildirimler görmeye devam eder ancak bunları bildirim çekmecesinde görmez.

Medya oturumları

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

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

Uygulamanız kendini telefon aramalarını kendi kendine yönetecek şekilde 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ğıdaki işlemlerden herhangi birini yapması durumunda sistem, uygulamanızı kendi kendini yöneten telefon aramaları için kendini yapılandırmış olarak kabul eder:

  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 kaydolur.

Uygulamanızı test etme

Uygulamanız Android 13 veya sonraki bir sürüme sahip bir cihazda ilk kez kullanıldığında bildirim izninin uygulamanızı nasıl etkileyeceğini değerlendirebilirsiniz. Aşağıdaki Android Debug Bridge (ADB) komutları, test cihazınızı sıfırlamaya gerek kalmadan kullanıcı tercihleri ve cihaz yükseltmeleri ile ilgili en yaygın sıralamaları simüle etmenize olanak tanır:

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

    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 daha düşük bir sürümü çalıştıran bir cihaza yüklendiğinde kullanıcı bildirimleri etkin durumda tutar. Ardından cihaz Android 13 veya sonraki bir sürüme geçer:

    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 daha düşük bir sürüme sahip bir cihaza yüklendiğinde kullanıcı, bildirimleri manuel olarak devre dışı bırakır. Ardından cihaz Android 13 veya sonraki bir sürüme geçer:

    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

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

Bildirim izni isteminin gösterilmesini bekleyin

Kullanıcılardan herhangi bir izin vermelerini istemeden önce kendilerini uygulamanızı öğrenmelerini sağlayın.

Yeni kullanıcılar uygulamayı keşfetmek ve her bildirim isteğinin avantajlarını ilk elden fark etmek isteyebilir. Bir kullanıcı işleminden izin istemi tetikleyebilirsiniz. Aşağıdaki listede, bildirim izin istemini göstermenin uygun olduğu zamanlara dair çeşitli örnekler verilmiştir:

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

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

Alternatif olarak, kullanıcılara uygulamanızı tanıma fırsatı verdikten sonra görünecek bir istek oluşturabilirsiniz. Örneğin, kullanıcının uygulamanızı üçüncü veya dördüncü kez başlatmasını bekleyebilirsiniz.

Kullanıcı oturum açtıktan sonra gezi güncellemeleriyle ilgili
   bildirim alması için bir davetiye alır. Kullanıcı, içindeyim düğmesine bastıktan sonra uygulama yeni izni ister. Bu durumda, sistem iletişim kutusu görünür
Şekil 1. Bildirim izni istemek için önerilen kullanıcı odaklı bir iş akışıdır. Orta ekran, yalnızca shouldShowRequestPermissionRationale(), true değerini döndürürse gereklidir.

İzni bağlam içinde isteyin

Uygulamanızda bildirim izni istediğinizde, bunu doğru bağlamda yapın. Böylece, bildirimlerin ne için kullanıldığı ve kullanıcının neden izin vermeyi etkinleştirmesi gerektiği açıkça anlaşılabilir. Örneğin, bir e-posta uygulamasında her yeni e-posta için bildirim gönderme seçenekleri veya yalnızca kullanıcının tek alıcı olduğu e-postalar için bildirim gönderme seçenekleri bulunabilir.

Bu fırsatı, amaçlarınıza şeffaflık kazandırmak için kullanın. Kullanıcıların uygulamanıza bildirim izni verme olasılığı daha yüksektir.

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 hassas bir şekilde kullanın

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 istedikleri zaman izni iptal edebilirler.