Permintaan izin di Wear OS

Android 6.0 (API level 23) memperkenalkan model izin baru, yang menghadirkan beberapa perubahan yang diperuntukkan khusus untuk Wear OS by Google, dan perubahan lain yang berlaku untuk semua perangkat yang didukung Android.

Pengguna harus memberikan izin ke aplikasi Wear meskipun ada aplikasi ponsel pendamping. Dari Android 6.0 (API level 23), aplikasi Wear tidak bisa menerima izin yang diberikan di aplikasi ponsel. Misalnya, jika pengguna memberikan aplikasi ponsel izin untuk menggunakan data lokasi, pengguna aplikasi Wear harus memberikan izin yang sama.

Catatan: Halaman ini mengasumsikan kemungkinan bahwa Anda membuat aplikasi ponsel sebagai pendamping untuk aplikasi jam Anda. Namun, Anda tidak perlu membuat aplikasi ponsel; aplikasi jam Anda bisa menjadi aplikasi yang berdiri sendiri.

Untuk aplikasi Wear dan ponsel, model izin Android 6.0 (API level 23) juga menyederhanakan penginstalan dan upgrade aplikasi dengan menghilangkan persyaratan bahwa pengguna harus memberikan izin di awal untuk setiap izin yang mungkin diperlukan aplikasi. Sebagai gantinya, aplikasi tidak meminta izin hingga benar-benar membutuhkannya.

Catatan: Bagi aplikasi yang menggunakan model izin baru, ia harus menetapkan nilai 23 untuk uses-sdk-element dan compileSdkVersion.

Bagian lain dari dokumen ini membahas cara menggunakan model izin Android 6.0 (API level 23) ketika mengembangkan aplikasi Wear OS.

Skenario izin

Secara garis besar, ada empat skenario yang mungkin Anda hadapi ketika meminta izin berbahaya di Wear OS:

  • Aplikasi Wear meminta izin untuk aplikasi yang berjalan di perangkat wearable.
  • Aplikasi Wear meminta izin untuk aplikasi yang berjalan di handset.
  • Aplikasi ponsel meminta izin untuk aplikasi yang berjalan di perangkat wearable.
  • Aplikasi wearable menggunakan model izin yang berbeda dari pasangan ponselnya.

Bagian lain dokumen ini menjelaskan masing-masing skenario ini. Untuk informasi lebih detail tentang permintaan izin, lihat Pola permintaan izin.

Aplikasi Wear meminta izin untuk aplikasi yang berjalan di perangkat wearable

Saat aplikasi Wear meminta izin untuk aplikasi yang berjalan di perangkat wearable, sistem akan menampilkan dialog untuk meminta persetujuan pengguna mengenai izin tersebut. Aplikasi atau layanan hanya bisa memanggil metode requestPermissions() dari aktivitas. Jika pengguna berinteraksi dengan aplikasi Anda melalui layanan, seperti tampilan jam, layanan harus membuka aktivitas sebelum meminta izin.

Aplikasi Anda meminta izin dalam konteks ketika jelas mengapa izin dibutuhkan untuk melakukan operasi tertentu. Bila sudah jelas bahwa aplikasi Anda memerlukan izin tertentu, aplikasi Anda bisa memintanya saat peluncuran. Bila tidak terlalu jelas, Anda bisa memilih untuk memberikan edukasi tambahan sebelum meminta izin.

Bila aplikasi atau tampilan jam membutuhkan lebih dari satu izin dalam satu waktu, permintaan izin akan muncul satu demi satu.

Beberapa layar izin, satu demi satu.

Gambar 1. Layar izin muncul secara bergantian

Catatan: Dari Android 6.0 (API level 23), Wear OS secara otomatis menyinkronkan data Kalender, Kontak, dan Lokasi ke perangkat Wear. Akibatnya, skenario ini adalah yang dipakai saat Wear meminta data ini.

Aplikasi Wear meminta izin ponsel

Ketika aplikasi Wear meminta izin ponsel, aplikasi Wear harus mengarahkan pengguna ke ponsel untuk menerima izin. Di sana, aplikasi ponsel bisa memberikan edukasi tambahan kepada pengguna melalui aktivitas. Aktivitas ini harus berisi dua tombol: satu untuk memberikan izin, dan satu untuk menolak izin.

