Opsi bridge untuk notifikasi

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:

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.