Bildirim çalışma zamanında istenen izin

Android 13 (API düzeyi 33) ve sonraki sürümler çalışma zamanı izni muaf olmayan (ön plan hizmetleri (FGS) dahil) bildirimleri uygulamadan: POST_NOTIFICATIONS. Bu değişiklik, kullanıcıların en çok önem verdikleri bildirimlere odaklanmasını oluşturabilirsiniz.

En kısa sürede Android 13 veya sonraki sürümleri hedeflemenizi önemle tavsiye ederiz bu özelliğin sunduğu ek denetim ve esneklikten mümkün olduğunca yararlanabilirsiniz. özelliğini kullanabilirsiniz. 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 biraz esneklik 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.

İhtiyacınız olan izin uygulamanızın manifest dosyasında beyan edin ş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 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. Tümü belirli birkaç kanal dışında bildirim kanalları engellenir. rolleriyle birlikte çalışır. 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 bir sürümü hedefleyecek şekilde güncellemeniz gerekir.

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

Kullanıcı, ekranı kaydırarak iletişim kutusundan ayrılırsa (yani, ikisi de seçilmemiş) izin ver veya izin verme: Bildirim izninin durumu unutmayın.

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 beklemelidir - siz yeni izin isteyene kadar bildirim gönderir ve kullanıcı uygulamanıza bu izni verir.

İzinler iletişim kutusunun gösterileceği zaman, uygulamanızın hedefine bağlıdır SDK sürümü:

  • 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ı değerlendirerek 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 uygulama başlangıcında olur.

Mevcut uygulamalarda yapılan güncellemelerin 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öndermelidir. Kullanıcılar çalışma zamanında istenen izin istemini görmez.

İzin ön izni için uygunluk

Uygulamanızın otomatik ön izine uygun olması için ve bildirimleri açıkça devre dışı bırakılmamışsa, 12L veya daha düşük kapasiteli bir cihazda kullanıcı tarafından değiştirilir.

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ği. Android 13 (API düzeyi 33) veya sonraki sürümlerde kullanıcı bildirim iznini reddederse yine de bildirimle ilgili ön plan hizmetlerine Görev Yöneticisi ama bu görevleri bildirim çekmecesi.

Medya oturumları

Şununla ilgili bildirimler: medya oturumları. hariç tutmanızı öneririz.

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ı yoktur.

Sistem, uygulamanızı kendi kendini yöneten bir telefon için yapılandırılmış olarak değerlendirir işlevini çağırır.

  1. MANAGE_OWN_CALLS iznini beyan eder.
  2. Şunu uygular: ConnectionService kullanır.
  3. Şu numarayı arayarak cihazın telekom sağlayıcısına kaydedilir: registerPhoneAccount().

Uygulamanızı test etme

Aşağıdaki durumlarda bildirim izninin uygulamanızı nasıl etkileyeceğini İlk olarak Android 13 veya sonraki sürümleri çalıştıran bir cihazda kullanılır. İlgili içeriği oluşturmak için kullanılan takip ediliyor Android Debug Bridge (ADB) komut grupları, en yaygın kullanıcı tercihleri sırasını ve cihaz yükseltmelerini simüle etmenizi sağlar. sıfırlamanıza gerek kalmadan:

  • Uygulama, şu anda çalışan bir cihaza yeni yüklenmiş Android 13 veya sonraki sürümler:

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

    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

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

Bildirim izni isteminin gösterilmesini bekleyin

Kullanıcılardan herhangi bir izin vermelerini istemeden önce kendilerini tanımalarını sağlayın. nasıl sağlayabileceğini de öğreneceksiniz.

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ı "uyarı ziline" dokunur düğmesini tıklayın.
  • Kullanıcı, birinin sosyal medya hesabını takip etmeyi seçer.
  • Kullanıcı, yemek siparişi gönderir.

Şekil 1'de, bildirim isteğinde bulunmak için önerilen bir iş akışı gösterilmektedir izni gerekir. Aksi hâlde shouldShowRequestPermissionRationale() true değerini döndürürse uygulamanızın orta ekranı göstermesi gerekmez. "Bildirim alın!" başlık metnine sahip.

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üncellemelerinden haberdar olma davetiyesi alır. 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 şu durumlarda gereklidir: shouldShowRequestPermissionRationale(), true değerini döndürür.

İzni bağlam içinde isteyin

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ısı 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ö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() işlevini çağırın.

İzni sorumlu şekilde kullanma

Bildirim gönderme onayı aldıktan sonra, ilgili izni kullanmayı unutmayın. sorumluluk bilinciyle geliştiriyoruz. Kullanıcılar, uygulamanızın her gün gönderdiği bildirimlerin sayısını görebilir gönderir ve izini iptal edebilirler. istediğiniz zaman izleyebilirsiniz.