Berkomunikasi langsung melalui jaringan pada perangkat mandiri

Dengan Wear OS by Google, smartwatch dapat langsung berkomunikasi dengan jaringan, tanpa akses ke ponsel Android atau iOS. Jangan gunakan Data Layer API untuk menghubungkan aplikasi Wear OS ke jaringan. Sebagai gantinya, ikuti panduan dan langkah-langkah dalam panduan ini.

Akses jaringan

Aplikasi Wear OS dapat membuat permintaan jaringan. Jika smartwatch memiliki koneksi Bluetooth ke ponsel, traffic jaringan smartwatch umumnya akan di-proxy-kan melalui ponsel.

Jika ponsel tidak tersedia, jaringan Wi-Fi dan seluler akan digunakan, bergantung pada hardware smartwatch. Platform Wear dapat menangani transisi antar-jaringan.

Anda dapat menggunakan protokol seperti HTTP, TCP, dan UDP. Namun, android.webkit API, termasuk class CookieManager, tidak tersedia. Anda dapat menggunakan cookie dengan membaca dan menulis header pada permintaan dan respons.

Gunakan WorkManager untuk permintaan asinkron, termasuk polling pada interval reguler.

Jika Anda perlu terhubung ke jenis jaringan tertentu, lihat Membaca status jaringan.

Akses jaringan bandwidth tinggi

Platform Wear OS mengelola konektivitas jaringan dengan tujuan memberikan pengalaman pengguna terbaik secara keseluruhan. Platform ini memilih jaringan aktif default dengan menyeimbangkan dua kebutuhan: masa pakai baterai yang panjang dan bandwidth jaringan.

Ketika ketahanan baterai diprioritaskan, jaringan aktif mungkin tidak memiliki cukup bandwidth untuk tugas jaringan seperti memindahkan file besar atau streaming media.

Bagian ini memberikan panduan tentang penggunaan class ConnectivityManager untuk membantu memastikan aplikasi Anda memiliki bandwidth jaringan yang diperlukan. Untuk informasi umum tentang kontrol terperinci atas resource jaringan, lihat mengelola penggunaan jaringan.

Meminta konektivitas Wi-Fi

Untuk kasus penggunaan yang memerlukan akses jaringan bandwidth tinggi, seperti memindahkan file besar atau streaming media, minta konektivitas dengan transpor bandwidth tinggi, seperti Wi-Fi. Hal ini ditunjukkan dalam contoh berikut:

Kotlin

val callback = object : ConnectivityManager.NetworkCallback() {
    override fun onAvailable(network: Network) {
        super.onAvailable(network)
        // The Wi-Fi network has been acquired. Bind it to use this network by default.
        connectivityManager.bindProcessToNetwork(network)
    }

    override fun onLost(network: Network) {
        super.onLost(network)
        // Called when a network disconnects or otherwise no longer satisfies this request or callback.
    }
}
connectivityManager.requestNetwork(
    NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(),
    callback
)

Java

ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() {
    public void onAvailable(Network network) {
        super.onAvailable(network);
        // The Wi-Fi network has been acquired. Bind it to use this network by default.
        connectivityManager.bindProcessToNetwork(network);
    }

    public void onLost(Network network) {
        super.onLost(network);
        // Called when a network disconnects or otherwise no longer satisfies this request or callback.
    }
};
connectivityManager.requestNetwork(
        new NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(),
        callback
);

Jaringan mungkin tidak dapat diperoleh secara langsung karena radio Wi-Fi atau seluler smartwatch mungkin mati untuk menghemat baterai. Jika smartwatch tidak dapat terhubung ke jaringan, metode onAvailable() dari instance NetworkCallback tidak akan dipanggil.

Setelah onAvailable() dipanggil, perangkat akan mencoba untuk tetap terhubung ke jaringan Wi-Fi hingga NetworkCallback dirilis. Untuk menghemat masa pakai baterai, lepaskan callback seperti ditunjukkan dalam contoh berikut saat Anda tidak lagi memerlukan jaringan Wi-Fi.

Kotlin

connectivityManager.bindProcessToNetwork(null)
connectivityManager.unregisterNetworkCallback(callback)

Java

connectivityManager.bindProcessToNetwork(null);
connectivityManager.unregisterNetworkCallback(callback);

Meluncurkan aktivitas setelan Wi-Fi

Saat meminta jaringan Wi-Fi, sistem akan mencoba terhubung ke jaringan tersimpan jika ada yang dikonfigurasi dan berada dalam jangkauan. Jika tidak ada jaringan Wi-Fi tersimpan yang tersedia, metode callback onAvailable dari instance NetworkCallback Anda tidak akan dipanggil.

Jika menggunakan Handler untuk menghentikan waktu permintaan jaringan, Anda dapat mengarahkan pengguna untuk menambahkan jaringan Wi-Fi saat waktu tunggu habis. Arahkan pengguna langsung ke aktivitas untuk menambahkan jaringan Wi-Fi menggunakan intent berikut:

Kotlin

