Mode bridge untuk notifikasi di Wear

Secara default, notifikasi akan dihubungkan (dibagikan) dari aplikasi di ponsel pendamping ke jam tangan yang tersambung. Jika Anda membuat aplikasi jam tangan mandiri dan memiliki ponsel pendamping, aplikasi mungkin akan menduplikasi notifikasi. Wear OS by Google menyertakan fitur untuk menangani masalah notifikasi duplikat ini.

Lihat resource terkait berikut:

Catatan: Anda dapat menggunakan Firebase Cloud Messaging (FCM) untuk mengirimkan pemberitahuan notifikasi ke perangkat. Lihat Menyelaraskan pengguna di Android, iOS, dan Chrome.

Developer dapat mengubah perilaku notifikasi dengan salah satu atau beberapa opsi berikut:

  • Menetapkan konfigurasi penghubungan dalam file manifes
  • Menetapkan konfigurasi penghubungan pada waktu proses
  • Menyetel ID penutupan agar penutupan notifikasi tersinkron di seluruh perangkat

Menetapkan konfigurasi penghubungan dalam file manifes

File manifes Android aplikasi dapat mengindikasikan bahwa notifikasi dari aplikasi ponsel yang terkait tidak boleh dihubungkan ke jam tangan. Secara spesifik, agar notifikasi tidak dihubungkan dari aplikasi ponsel, Anda dapat menggunakan entri <meta-data> dalam file manifes aplikasi jam tangan (mis. aplikasi jam tangan mandiri), seperti berikut:

    com.google.android.wearable.notificationBridgeMode
    

Tambahkan entri <meta-data> tersebut sebagai turunan elemen <application>. Setel entri tersebut ke NO_BRIDGING untuk mencegah penghubungan:

    <application>
    ...
      <meta-data
        android:name="com.google.android.wearable.notificationBridgeMode"
        android:value="NO_BRIDGING" />
    ...
    </application>
    

Perilaku penghubungan default terjadi jika Anda tidak menyertakan entri <meta-data> atau menetapkan nilai BRIDGING dan bukan NO_BRIDGING.

Konfigurasi penghubungan yang ditetapkan dalam manifes diterapkan segera setelah aplikasi jam tangan diinstal.

Menetapkan konfigurasi penghubungan pada waktu proses

Anda dapat menggunakan fitur Mode bridge untuk menetapkan konfigurasi penghubungan pada waktu proses. Secara spesifik, gunakan class BridgingManager.

Anda dapat menyetel mode bridge, dan jika perlu, menetapkan tag untuk notifikasi yang dikecualikan dari mode bridge, menggunakan objek BridgingManager. Secara spesifik, buat objek BridgingConfig dan setel seperti yang ditunjukkan di bagian ini.

Menetapkan konfigurasi penghubungan pada waktu proses akan menggantikan setelan terkait penghubungan dalam file manifes Android.

Menonaktifkan penghubungan untuk semua notifikasi

Anda dapat menonaktifkan penghubungan bagi semua notifikasi seperti berikut:

Kotlin

    BridgingManager.fromContext(context).setConfig(
            BridgingConfig.Builder(context, false).build()
    )
    

Java

    BridgingManager.fromContext(context).setConfig(
      new BridgingConfig.Builder(context, false)
        .build());
    

Jika konfigurasi di atas tidak disetel, mode bridge akan kembali ke default menjadi true.

Notifikasi dikecualikan yang diberi tag

Anda dapat menonaktifkan penghubungan untuk semua notifikasi kecuali yang memiliki tag tertentu.

Misalnya, Anda dapat menonaktifkan penghubungan untuk semua aplikasi kecuali yang diberi tag sebagai foo, bar, atau baz.

Kotlin

    BridgingManager.fromContext(context).setConfig(
            BridgingConfig.Builder(context, false)
                    .addExcludedTags(listOf("foo", "bar", "baz"))
                    .build()
    )
    

Java

    BridgingManager.fromContext(context).setConfig(
      new BridgingConfig.Builder(context, false)
        .addExcludedTags(Arrays.asList("foo", "bar", "baz"))
        .build());
    

Untuk contoh lainnya, Anda dapat mengecualikan notifikasi dengan tag khusus (seperti foo atau bar):

Kotlin

    BridgingManager.fromContext(context).setConfig(
            BridgingConfig.Builder(context, false)
                    .addExcludedTag("foo")
                    .addExcludedTag("bar")
                    .build()
    )
    

Java

    BridgingManager.fromContext(context).setConfig(
      new BridgingConfig.Builder(context, false)
        .addExcludedTag("foo")
        .addExcludedTag("bar")
        .build());
    

Menyetel tag penghubungan

Tag penghubungan dapat disetel pada notifikasi menggunakan metode setBridgeTag(String) berikut:

Kotlin

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

Java

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
      .extend(
        new NotificationCompat.WearableExtender()
          .setBridgeTag("foo"));
      Notification notification = notificationBuilder.build();
    

Mencegah penghubungan dalam aplikasi yang sudah ada