Aplikasi Wear mengarahkan pengguna ke ponsel untuk memberikan izin.

Gambar 2. Mengarahkan pengguna ke ponsel untuk memberikan izin.

Aplikasi ponsel meminta izin perangkat wearable

Saat pengguna menggunakan aplikasi ponsel dan aplikasi memerlukan izin perangkat wearable, aplikasi ponsel harus mengarahkan pengguna ke perangkat wearable untuk menerima izin. Aplikasi ponsel menggunakan metode requestPermissions() pada perangkat wearable untuk memicu dialog izin sistem.

Aplikasi ponsel mengarahkan pengguna ke perangkat wearable untuk memberikan izin.

Gambar 3. Mengarahkan pengguna ke perangkat wearable untuk memberikan izin.

Model izin yang tidak cocok antara aplikasi ponsel dan wearable

Jika aplikasi ponsel Anda menggunakan model Android 6.0 (API level 23) tetapi aplikasi wearable tidak menggunakannya, sistem akan mendownload aplikasi Wear, tetapi tidak menginstalnya. Saat pertama kali pengguna meluncurkan aplikasi, sistem meminta pengguna untuk memberikan semua izin yang tertunda. Setelah mereka mengizinkannya, sistem akan menginstal aplikasi. Jika aplikasi Anda, misalnya tampilan jam, tidak memiliki peluncur, sistem akan menampilkan deretan notifikasi yang meminta pengguna untuk memberikan izin yang dibutuhkan aplikasi.

Pola permintaan izin

Ada berbagai pola untuk meminta izin dari pengguna. Menurut urutan prioritas, mereka adalah:

  • Tanya dalam konteks ketika izin jelas diperlukan untuk fungsionalitas tertentu, tetapi tidak diperlukan untuk menjalankan aplikasi.
  • Edukasi dalam konteks ketika alasan untuk meminta izin tidak terlalu jelas, dan izin tidak diperlukan untuk menjalankan aplikasi.
  • Tanya di awal ketika kebutuhan izin sudah jelas, dan izin dibutuhkan agar aplikasi bisa berjalan.
  • Edukasi di awal ketika kebutuhan izin tidak terlalu jelas, tetapi izin dibutuhkan agar aplikasi bisa berjalan.

Tanya dalam konteks

Aplikasi Anda sebaiknya meminta izin bila sudah jelas mengapa izin tersebut dibutuhkan untuk melakukan operasi tertentu. Pengguna kemungkinan besar memberikan izin ketika mereka memahami hubungannya dengan fitur yang ingin mereka gunakan.

Misalnya, aplikasi mungkin membutuhkan lokasi pengguna untuk menunjukkan tempat menarik terdekat. Ketika pengguna menge-tap untuk menelusuri tempat terdekat, aplikasi bisa langsung meminta izin lokasi, karena ada hubungan yang jelas antara menelusuri tempat terdekat dan kebutuhan izin lokasi. Jelasnya hubungan ini membuat aplikasi tidak perlu lagi menampilkan layar edukasi tambahan.

Aplikasi meminta izin ketika jelas diperlukan.

Gambar 4. Tanya dalam konteks.

Edukasi dalam konteks

Jika diperlukan, Anda bisa memilih untuk memberikan edukasi tambahan sebelum meminta izin. Sekali lagi, aplikasi Anda harus melakukan ini dalam konteks aksi tertentu, bila tidak jelas mengapa aplikasi Anda membutuhkan akses ke izin yang diminta untuk menyelesaikan aksi tersebut.

Gambar 5 menunjukkan contoh edukasi dalam konteks. Aplikasi ini tidak membutuhkan izin untuk memulai timer, tetapi tanda edukasi inline menunjukkan bahwa ada sebagian aktivitas (deteksi lokasi) yang terkunci. Ketika pengguna menge-tap tanda itu, layar permintaan izin muncul, sehingga pengguna bisa membuka kunci deteksi lokasi.

Anda bisa menggunakan metode shouldShowRequestPermissionRationale() untuk membantu aplikasi Anda memutuskan apakah akan memberikan lebih banyak informasi. Untuk detail selengkapnya, lihat Meminta Izin Pada Waktu Proses.

Ketika kebutuhan izin muncul, aplikasi menjelaskan mengapa izin diperlukan.

Gambar 5. Edukasi dalam konteks.

