Bildirimler için köprü seçenekleri

Varsayılan olarak, bildirimler telefondaki bir uygulamadan eşlenmiş tüm kol saatlerine köprülenir veya paylaşılır. Bir kol saati uygulaması oluşturursanız ve uygulamanız eşlenmiş bir telefonda da bulunuyorsa kullanıcılar, biri telefon uygulaması tarafından oluşturulup köprülenmiş, diğeri ise kol saati uygulaması tarafından oluşturulmuş olmak üzere iki bildirim alabilir. Wear OS, bildirimlerin nasıl ve ne zaman köprüleneceğini kontrol etmenizi sağlayan özellikler içerir.

Yinelenen bildirimleri önleme

Firebase Cloud Messaging gibi harici bir kaynaktan bildirim oluşturduğunuzda mobil uygulamanız ve giyilebilir cihaz uygulamanız, saatte kendi bildirimlerini gösterebilir. Bu tür bir yinelemeyi önlemek için giyilebilir cihaz uygulamanızda köprülemeyi programatik olarak devre dışı bırakın.

Köprü etiketlerini kullanma

Giyilebilir uygulamanız yüklendiğinde mobil uygulamanızda oluşturulan bildirimlerin bir kısmını kol saatine aktarmak istiyorsanız köprü etiketleri ayarlayın.

Aşağıdaki kod örneğinde gösterildiği gibi, setBridgeTag(String) yöntemini kullanarak bir bildirime köprü etiketi ayarlayın:

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(
        NotificationCompat.WearableExtender()
            .setBridgeTag("tagOne")
    )
    .build()

Köprü modunu devre dışı bırakma

Köprülemeyi bazı bildirimler veya tüm bildirimler için devre dışı bırakabilirsiniz. Köprü oluşturmayı seçerek devre dışı bırakmanızı öneririz.

Bazı bildirimler için köprülemeyi devre dışı bırakma

Köprü oluşturmayı dinamik olarak devre dışı bırakabilir ve isteğe bağlı olarak bazı bildirimlerin etiketlerine göre geçmesine izin verebilirsiniz. Örneğin, tagOne, tagTwo veya tagThree olarak etiketlenenler dışındaki tüm bildirimler için köprü oluşturmayı devre dışı bırakmak istiyorsanız aşağıdaki örnekte gösterildiği gibi BridgingConfig nesnesini kullanın:

// In this example, bridging is only enabled for tagOne, tagTwo and tagThree.
BridgingManager.fromContext(context).setConfig(
    BridgingConfig.Builder(context, isBridgingEnabled = false)
        .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree"))
        .build()
)

Tüm bildirimler için köprülemeyi devre dışı bırakma (önerilmez)

Not: Manifestte ayarlanan köprü yapılandırması, kol saati uygulaması yüklenir yüklenmez geçerli olacağından tüm bildirimler için köprü oluşturmanın devre dışı bırakılması önerilmez. Kullanıcının bildirimleri almadan önce kol saati uygulamasını açıp ayarlaması gerektiğinde bildirimlerin kaybolmasına neden olabilir.

Bir telefon uygulamasından gelen tüm bildirimlerin köprülenmesini önlemek için aşağıdaki örnekte gösterildiği gibi, kol saati uygulamasının manifest dosyasında <meta-data> girişini kullanın:

<!-- Beware, this can have unintended consequences before the user is signed-in -->
<meta-data
    android:name="com.google.android.wearable.notificationBridgeMode"
    android:value="NO_BRIDGING" />

Not: Çalışma zamanında bir köprü yapılandırması belirtmek, Android manifest dosyasındaki köprüleme ile ilgili bir ayarı geçersiz kılar.

Benzer bildirimleri senkronize etmek için kapatma kimliği ayarlama

Köprüleme modu özelliğiyle köprülemeyi engellediğinizde, bildirimlerin kapatılması kullanıcının cihazları arasında senkronize edilmez.

Ancak hem mobil cihazda hem de kol saatinde benzer bildirimler oluşturulursa kullanıcı bu bildirimlerden birini kapattığında her ikisinin de kapatılmasını istersiniz.

NotificationCompat.WearableExtender bölümünde, bildirim kapatıldığında eşlenmiş kol saatlerindeki aynı kimliğe sahip diğer bildirimlerin de kapatılması için genel olarak benzersiz bir kimlik ayarlayabilirsiniz.

NotificationCompat.WearableExtender sınıfı, aşağıdaki örnekte gösterildiği gibi kapatma kimliklerini kullanmanıza olanak tanıyan yöntemlere sahiptir:

Bildirim kapatıldığında, aynı kapatma kimliğine sahip diğer tüm bildirimler hem kol saatinde hem de telefonda kapatılır. Kapatma kimliği almak için getDismissalId() kullanın.

Aşağıdaki örnekte, yeni bir bildirim için genel olarak benzersiz bir kimlik belirtildiğinden kapatmalar senkronize edilir:

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(
        NotificationCompat.WearableExtender()
            .setDismissalId("abc123")
    )
    .build()

Not: İzin kartı kimlikleri, saat Android telefona eşlenmişse çalışır ancak iPhone'a eşlenmişse çalışmaz.

Bildirimler köprülenmediğinde

Aşağıdaki bildirim türleri köprülenmez:

Köprülenmiş bildirimlerle ilgili en iyi uygulamalar

Köprülenmiş bildirimlerin giyilebilir cihaza gönderilmesi veya kaldırılması zaman alır. Bildirimlerinizi tasarlarken bu gecikmeden kaynaklanan beklenmedik davranışlardan kaçınmaya dikkat edin. Aşağıdaki yönergeler, köprülenmiş bildirimlerinizin eşzamansız bildirimlerle çalışmasını sağlamaya yardımcı olur:

  • Telefonda bir bildirimi iptal ederseniz saatinizdeki ilgili bildirimin iptal edilmesi biraz zaman alabilir. Bu süre zarfında kullanıcı, söz konusu bildirimdeki bekleyen amaçlardan birini gönderebilir. Bu nedenle, uygulamanızda iptal ettiği bildirimlerden bekleyen amaçları almaya devam edin: Bildirimleri iptal ederken bu bildirimlerin bekleyen amaç alıcılarını geçerli tutun.
  • Tüm bildirim yığınını aynı anda iptal edip yeniden tetiklemeyin. Yalnızca gerçekten değiştirilmiş olan bildirimleri değiştirin veya kaldırın. Bu sayede giyilebilir cihazın güncellenmesindeki gecikme önlenir ve uygulamanızın pil ömrü üzerindeki etkisi azaltılır.

Tasarım konusunda dikkat edilmesi gereken noktalar

Wear OS bildirimlerinin kendi tasarım kuralları vardır. Daha fazla bilgi için Wear OS Tasarım Kuralları'nı inceleyin.