Bildirim çalışma zamanında istenen izin

Android 13 (API düzeyi 33) ve sonraki sürümler, bir uygulamadan muaf olmayan (Ön Plan Hizmetleri (FGS)) bildirimleri göndermek için çalışma zamanı iznini destekler: POST_NOTIFICATIONS. Bu değişiklik, kullanıcıların kendileri için en önemli bildirimlere odaklanmasını sağlar.

Bu özelliğin sağladığı 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 düşük sürümleri hedeflemeye devam ederseniz uygulamanızın işlevi bağlamında izin isteğinde bulunma esnekliğini 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 diğer çalışma zamanı izinlerini isteme ile 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:

Aşağıdaki bölümlerde, kullanıcının gerçekleştirdiği işleme bağlı olarak uygulamanızın davranışı 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 muafiyet için uygun olmadığı sürece bildirim gönderemez. Belirli birkaç rol dışında tüm bildirim kanalları engellenir. Bu durum, kullanıcı sistem ayarlarında uygulamanızla ilgili tüm bildirimleri manuel olarak kapattığında ortaya çıkan davranışa benzer.

Dikkat: Uygulamanız 12L 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ıya bir kez daha izin verilmez:

  • 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

Kullanıcı, iletişim kutusunu hızla kaydırırsa (izin ver veya izin verme) seçeneğini belirlemezse bildirim izninin durumu değişmez.

Yeni yüklenen uygulamalar üzerindeki etkiler

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 istemeden ve kullanıcı bu izni uygulamanıza verene kadar beklemesi gerekir.

İzinler iletişim kutusunun göründüğü 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 kendi kontrolünde olur. Bu fırsatı kullanarak uygulamanın neden bu izne ihtiyacı olduğunu açıklayarak kullanıcıları izin vermeye teşvik edin.
  • Uygulamanız 12L (API düzeyi 32) veya daha düşük bir değeri hedefliyorsa uygulamanız bir bildirim kanalı oluşturduktan sonra ilk kez etkinlik başlattığında ya da bir etkinlik başlatıp ilk bildirim kanalını oluşturduğunda sistem izin iletişim kutusunu gösterir. Bu genellikle uygulama başlatma aşamasındadır.

Mevcut uygulamalarda yapılan güncellemelere etkileri

Sistem, 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 tüm uygun uygulamalara 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 istenen izin istemini görmez.

Ön izin için uygunluk

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

Kullanıcı, 12 L veya daha düşük bir sisteme sahip bir cihazda uygulamanızın bildirimlerini devre dışı bıraktıysa bu ret, cihaz Android 13 veya sonraki bir sürüme yükseltildiğinde devam eder.

Muafiyetler

Bu bölümde, bildirim izni davranışı değişikliğinden muaf tutulan bildirim grubu 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 aramaları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.

Sistem aşağıdakilerin her birini yapması halinde uygulamanızı telefon görüşmelerini kendi kendine yönetecek şekilde yapılandırmış olarak kabul eder:

  1. MANAGE_OWN_CALLS iznini beyan eder.
  2. ConnectionService arayüzünü uygular.
  3. registerPhoneAccount() numarasını arayarak cihazın telekomünikasyon sağlayıcısına kaydolur.

Uygulamanızı test etme

Uygulamanız Android 13 veya sonraki bir sürümü çalıştıran bir cihazda ilk kez kullanıldığında bildirim izninin uygulamanızı nasıl etkilediğini değerlendirebilirsiniz. Aşağıdaki Android Debug Bridge (ADB) komut grupları, test cihazınızı sıfırlamanıza gerek kalmadan kullanıcı seçimlerinin ve cihaz yükseltmelerinin en yaygın adımlarını 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 enerjiye 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
  • Kullanıcı, uygulama 12 L veya daha düşük çözünürlüğe sahip bir cihaza yüklendiğinde 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üncelleyin

İzin iletişim kutusunun ne zaman görüneceği konusunda daha fazla esneklik sağlamak için uygulamanızı Android 13 veya sonraki sürümleri hedefleyecek şekilde güncelleyin.

Bildirim izin isteminin gösterilmesini bekleyin

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 avantajlarını kendi kendilerine keşfetmek isteyebilirler. Bir kullanıcı işleminden izin istemlerini tetikleyebilirsiniz. Aşağıdaki listede, bildirim izni isteminin ne zaman gösterilmesi gerektiğine dair birkaç örnek gösterilmektedir:

  • Kullanıcı, "uyarı zili" düğmesine dokunur.
  • Kullanıcı, başka birinin sosyal medya hesabını takip etmeyi seçer.
  • Kullanıcı yemek teslimatı için bir sipariş 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ıklı orta ekranı görüntülemesi gerekmez.

Alternatif olarak, kullanıcılarınıza uygulamanızı tanıma fırsatı verdikten sonra gösterilecek bir istek ayarlayabilirsiniz. Örneğin, kullanıcı uygulamanızı üçüncü veya dördüncü kez açana kadar bekleyebilirsiniz.

Kullanıcı oturum açtıktan sonra, gezi güncellemeleriyle ilgili bildirim alması için bir davetiye alır. Kullanıcı, istiyorum düğmesine bastıktan sonra uygulama yeni izni ister. Bu, sistem iletişim kutusunun görünmesini sağlar
Şekil 1. Bildirim izni istemek için kullanıcı odaklı önerilen 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 izinleri istediğinizde bunu doğru bağlamda yapın. Böylece, bildirimlerin ne için kullanıldığını ve kullanıcının neden bildirim almayı tercih etmesi gerektiğini açıkça belirtebilirsiniz. Ö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.

Bu fırsatı kullanarak niyetlerinizin şeffaf olmasını sağlayı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. Bunun için areNotificationsEnabled() numaralı telefonu arayın.

İzni sorumlu bir şekilde kullanma

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 izinleri iptal edebilirler.