Opsi bridge untuk notifikasi

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Secara default, notifikasi akan dihubungkan (dibagikan) dari aplikasi di ponsel ke smartwatch yang tersambung. Jika Anda mem-build aplikasi smartwatch dan aplikasi Anda juga ada di ponsel yang disambungkan, pengguna mungkin akan menerima notifikasi duplikat—satu notifikasi yang dibuat oleh aplikasi ponsel (dihubungkan) dan satu yang dibuat oleh aplikasi smartwatch. Wear OS menyertakan fitur untuk mengontrol cara dan waktu notifikasi "dihubungkan".

Menghindari notifikasi duplikat

Saat Anda membuat notifikasi dari sumber eksternal, seperti dari Firebase Cloud Messaging, aplikasi seluler dan aplikasi wearable masing-masing dapat menampilkan notifikasinya sendiri di smartwatch. Untuk menghindari duplikasi semacam ini, Anda harus menonaktifkan penghubungan secara terprogram di aplikasi wearable.

1. Di aplikasi seluler, gunakan tag bridge jika berlaku

Jika Anda ingin menghubungkan beberapa notifikasi yang dibuat di aplikasi seluler ke smartwatch saat aplikasi wearable diinstal, setel tag bridge.

Menyetel tag penghubungan

Tetapkan tag bridge pada notifikasi menggunakan metode setBridgeTag(String) seperti yang ditunjukkan pada contoh kode berikut:

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

2. Di aplikasi wearable, nonaktifkan penghubungan

Menonaktifkan penghubungan untuk beberapa notifikasi

Anda dapat menonaktifkan penghubungan secara dinamis, dan secara opsional mengizinkan beberapa notifikasi bergantung pada tagnya. Misalnya, untuk menonaktifkan penghubungan semua notifikasi kecuali yang diberi tag sebagai foo, bar, atau baz, gunakan objek BridgingConfig seperti yang ditampilkan di bagian ini.

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

Menonaktifkan penghubungan untuk semua notifikasi (tidak direkomendasikan)

Catatan: Anda sebaiknya tidak menonaktifkan penghubungan untuk semua notifikasi karena konfigurasi penghubungan yang ditetapkan dalam manifes akan diterapkan segera setelah aplikasi smartwatch diinstal. Hal ini dapat menyebabkan notifikasi hilang jika pengguna perlu membuka dan menyiapkan aplikasi smartwatch sebelum menerima notifikasi.

Untuk mencegah penghubungan semua notifikasi dari aplikasi ponsel, gunakan entri <meta-data> dalam file manifes aplikasi smartwatch, seperti yang ditunjukkan dalam contoh berikut:

<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>

Catatan: Menetapkan konfigurasi penghubungan saat runtime akan menggantikan setelan terkait penghubungan dalam file manifes Android.

3. Setel ID penutupan untuk menyinkronkan notifikasi serupa di Wear OS dan perangkat seluler

Jika Anda mencegah penghubungan dengan fitur mode bridge, penutupan notifikasi tidak akan tersinkron di seluruh perangkat pengguna.

Namun, jika notifikasi serupa dibuat di perangkat seluler dan smartwatch, Anda tetap harus menutup kedua notifikasi jika pengguna menutup salah satunya.

Dalam NotificationCompat.WearableExtender, Anda dapat menyetel ID unik global. Jadi, saat satu notifikasi ditutup, notifikasi lain dengan ID yang sama di smartwatch yang tersambung juga akan ditutup.

Class NotificationCompat.WearableExtender memiliki metode yang memungkinkan Anda menggunakan ID penutupan, seperti yang ditunjukkan dalam contoh berikut:

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

Untuk menyinkronkan penutupan, gunakan metode setDismissalId(). Untuk setiap notifikasi, teruskan ID unik global sebagai string ketika Anda memanggil metode setDismissalId().

Saat notifikasi ditutup, semua notifikasi lain dengan ID penutupan yang sama akan ditutup di smartwatch dan ponsel. Untuk mendapatkan ID penutupan, gunakan getDismissalId().

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

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

Catatan: ID penutupan berfungsi jika smartwatch disambungkan ke ponsel Android, tetapi tidak jika disambungkan ke iPhone.

Saat notifikasi tidak dihubungkan

Notifikasi tidak dihubungkan pada beberapa kasus berikut:

Praktik terbaik untuk notifikasi terhubung

Perlu waktu untuk mengirim atau menghapus notifikasi terhubung dari perangkat wearable. Saat mendesain notifikasi, pastikan untuk menghindari perilaku tidak diharapkan yang disebabkan oleh latensi ini. Panduan berikut akan memastikan bahwa notifikasi yang terhubung akan berfungsi dengan notifikasi asinkron:

  • Jika Anda membatalkan notifikasi di ponsel, perlu waktu beberapa saat untuk membatalkan notifikasi terkait di smartwatch. Selama waktu ini, pengguna dapat mengirimkan salah satu intent tertunda pada notifikasi tersebut. Karena alasan ini, aplikasi Anda harus menerima intent tertunda dari notifikasi yang telah dibatalkan. Oleh karena itu, saat membatalkan notifikasi, pastikan penerima intent tertunda dalam notifikasi tersebut tetap valid.
  • Jangan membatalkan dan memicu ulang seluruh stack notifikasi sekaligus. Cukup ubah atau hapus notifikasi yang sebenarnya telah diubah. Tindakan ini akan mencegah 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 Pedoman Desain Wear OS.