Dalam aplikasi yang ada, Anda mungkin sudah menonaktifkan penghubungan untuk situasi saat ponsel tidak terhubung ketika pemberitahuan diterima. Dalam hal ini, Anda mungkin masih ingin menutup notifikasi di perangkat lainnya ketika ditutup dalam aplikasi jam tangan.

Cara untuk mencegah penghubungan adalah dengan class Notification.Builder; menetapkan true dalam metode setLocalOnly.

Namun, cara ini mungkin kurang disukai. Misalnya, jika pengguna menginstal aplikasi ponsel tanpa aplikasi jam tangan yang terkait, metode setLocalOnly mungkin akan mencegah penghubungan notifikasi yang cukup penting. Selain itu, pengguna mungkin memiliki beberapa jam tangan yang tersambung dan aplikasi jam tangan mungkin tidak diinstal di semua perangkat.

Menggunakan ID penutupan untuk menyinkronkan penutupan notifikasi

Jika Anda mencegah penghubungan dengan Fitur Mode bridge, penutupan (pembatalan) notifikasi tidak akan tersinkron di seluruh perangkat pengguna. Namun, metode class NotificationCompat.WearableExtender berikut memungkinkan Anda untuk menggunakan ID penutupan:

Kotlin

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

Java

    public WearableExtender setDismissalId(String dismissalId)
    public String getDismissalId()
    

Agar penutupan tersinkron, gunakan metode setDismissalId(). Untuk setiap notifikasi, teruskan ID yang unik secara global sebagai string ketika Anda memanggil metode setDismissalId(). Saat notifikasi ditutup, semua notifikasi lain dengan ID penutupan yang sama akan ditutup di jam tangan tersebut dan di ponsel pendamping. Untuk memperoleh ID penutupan, gunakan getDismissalId().

Dalam contoh berikut ini, sinkronisasi penutupan diaktifkan karena ID yang unik secara global ditetapkan untuk notifikasi baru:

Kotlin

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

Java

    NotificationCompat.WearableExtender wearableExtender =
      new NotificationCompat.WearableExtender().setDismissalId("abc123");
    Notification notification = new NotificationCompat.Builder(context)
    // ... set other fields ...
      .extend(wearableExtender)
      .build();
    

ID penutupan berfungsi jika jam tangan disambungkan ke ponsel Android, tetapi tidak ketika disambungkan ke iPhone.

Praktik terbaik untuk notifikasi terhubung

Notifikasi terhubung membutuhkan waktu hingga masuk atau dihapus dari perangkat wearable. Saat mendesain notifikasi, pastikan untuk menghindari perilaku tidak diharapkan yang disebabkan oleh latensi ini. Panduan di bawah ini akan membantu Anda memastikan bahwa notifikasi yang terhubung akan berfungsi dengan notifikasi asinkron:

  • Jika Anda membatalkan notifikasi di ponsel, notifikasi yang terkait di jam tangan mungkin membutuhkan waktu hingga dibatalkan. Selama waktu ini, pengguna dapat mengirimkan salah satu intent yang tertunda pada notifikasi tersebut. Untuk alasan ini, aplikasi harus siap menerima intent yang tertunda dari notifikasi yang telah dibatalkannya. Oleh karena itu, ketika membatalkan notifikasi, Anda harus memastikan agar penerima intent tertunda notifikasi tersebut tetap valid.
  • Jangan membatalkan dan memicu ulang seluruh tumpukan notifikasi sekaligus. Cukup ubah atau hapus notifikasi yang sebenarnya telah diubah. Tindakan ini akan menghindarkan dari latensi pada update perangkat wearable dan memastikan dampak aplikasi yang minimal pada masa pakai baterai.

Pertimbangan desain

Notifikasi Wear OS memiliki panduan desainnya sendiri. Untuk informasi selengkapnya, tinjau halaman Desain Material.

  • Semua notifikasi yang dihubungkan dari ponsel yang disambungkan ke perangkat Wear menggunakan notifikasi yang diperluas.
  • Untuk mempelajari kapan harus menggunakan berbagai template notifikasi yang didukung di Wear OS, baca panduan desain Pola notifikasi.
  • Untuk mempelajari cara menetapkan gaya pada notifikasi Wear, baca panduan desain Gaya notifikasi.
  • Jika memiliki aplikasi messaging chat, notifikasi Anda harus menggunakan NotificationCompat.MessagingStyle. Wear menggunakan pesan chat yang disertakan dalam notifikasi MessagingStyle (lihat addMessage()) untuk menyediakan pengalaman chat yang kaya layaknya aplikasi dalam notifikasi yang diperluas.
  • Tambahkan tindakan inline ( setHintDisplayActionInline(true)) dalam aliran notifikasi untuk menyertakan tindakan utama yang dapat dilakukan oleh pengguna pada notifikasi dengan cepat. Contoh kasus penggunaan yang tepat untuk tindakan inline dalam aliran notifikasi termasuk membalas pesan teks, menghentikan aktivitas kebugaran, atau mengarsipkan pesan email.
  • Aktifkan Smart Reply ( setAllowGeneratedReplies(true)) untuk notifikasi MessagingStyle Anda.