context.startActivity(Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"))

Java

context.startActivity(new Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"));

Untuk meluncurkan aktivitas setelan, aplikasi Anda harus memiliki izin CHANGE_WIFI_STATE.

Pertimbangan antarmuka pengguna

Jika aplikasi memerlukan koneksi ke jaringan Wi-Fi baru untuk operasi bandwidth tinggi, pastikan alasan koneksi sudah jelas bagi pengguna sebelum meluncurkan setelan Wi-Fi. Hanya minta pengguna untuk menambahkan jaringan Wi-Fi baru jika jaringan bandwidth tinggi diperlukan. Jangan halangi pengguna untuk mengakses fitur aplikasi yang tidak memerlukan jaringan bandwidth tinggi.

Gambar 1 menunjukkan aplikasi musik. Aplikasi ini memungkinkan pengguna menjelajahi musik pada jaringan bandwidth lebih rendah dan hanya mengharuskan pengguna menambahkan jaringan Wi-Fi baru jika mereka ingin mendownload atau melakukan streaming musik.

Mendownload musik

Gambar 1. Alur aplikasi musik untuk mendownload musik.

Pertimbangan daya dan penggunaan data

Untuk membantu menghemat masa pakai baterai dan meminimalkan penggunaan data seluler, tunda tugas jaringan yang tidak penting, seperti pelaporan analisis atau pengumpulan log, hingga perangkat Wear OS terhubung kembali ke koneksi Bluetooth atau Wi-Fi, bukan koneksi LTE atau berkuota.

Cloud messaging

Untuk mengirim notifikasi, gunakan Firebase Cloud Messaging (FCM) secara langsung.

Tidak ada API untuk akses jaringan atau FCM yang spesifik untuk Wear OS. Lihat dokumentasi yang sudah ada tentang menghubungkan ke jaringan dan cloud messaging.

FCM dapat digunakan dengan Istirahatkan dan merupakan cara yang direkomendasikan untuk mengirim notifikasi ke smartwatch.

Kirimkan pesan dari FCM dengan mengumpulkan token pendaftaran untuk perangkat saat aplikasi Wear OS berjalan. Kemudian, sertakan token sebagai bagian dari tujuan saat server mengirim pesan ke endpoint REST FCM. FCM akan mengirim pesan ke perangkat yang diidentifikasi oleh token.

Pesan FCM memiliki format JavaScript Object Notation (JSON) dan dapat menyertakan salah satu atau kedua payload berikut:

  • Payload notifikasi: saat payload notifikasi diterima oleh smartwatch, data akan ditampilkan langsung kepada pengguna dalam aliran notifikasi. Saat pengguna mengetuk notifikasi, aplikasi Anda diluncurkan.
  • Payload data: jika payload memiliki sekumpulan key-value pair atau pasangan nilai kustom. Payload dikirimkan sebagai data ke aplikasi Wear OS.

Untuk mengetahui informasi selengkapnya dan contoh payload, lihat Tentang pesan FCM.

Secara default, notifikasi akan dihubungkan dari aplikasi ponsel ke smartwatch. Jika Anda memiliki aplikasi Wear OS mandiri dan aplikasi ponsel terkait, notifikasi duplikat dapat terjadi. Misalnya, satu notifikasi dari FCM, yang diterima ponsel dan smartwatch, dapat ditampilkan kedua perangkat secara terpisah. Anda dapat mencegah hal ini dengan menggunakan bridging API.

Menggunakan layanan latar belakang

Untuk membantu memastikan tugas latar belakang dijalankan dengan benar, tugas tersebut harus memperhitungkan Istirahatkan dan Aplikasi Standby.

Saat layar mati atau memasuki mode standby untuk waktu yang cukup lama, subset mode Istirahatkan dapat diaktifkan, dan tugas latar belakang dapat ditunda selama jangka waktu tertentu. Kemudian, ketika perangkat tidak bergerak untuk waktu yang lama, mode Istirahatkan biasa akan terjadi. Jadwalkan permintaan dengan WorkManager API yang memungkinkan aplikasi mendaftar untuk eksekusi kode yang aman dari Istirahatkan.

Menjadwalkan dengan batasan

Anda dapat menggunakan batasan untuk mengonfigurasi permintaan dengan cara yang menghemat masa pakai baterai. Pilih satu atau beberapa batasan berikut untuk disertakan dalam permintaan Anda:

  • Menjadwalkan permintaan yang memerlukan jaringan.

    Tentukan apakah NetworkType adalah CONNECTED atau UNMETERED. UNMETERED digunakan untuk transfer data besar, sedangkan CONNECTED untuk transfer kecil.

  • Menjadwalkan permintaan saat mengisi daya.

  • Menjadwalkan permintaan saat tidak ada aktivitas di perangkat. Hal ini berguna untuk pekerjaan latar belakang atau sinkronisasi dengan prioritas lebih rendah, terutama saat perangkat sedang mengisi daya.

Untuk informasi selengkapnya, tinjau panduan Efek batasan pada pekerjaan berkala di WorkManager.