Secara default, notifikasi akan dihubungkan atau 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 menerima notifikasi duplikat—satu aplikasi yang dihasilkan dan dihubungkan oleh aplikasi ponsel dan satu lagi 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, nonaktifkan penghubungan secara terprogram di aplikasi wearable.
Menggunakan tag bridge
Jika Anda ingin menghubungkan beberapa notifikasi yang dibuat di aplikasi seluler ke smartwatch saat aplikasi wearable diinstal, setel tag bridge.
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("tagOne") ) .build()
Menonaktifkan penghubungan
Anda dapat menonaktifkan penghubungan untuk beberapa notifikasi atau untuk semua notifikasi. Sebaiknya nonaktifkan penghubungan secara selektif.
Menonaktifkan penghubungan untuk beberapa notifikasi
Anda dapat menonaktifkan penghubungan secara dinamis dan, secara opsional, mengizinkan beberapa notifikasi
berdasarkan tagnya. Misalnya, untuk menonaktifkan penghubungan semua notifikasi kecuali yang diberi tag sebagai
tagOne
, tagTwo
, atau tagThree
, gunakan
objek BridgingConfig
seperti contoh yang ditunjukkan berikut ini:
BridgingManager.fromContext(context).setConfig( BridgingConfig.Builder(context, false) .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree")) .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.
Menyetel ID penutupan untuk menyinkronkan notifikasi serupa
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 harus menutup kedua notifikasi saat pengguna menutup salah satunya.
Dalam
NotificationCompat.WearableExtender
,
Anda dapat menyetel ID unik global. Jadi, saat 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, ID unik secara global ditentukan untuk notifikasi baru, sehingga penutupan disinkronkan:
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
Jenis notifikasi berikut tidak dihubungkan:
- Notifikasi khusus lokal yang disetel menggunakan
Notification.Builder.setLocalOnly(boolean)
. - Notifikasi yang sedang berjalan yang disetel menggunakan
Notification.Builder.setOngoing(boolean)
atauNotification.FLAG_ONGOING_EVENT
. - Notifikasi yang tidak dapat dihapus yang disetel menggunakan
Notification.FLAG_NO_CLEAR
. - Notifikasi dengan aplikasi wearable pasangannya telah menonaktifkan penghubungan notifikasi, seperti yang dijelaskan sebelumnya.
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 mungkin mengirimkan salah satu intent tertunda pada notifikasi tersebut. Karena alasan ini, terus terima intent yang tertunda di aplikasi Anda dari notifikasi yang telah dibatalkan: saat membatalkan notifikasi, pertahankan 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 mengurangi dampak aplikasi terhadap masa pakai baterai.
Pertimbangan desain
Notifikasi Wear OS memiliki panduan desainnya sendiri. Untuk informasi selengkapnya, tinjau Pedoman Desain Wear OS.