Bildirimler için köprü seçenekleri

Sistem, varsayılan olarak bir telefon uygulamasından gelen bildirimleri köprüler veya eşlenmiş tüm kol saatleriyle paylaşır. Bir kol saati uygulaması oluşturursanız ve uygulamanız eşlenmiş bir telefonda da bulunuyorsa kullanıcılar yinelenen bildirimler alabilir. Bu bildirimlerden biri telefon uygulaması tarafından oluşturulup köprülenir, diğeri ise kol saati uygulaması tarafından oluşturulur. Wear OS, bildirimlerin nasıl ve ne zaman köprülenmesini kontrol etmenizi sağlayan özellikler içerir.

Yinelenen bildirimleri önleme

Firebase Cloud Messaging gibi harici bir kaynaktan bildirim oluşturduğunuzda telefon uygulamanız ve kol saati uygulamanız, kol saatinde kendi bildirimlerini gösterebilir. Yinelemeyi önlemek için kol saati uygulamanızda köprülemeyi programatik olarak devre dışı bırakın.

Köprü etiketlerini kullanma

Telefon uygulamanızın oluşturduğu bazı bildirimleri, saat uygulamanız yüklendiğinde saate aktarmak için 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ülemeyi seçerek devre dışı bırakmanızı öneririz.

Köprü modunu yalnızca bazı bildirimler için devre dışı bırakma

Köprülemeyi 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 hariç tüm bildirimler için köprülemeyi 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ü oluşturmayı devre dışı bırakma (önerilmez)

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ındaki <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" />

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 telefonda hem de kol saatinde benzer bildirimler oluşturulursa kullanıcı bunlardan birini kapattığında her iki bildirimin de kapatılmasını istersiniz.

NotificationCompat.WearableExtender içinde, kullanıcı bir bildirimi kapattığında eşlenmiş kol saatlerindeki aynı kimliğe sahip diğer bildirimlerin de kapatılması için genel bir benzersiz kimlik ayarlayabilirsiniz.

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

Kullanıcı bildirimi kapattığında aynı kapatma kimliğine sahip diğer tüm bildirimler saatte ve telefonda kapatılır. Reddetme kimliğini 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()

Yalnızca yerel bildirimler

Yinelenen bildirimleri önlemek için setLocalOnly() seçeneğini kullanarak bildirimleri telefona özel hale getirebilirsiniz.

Ancak bu yöntemi yalnızca bildirimin yalnızca oluşturulduğu cihazda görünmesi gerekiyorsa kullanın. Bu kapsamda yalnızca Wear OS cihazlar değil, diğer giyilebilir cihazlar ve bağlı tüm cihazlar yer alır. Yalnızca yerel bildirimler, uygulamanız kol saatine yüklenmemiş olsa bile köprülenmez.

Hem Wear OS hem de telefon uygulamasında bildirim oluşturuluyorsa yinelenen bildirimleri önlemek için bu yaklaşımı kullanmayın. Bunun yerine köprüleme seçeneklerini kullanın.

Örneğin, kullanıcı telefona dosya indirdiğinde yalnızca yerel bildirim kullanın ve bildirimde indirmenin tamamlandığı belirtilsin.

Bildirimler köprülenmediğinde

Sistem, aşağıdaki bildirim türlerini köprülemez:

Köprülenmiş bildirimlerle ilgili uygulama hususları

Köprülenmiş bildirimlerin giyilebilir cihaza gönderilmesi veya kaldırılması zaman alır. Bildirimlerinizi tasarlarken bu gecikmeden kaynaklanan beklenmedik davranışlardan kaçının. 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 ettiğinizde, ilgili bildirimin saatte 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 edilen bildirimlerden gelen 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ı'na bakın.