Tanya di awal

Bila aplikasi Anda jelas membutuhkan izin agar bisa berfungsi, Anda dapat meminta izin tersebut saat pengguna meluncurkan aplikasi. Misalnya, aplikasi peta jelas membutuhkan akses ke lokasi perangkat untuk menjalankan aktivitas yang diinginkan. Tidak diperlukan edukasi lebih lanjut untuk izin ini.

Jika aplikasi jelas membutuhkan izin untuk berjalan, aplikasi bisa langsung memintanya saat diluncurkan.

Gambar 6. Tanya di awal.

Edukasi di awal

Dalam beberapa kasus, aplikasi membutuhkan izin untuk fungsionalitas dasar, tetapi kebutuhan untuk izin tersebut tidak terlalu jelas. Dalam kasus ini, saat pengguna pertama kali memulai aplikasi atau menyetel tampilan jam, aplikasi atau tampilan jam bisa memilih untuk mengedukasi pengguna dan meminta izin.

Ketika meminta izin saat peluncuran, aplikasi bisa menjelaskan mengapa ia membutuhkan izin.

Gambar 7. Edukasi di awal.

Menangani penolakan

Bila seorang pengguna menolak permintaan izin yang tidak penting untuk aktivitas yang dimaksudkan, jangan halangi mereka untuk melanjutkan aktivitas. Bila bagian-bagian tertentu dari aktivitas tersebut dinonaktifkan karena permintaan izin yang ditolak, berikan umpan balik visual yang dapat ditindaklanjuti. Gambar 8 menunjukkan penggunaan ikon kunci untuk menunjukkan bahwa fitur tersebut dikunci karena pengguna tidak memberikan izin untuk menggunakannya.

Ketika pengguna menolak izin, ikon kunci ditampilkan bersama dengan fitur terkait.

Gambar 8. Ikon kunci, menunjukkan fitur yang terkunci karena permintaan izin ditolak.

Saat dialog izin perangkat wearable yang sebelumnya ditolak muncul untuk kedua kalinya, ia berisi opsi Deny, don't show again. Jika pengguna memilih opsi ini, maka satu-satunya cara bagi mereka untuk mengizinkan permintaan izin ini di masa mendatang adalah masuk ke aplikasi Settings perangkat wearable.

Penawaran sistem untuk berhenti meminta izin.

Gambar 9. Penawaran untuk tidak menampilkan layar permintaan izin lagi.

Izin untuk layanan

Seperti yang disebutkan di atas, hanya aktivitas yang bisa memanggil metode requestPermissions(), jadi jika pengguna berinteraksi dengan aplikasi Anda melalui layanan, misalnya tampilan jam, layanan tersebut harus membuka aktivitas latar belakang sebelum meminta izin. Aktivitas ini bisa memberikan edukasi tambahan, atau ia bisa saja aktivitas tak terlihat yang memunculkan dialog sistem.

Bila aplikasi wearable Anda menjalankan layanan yang bukan merupakan tampilan jam, dan pengguna tidak meluncurkan aplikasi yang memungkinkan untuk meminta izin, Anda bisa memposting notifikasi edukasi pada perangkat wearable. Notifikasi ini bisa menyediakan aksi untuk membuka aktivitas yang kemudian memicu dialog izin sistem.

Catatan: Ini adalah satu-satunya penggunaan deretan notifikasi yang bisa diterima untuk permintaan izin.

Pengguna mungkin harus memberikan izin ketika secara tidak langsung berinteraksi dengan aplikasi, melalui layanan.

Gambar 10. Layanan yang meminta izin.

Settings

Seperti ponsel, pengguna bisa mengubah izin aplikasi Wear di Settings kapan saja. Oleh karena itu, ketika pengguna mencoba melakukan sesuatu yang membutuhkan izin, aplikasi harus terlebih dahulu memanggil metode checkSelfPermission() untuk melihat bila aplikasi tersebut memiliki izin untuk melakukan operasi ini. Aplikasi harus melakukan pemeriksaan ini meskipun mengetahui bahwa sebelumnya pengguna telah memberikan izin tersebut, karena pengguna mungkin telah mencabut izin itu.

Pengguna bisa mengubah izin melalui aplikasi Settings.

Gambar 11. Mengubah setelan melalui aplikasi Settings.