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 ve bu özelliğin sağladığı ek denetim ve esneklikten mümkün olduğunca yararlanabilirsiniz. özelliğini kullanabilirsiniz. 12L (API düzeyi 32) veya daha düşük bir sürümü hedeflemeye devam ederseniz Uygulamanızın kullanımı bağlamında izin isteme ile ilgili esnekliği kaybetmek işlevsellik.

İzni beyan edin

Uygulamanızdan yeni bildirim izni istemek için uygulamanızı şu şekilde güncelleyin: Android 13'ü hedefler ve çalışma zamanında istenen diğer izinleri, görebilirsiniz.

İ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, 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, uygulamanızın hangi işleme göre gösterir.

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öndermez. Tümü belirli birkaç kanal dışında bildirim kanalları engellenir. rolleri. 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 altını hedefliyorsa Kullanıcı İzin verme'ye dokunduğunda yalnızca bir kez bile olsa bunu yapması istenmez. aşağıdakilerden biri gerçekleşene kadar tekrarlayın:

  • 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 kutusunu kaydırarak kapatırsa (yani izin ver veya izin verme'yi seçmezse) bildirim izninin durumu değişmez.

Yeni yüklenen uygulamalardaki efektler

Kullanıcı, uygulamanızı Android 13 çalıştıran bir cihaza yüklerse veya daha yüksek bir değer olduğunda, 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 saat, uygulamanızın hedefine bağlıdır SDK sürümü:

  • Uygulamanız Android 13 veya sonraki bir sürümü hedefliyorsa tamamlandı. izin iletişim kutusunun ne zaman görüntüleneceğini kontrol edebilir. Bu fırsatı, kullanıcılara uygulamanın neden bu izne ihtiyaç duyduğunu açıklamak için kullanın. teşvik etmelisiniz.
  • Uygulamanız 12L (API düzeyi 32) veya daha düşük bir sürümü hedefliyorsa sistem Uygulamanız sizden sonra ilk kez bir etkinlik başlattığında görüntülenen izin iletişim kutusu bildirim kanalı oluşturduğunuzda veya Uygulama bir etkinlik başlatır ve ilk bildirim kanalını oluşturur. Bu uygulama başlangıcında olur.

Mevcut uygulamalarda yapılan güncellemelerin etkileri

Bildirim izniyle ilgili kesintileri en aza indirmek için otomatik olarak tüm kullanıcılara Kullanıcı, cihazını yeni sürüme geçirdiğinde uygun uygulamalara sahip olabilir. Android 13 veya sonraki sürümler. 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.

Önceden izin almaya 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ı, çalışan bir cihazda uygulamanızın bildirimlerini devre dışı bıraktıysa 12L veya daha düşükse bu ret, cihaz Android 13 veya sonraki sürümlere yükseltmeler.

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 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 başına 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ı 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ıralarını ve cihaz yükseltmelerini simüle etmenizi sağlar. sıfırlamanıza gerek kalmadan:

  • 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 bir cihazda yüklü olduğunda kullanıcı bildirimleri etkin tutar 12L veya daha düşük bir şarja sahip cihaz, ardından Android 13 veya sonraki bir sürüme geçme:

    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 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 bildirimi kullanmanın çeşitli yolları açıklanmaktadır. en etkili şekilde kullanmanız gerekir.

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 özelliklerin farkına varmak isteyebilir. faydalarını görebilirsiniz. Şunları yapabilirsiniz: izin istemini tetikleyin kullanıcı işleminden yararlanabilir. Aşağıdaki listede, bir reklamverenin bildirim izin istemini göstermenin vakti geldi:

  • 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 verir.

Ş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 görüntüleme isteğinde bulunduktan sonra bir istek de hakkında bilgi sahibi olması gerekir. Örneğin, web sitesi kullanıcılarının Kullanıcı uygulamanızı üçüncü veya dördüncü kez başlattığında.

Kullanıcı oturum açtıktan sonra,
   gezi güncellemeleriyle ilgili bildirim almak için davetiye gönderin. Kullanıcı
   Bendeyim düğmesi. Uygulama yeni izni istiyor. Bu da sistemin
   iletişim kutusu
Şekil 1. İstekte bulunmak için önerilen kullanıcı odaklı bir iş akışı bildirim iznini devre dışı bırakabilirsiniz. Orta ekran yalnızca şu durumlarda gereklidir: shouldShowRequestPermissionRationale(), true değerini döndürür.

İzni bağlam içinde isteyin

Uygulamanızda bildirim izni istediğinizde bunu doğru Böylece, bildirimlerin ne için kullanıldığı açıkça anlaşılır ve kullanıcının neden katılması gerektiği. Ö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 bildirim almayı etkinleştirip etkinleştirmediğini onaylayın bildirimler alın. Bunun için şu numarayı arayın: areNotificationsEnabled().

İzni hassas bir şekilde kullanın

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.