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

Akses jaringan

Aplikasi Wear OS dapat membuat permintaan jaringan. Jika smartwatch dilengkapi dengan Bluetooth ke ponsel, lalu lintas jaringan jam umumnya di-proxy-kan melalui ponsel.

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

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

Gunakan WorkManager untuk permintaan asinkron, termasuk polling secara rutin dengan interval tertentu.

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

Akses jaringan bandwidth tinggi

Platform Wear OS mengelola konektivitas jaringan dengan tujuan untuk menyediakan pengalaman pengguna terbaik secara keseluruhan. Platform memilih jaringan aktif {i>default<i} dengan menyeimbangkan dua kebutuhan: masa pakai baterai yang panjang dan {i>bandwidth<i} jaringan.

Ketika daya tahan baterai diprioritaskan, jaringan yang aktif mungkin tidak cukup {i>bandwidth<i} untuk tugas jaringan seperti memindahkan file besar atau streaming lainnya.

Bagian ini memberikan panduan tentang penggunaan class ConnectivityManager untuk membantu memastikan bahwa aplikasi Anda memiliki bandwidth jaringan yang dibutuhkan. Untuk umum informasi 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 media streaming, meminta konektivitas dengan bandwidth tinggi transportasi umum, 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
);

Memperoleh jaringan mungkin tidak secara instan, karena jam Wi-Fi atau radio seluler mungkin dimatikan untuk menghemat baterai. Jika jam tidak dapat tersambung ke jaringan, metode onAvailable() dari instance NetworkCallback Anda tidak 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 yang ditunjukkan dalam contoh berikut ketika 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 salah satunya dikonfigurasi dan berada dalam jangkauan. Jika tidak ada jaringan Wi-Fi tersimpan yang tersedia, Metode callback onAvailable dari instance NetworkCallback Anda tidak dipanggil.

Jika menggunakan Handler untuk menghentikan waktu permintaan jaringan, Anda dapat mengarahkan menambahkan jaringan Wi-Fi ketika 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 CHANGE_WIFI_STATE izin akses.

Pertimbangan antarmuka pengguna

Jika aplikasi Anda memerlukan koneksi ke jaringan Wi-Fi baru untuk bandwidth tinggi pastikan bahwa alasan untuk menghubungkan jelas bagi pengguna sebelum Anda meluncurkan pengaturan Wi-Fi. Hanya minta pengguna menambahkan Wi-Fi baru jaringan terutama ketika jaringan {i>bandwidth<i} tinggi diperlukan. Jangan blokir pengguna dari yang mengakses fitur aplikasi yang tidak memerlukan jaringan bandwidth tinggi.

Gambar 1 menunjukkan aplikasi musik. Aplikasi ini memungkinkan pengguna menelusuri musik pada jaringan dengan bandwidth lebih rendah dan hanya mengharuskan pengguna menambahkan jaringan mereka ingin mengunduh atau mengalirkan 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 semua perubahan 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 dokumen yang sudah ada dokumentasi tentang terhubung ke jaringan dan cloud messaging.

FCM berfungsi baik dengan Istirahatkan dan merupakan cara yang direkomendasikan untuk mengirim notifikasi untuk jam tangan.

Menyediakan 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 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 mengamati, data ditampilkan kepada pengguna secara langsung dalam aliran notifikasi. Kapan 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. Anda memiliki aplikasi Wear OS mandiri dan aplikasi ponsel terkait, notifikasi duplikat dapat terjadi. Misalnya, satu notifikasi dari FCM, yang diterima oleh ponsel dan smartwatch, dapat ditampilkan oleh kedua perangkat secara terpisah. Anda dapat mencegah hal ini dengan menggunakan API penghubung.

Menggunakan layanan latar belakang

Untuk membantu memastikan bahwa tugas latar belakang dieksekusi dengan benar, mereka harus untuk mode Istirahatkan dan Aplikasi Standby.

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

Menjadwalkan dengan batasan

Anda dapat menggunakan batasan untuk mengonfigurasi permintaan sedemikian rupa sehingga menghemat baterai kehidupan Anda. Pilih satu atau beberapa batasan berikut untuk disertakan dalam permintaan:

  • Menjadwalkan permintaan yang memerlukan jaringan.

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

  • Menjadwalkan permintaan saat mengisi daya.

  • Menjadwalkan permintaan saat tidak ada aktivitas di perangkat. Hal ini berguna untuk sinkronisasi dengan prioritas lebih rendah, terutama ketika perangkat sedang diisi dayanya.

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