Bildirim çalışma zamanında istenen izin

Android 13 (API düzeyi 33) ve sonraki sürümlerde, bir uygulamadan muaf olmayan (ön plan hizmetleri (FGS) dahil) bildirimler göndermek için çalışma zamanı izni desteklenir: POST_NOTIFICATIONS. Bu değişiklik, kullanıcıların kendileri için en önemli olan bildirimlere odaklanmasına yardımcı olur.

Bu özelliğin sunduğu ek kontrol ve esneklikten yararlanmak için mümkün olan en kısa sürede Android 13 veya sonraki sürümleri hedeflemenizi önemle tavsiye ederiz. 12L (API düzeyi 32) veya önceki sürümleri hedeflemeye devam ederseniz uygulamanızın işlevselliği bağlamında izin isteme konusunda esnekliğinizi 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 istemeye 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_NOTIFICATI>ONS&q<uot;/
    appli>cation ...
      <  ...
    /ap<plication>
/manifest

Uygulama özellikleri, izin iletişim kutusunda kullanıcının yaptığı seçime 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 davrandığı açıklanmaktadır.

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

Kullanıcı izin ver seçeneğini belirlerse uygulamanız şunları 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, kullanıcının sistem ayarlarında uygulamanızla ilgili tüm bildirimleri manuel olarak devre dışı bıraktığında oluşan davranışa benzer.

Dikkat: Uygulamanız 12L veya daha eski bir sürümü hedefliyorsa ve kullanıcı İzin verme'ye bir kez bile dokunsa aşağıdaki durumlardan biri gerçekleşene kadar tekrar istem almaz:

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

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

Kullanıcı iletişim kutusunu kaydırarak kapatırsa (yani izin ver veya izin verme'yi seçmezse) bildirim izni 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, yeni izni isteyene ve kullanıcı bu izni uygulamanıza verene kadar 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 konusunda tam kontrole sahiptir. Bu fırsatı kullanarak kullanıcılara uygulamanın neden bu izne ihtiyacı olduğunu açıklayın ve izni vermelerini sağlayın.
  • Uygulamanız 12L (API düzeyi 32) veya önceki sürümleri hedefliyorsa sistem, bildirim kanalı oluşturduktan sonra uygulamanızın bir etkinliği ilk kez başlattığında ya da uygulamanız bir etkinliği başlatıp ilk bildirim kanalını oluşturduğunda izin iletişim kutusunu gösterir. Bu genellikle uygulama başlatılırken gerçekleşir.

Mevcut uygulamalarda yapılan güncellemeler üzerindeki etkiler

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ı izni istemi görmez.

İzin önceden verme için uygunluk

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

Kullanıcı, 12L veya önceki sürümlerin yüklü olduğu bir cihazda uygulamanızın bildirimlerini devre dışı bıraktıysa cihaz Android 13 veya sonraki sürümlere yükseltildiğinde bu ret durumu devam eder.

Muafiyetler

Bu bölümde, bildirim izni davranış değişikliğinden muaf olan bildirim ve uygulamalar 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 görüşmelerini kendi kendine yönetmek üzere yapılandırılmış uygulamalar

Uygulamanız telefon görüşmelerini kendi kendine yönetecek şekilde yapılandırılıyorsa uygulamanızın Notification.CallStyle bildirim stilini kullanan bildirimler göndermesi için POST_NOTIFICATIONS izni gerekmez.

Aşağıdakilerin tümünü yapıyorsa sistem, uygulamanızın telefon aramalarını kendi kendine yönetmek üzere yapılandırıldığını kabul eder:

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

Uygulamanızı test etme

Bildirim izninin, Android 13 veya sonraki sürümlerin yüklü olduğu bir cihazda ilk kez kullanıldığında uygulamanızı nasıl etkilediğini değerlendirebilirsiniz. Aşağıdaki Android Debug Bridge (ADB) komutları, test cihazınızı sıfırlamanıza gerek kalmadan en yaygın kullanıcı tercihleri ve cihaz yükseltme dizilerini simüle etmenize olanak tanır:

  • Uygulama, Android 13 veya sonraki sürümlerin yüklü olduğu 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
  • Kullanıcı, uygulamayı 12L veya önceki sürümlerin yüklü olduğu bir cihaza yüklediğinde bildirimleri etkin tutar, ardından cihaz Android 13 veya sonraki sürümlere 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 sürümlerin yüklü olduğu bir cihaza kurulduğunda kullanıcı bildirimleri manuel olarak devre dışı bırakırsa ve 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 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ö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 izni istemini göstermek için bekleme

Kullanıcılardan herhangi bir izin vermelerini istemeden önce uygulamanızla ilgili bilgi edinmelerini sağlayın.

Yeni kullanıcılar uygulamayı keşfetmek ve her bir bildirim isteğinin avantajlarını ilk elden görmek isteyebilir. Kullanıcı işleminden izin istemi tetikleyebilirsiniz. Aşağıdaki listede, bildirim izni isteminin ne zaman gösterilebileceğine dair birkaç örnek verilmiştir:

  • Kullanıcı, "uyarı zili" düğmesine dokunur.
  • Kullanıcı, birinin sosyal medya hesabını takip etmeyi seçerse
  • Kullanıcı, yemek teslimatı için sipariş 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, başlık metni "Bildirim alın!" olan orta ekranı göstermesi gerekmez.

Alternatif olarak, kullanıcılara uygulamanızı tanıma fırsatı verdikten sonra görünme isteği ayarlayabilirsiniz. Ö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üncellemeleri hakkında bildirim almak için davet edilir. 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.
1. şekil. Bildirim izni istemek için kullanıcı odaklı önerilen iş akışı. Orta ekran yalnızca shouldShowRequestPermissionRationale(), true değerini döndürüyorsa gereklidir.

İzni bağlam içinde isteyin

Uygulamanızda bildirim izni isterken doğru bağlamda isteyin. Böylece, bildirimlerin ne için kullanıldığı ve kullanıcının neden bildirimleri etkinleştirmesi gerektiği açıkça anlaşılır. Örneğin, bir e-posta uygulaması her yeni e-posta için veya yalnızca kullanıcının tek alıcı olduğu e-postalar için bildirim gönderme seçenekleri sunabilir.

Bu fırsatı, niyetleriniz konusunda şeffaf olmak için kullanı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. Bunu yapmak için areNotificationsEnabled() işlevini çağırın.

İzni sorumlu bir şekilde kullanın

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