Bildirimler için köprü seçenekleri

Varsayılan olarak, telefondaki bir uygulamadan, eşlenmiş herhangi bir kol saatine gelen bildirimler köprü modunda olur veya paylaşılır. Bir saat uygulaması oluşturursanız ve uygulamanız, eşlenmiş bir telefonda da mevcutsa kullanıcılara yinelenen bildirimler gönderilebilir. Bu bildirimlerden biri telefon uygulaması tarafından ve diğeri saat uygulaması tarafından oluşturulur. Wear OS, bildirimlerin nasıl ve ne zaman köprüleneceğini kontrol eden özellikler içerir.

Yinelenen bildirimlerden kaçının

Firebase Cloud Messaging gibi harici bir kaynaktan bildirim oluşturduğunuzda mobil uygulamanız ve giyilebilir uygulamanızın her biri, saatte kendi bildirimlerini görüntüleyebilir. Bu tür tekrarları önlemek için giyilebilir uygulamanızda köprü özelliğini programlı bir şekilde devre dışı bırakın.

Köprü etiketlerini kullanma

Giyilebilir cihaz uygulamanız yüklendiğinde mobil uygulamanızda oluşturulan bildirimlerin bazılarını saatle bağlamak istiyorsanız köprü etiketleri ayarlayın.

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

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

Köprülemeyi devre dışı bırak

Bazı bildirimler veya tüm bildirimler için köprü özelliğini devre dışı bırakabilirsiniz. Köprü modunu seçerek devre dışı bırakmanızı öneririz.

Bazı bildirimler için köprü özelliğini devre dışı bırak

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

BridgingManager.fromContext(context).setConfig(
    BridgingConfig.Builder(context, false)
        .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree"))
        .build()
)

Tüm bildirimler için köprü oluşturmayı devre dışı bırak (önerilmez)

Not: Manifest'te ayarlanan köprü yapılandırması, bir saat uygulaması yüklenir yüklenmez geçerli olur. Bu nedenle, tüm bildirimler için köprülemenin devre dışı bırakılması önerilmez. Bu nedenle, kullanıcının bildirim almadan önce saat uygulamasını açıp ayarlaması gerekiyorsa bildirimler kaybolabilir.

Bir telefon uygulamasından gelen tüm bildirimlerin birbirine bağlanmasını önlemek için aşağıdaki örnekte gösterildiği gibi, saat uygulamasının manifest dosyasındaki <meta-data> girişini kullanın:

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

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

Benzer bildirimleri senkronize etmek için kapatma kimliği ayarlayın

Köprü modu özelliğiyle köprülemeyi önlediğinizde, bildirim kapatma işlemleri kullanıcının cihazları arasında senkronize edilmez.

Bununla birlikte, benzer bildirimler hem mobil cihazda hem de saatte oluşturulursa kullanıcı bunlardan birini kapattığında her iki bildirimin de kapatılmasını istersiniz.

NotificationCompat.WearableExtender bölümünde genel bir benzersiz kimlik ayarlayabilirsiniz. Böylece bir bildirim kapatıldığında, eşlenmiş kol saatlerinde aynı kimliğe sahip diğer bildirimler de kapatılır.

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

fun setDismissalId(dismissalId: String): WearableExtender
fun getDismissalId(): String

Kapatmayı senkronize etmek için setDismissalId() yöntemini kullanın. Her bildirim için setDismissalId() yöntemini çağırırken dize olarak genel olarak benzersiz bir kimlik iletin.

Bildirim kapatıldığında aynı kapatma kimliğine sahip diğer tüm bildirimler saatte ve telefonda kapatılır. Reddetme kimliği almak için getDismissalId() işlevini kullanın

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

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

Not: Kapatma kimlikleri bir kol saati bir Android telefonla eşlendiğinde çalışır, ancak kol saati bir iPhone ile eşlendiğinde çalışmaz.

Bildirimler köprü modunda değilken

Aşağıdaki bildirim türleri köprü modunda değildir:

Köprülü bildirimler için en iyi uygulamalar

Giyilebilir bir cihazda köprülü bildirimlerin aktarılması veya kaldırılması zaman alır. Bildirimlerinizi tasarlarken, bu gecikmenin neden olduğu beklenmedik davranışlardan kaçındığınızdan emin olun. Aşağıdaki yönergeler, köprülü bildirimlerinizin eşzamansız bildirimlerle çalışmasını sağlar:

  • Telefondaki bir bildirimi iptal ederseniz ilgili bildirimin kol saatinde de iptal edilmesi biraz zaman alabilir. Bu süre zarfında kullanıcı, söz konusu bildirimdeki bekleyen amaçlardan birini gönderebilir. Bu nedenle, iptal ettiği bildirimlerden uygulamanızda bekleyen niyetleri almaya devam edin: Bildirimleri iptal ederken, bu bildirimlerin bekleyen amaç alıcıları geçerli tutun.
  • Tüm bildirim grubunu tek seferde iptal edip yeniden tetiklemeyin. Yalnızca gerçekten değiştirilen bildirimleri değiştirin veya kaldırın. Bu, giyilebilir cihazın güncellenmesinde gecikme olmasını önler ve uygulamanızın pil ömrü üzerindeki etkisini azaltır.

Tasarım ile ilgili dikkat edilmesi gereken noktalar

Wear OS bildirimlerinin kendi tasarım yönergeleri vardır. Daha fazla bilgi için Wear OS Tasarım Yönergeleri'ni inceleyin.