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 referensi 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, Anda menggunakan 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
, lalu setel objek 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.
Kecualikan notifikasi yang diberi tag
Anda dapat menonaktifkan penghubungan untuk semua notifikasi kecuali yang memiliki tag tertentu.
Misalnya, Anda dapat menonaktifkan penghubungan untuk semua notifikasi kecuali yang memiliki tag 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
; tetapkan 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()
Untuk memungkinkan sinkronisasi penutupan, 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 dan di ponsel pendamping. Untuk mendapatkan 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 Anda memiliki aplikasi pesan chat, notifikasi harus menggunakan
NotificationCompat.MessagingStyle
. Wear menggunakan pesan chat yang disertakan dalam notifikasiMessagingStyle
(lihataddMessage()
) 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 meliputi membalas pesan teks, menghentikan aktivitas kebugaran, atau mengarsipkan pesan email. -
Aktifkan Smart Reply
(
setAllowGeneratedReplies(true)
) untuk notifikasiMessagingStyle
.