Pemberian Lisensi Google Play adalah layanan berbasis jaringan yang memungkinkan aplikasi membuat kueri pada server pemberian lisensi Google Play yang tepercaya, untuk menentukan apakah aplikasi dilisensikan kepada pengguna perangkat saat ini. Layanan pemberian lisensi didasarkan pada kemampuan server pemberian lisensi Google Play untuk menentukan apakah pengguna tertentu diberi lisensi untuk menggunakan aplikasi tertentu. Google Play mempertimbangkan pemberian lisensi kepada pengguna jika pengguna tercatat sebagai pembeli aplikasi tersebut.
Permintaan dimulai saat aplikasi Anda membuat permintaan kepada layanan yang dihosting oleh aplikasi klien Google Play. Lalu, aplikasi Google Play akan mengirimkan permintaan ke server pemberian lisensi dan menerima hasilnya. Aplikasi Google Play mengirimkan hasil tersebut ke aplikasi Anda, yang dapat mengizinkan atau melarang penggunaan lebih lanjut aplikasi sesuai kebutuhan.
Catatan: Jika versi aplikasi berada dalam jalur pengujian tertutup atau terbuka, semua pengguna yang diizinkan untuk mendownload dan menginstal aplikasi tersebut dianggap sebagai pengguna berlisensi dari aplikasi tersebut. Untuk informasi selengkapnya, lihat Menggunakan jalur pengujian untuk mendapatkan masukan awal yang sangat berharga dari pengguna.
![](https://developer.android.com/static/images/google/play/licensing/licensing_arch.png?authuser=6&hl=id)
Gambar 1. Aplikasi Anda memulai pemeriksaan lisensi, melalui License Verification Library dan klien Google Play, yang menangani komunikasi dengan server Google Play.
Catatan: Sebelumnya Anda dapat menguji aplikasi dengan mengupload versi "draf" yang tidak dipublikasikan. Fungsionalitas ini tidak lagi didukung. Sebagai gantinya, Anda harus memublikasikannya ke jalur pengujian tertutup atau terbuka. Untuk informasi selengkapnya, lihat Aplikasi Draf Tidak Lagi Didukung.
Untuk mengidentifikasi pengguna dan menentukan status lisensi dengan benar, server pemberi lisensi memerlukan informasi tentang aplikasi dan pengguna—aplikasi Anda dan klien Google Play bekerja sama untuk mengumpulkan informasi dan klien Google Play meneruskannya ke server.
Untuk membantu Anda menambahkan pemberian lisensi ke aplikasi, Android SDK menyediakan kumpulan sumber library yang dapat didownload yang dapat Anda sertakan dalam project aplikasi: paket Google Market Licensing. License Verification Library (LVL) adalah library yang dapat Anda tambahkan ke aplikasi yang menangani semua komunikasi terkait pemberian lisensi dengan layanan pemberian lisensi Google Play. Dengan menambahkan LVL ke aplikasi, aplikasi Anda dapat menentukan status pemberian lisensinya untuk pengguna saat ini cukup dengan memanggil metode dan mengimplementasikan callback yang menerima respons statusnya.
Aplikasi Anda tidak membuat kueri pada server pemberian lisensi secara langsung, tetapi memanggil klien Google Play melalui IPC jarak jauh untuk memulai permintaan lisensi. Dalam permintaan lisensi:
- Aplikasi Anda menyediakan: nama paketnya, nonce yang nantinya digunakan untuk memvalidasi setiap respons dari server, dan callback tempat respons dapat ditampilkan secara asinkron.
- Klien Google Play mengumpulkan informasi yang diperlukan tentang pengguna dan perangkat, seperti nama pengguna akun Google utama, IMSI, dan informasi lainnya terkait perangkat. Lalu, klien Google Play akan mengirimkan permintaan pemeriksaan lisensi ke server atas nama aplikasi Anda.
- Server Google Play mengevaluasi permintaan tersebut menggunakan semua informasi yang tersedia, dalam upaya untuk membangun identitas pengguna ke tingkat keyakinan yang memadai. Kemudian, server memeriksa identitas pengguna pada catatan pembelian aplikasi Anda dan menampilkan respons lisensi, yang ditampilkan klien Google Play ke aplikasi Anda melalui callback IPC.
Anda dapat memilih waktu dan frekuensi aplikasi Anda memeriksa lisensinya dan dapat sepenuhnya mengontrol cara aplikasi menangani responsnya, memverifikasi data respons yang ditandatangani, dan menerapkan kontrol akses.
Perhatikan bahwa selama pemeriksaan lisensi, aplikasi tidak mengelola koneksi jaringan apa pun atau menggunakan API terkait pemberian lisensi apa pun di platform Android.
Respons Lisensi Aman
Untuk memastikan integritas setiap kueri lisensi, server menandatangani data respons lisensi menggunakan pasangan kunci RSA yang dibagikan secara eksklusif antara server Google Play dan Anda.
Layanan pemberian lisensi menghasilkan pasangan kunci pemberian lisensi untuk setiap aplikasi dan mengekspos kunci publik pada halaman Layanan & API aplikasi Anda di Konsol Play. Anda harus menyalin kunci publik dari Konsol Play dan menyematkannya di kode sumber aplikasi Anda. Server menyimpan kunci pribadi secara internal dan menggunakannya untuk menandatangani respons lisensi untuk aplikasi yang Anda publikasikan dengan akun tersebut.
Saat menerima respons yang telah ditandatangani, aplikasi Anda menggunakan kunci publik yang tersemat untuk memverifikasi data. Penggunaan kriptografi kunci publik pada layanan pemberian lisensi memungkinkan aplikasi mendeteksi respons yang telah dirusak atau dipalsukan.
Library Verifikasi Pemberian Lisensi
Android SDK menyediakan paket yang dapat didownload yang disebut paket Google Market Licensing, yang mencakup License Verification Library (LVL). LVL sangat mempermudah proses penambahan pemberian lisensi ke aplikasi Anda dan membantu memastikan implementasi yang lebih aman dan kuat untuk aplikasi Anda. LVL menyediakan class internal yang menangani sebagian besar operasi standar kueri lisensi, seperti menghubungi klien Google Play untuk memulai permintaan lisensi dan memverifikasi serta memvalidasi responsnya. LVL juga mengekspos antarmuka yang memungkinkan Anda memasukkan kode kustom dengan mudah untuk menentukan kebijakan pemberian lisensi dan mengelola akses sesuai kebutuhan aplikasi Anda. Antarmuka LVL yang utama adalah:
Policy
- Implementasi Anda menentukan apakah akses ke aplikasi diizinkan, berdasarkan respons lisensi yang diterima dari server dan data lain yang tersedia (seperti dari server backend yang terkait dengan aplikasi Anda). Implementasi tersebut dapat mengevaluasi berbagai kolom respons lisensi dan menerapkan batasan lainnya, jika diperlukan. Implementasi tersebut juga memungkinkan Anda mengelola penanganan pemeriksaan lisensi yang menyebabkan error, seperti error jaringan.
LicenseCheckerCallback
- Implementasi Anda mengelola akses ke
aplikasi, berdasarkan pada hasil penanganan respons lisensi objek
Policy
. Implementasi Anda dapat mengelola akses dengan cara apa pun yang diperlukan, termasuk menampilkan hasil lisensi di UI atau mengarahkan pengguna untuk membeli aplikasi (jika belum dilisensikan).
Untuk membantu Anda memulai Policy
, LVL menyediakan dua implementasi penuh Policy
yang lengkap dan dapat Anda gunakan tanpa perlu diubah atau disesuaikan dengan kebutuhan Anda:
ServerManagedPolicy
Policy
fleksibel yang menggunakan setelan yang disediakan oleh server pemberian lisensi untuk mengelola pembuatan cache respons dan akses ke aplikasi saat perangkat dalam keadaan offline (misalnya saat pengguna berada dalam pesawat). Untuk sebagian besar aplikasi, penggunaanServerManagedPolicy
sangat direkomendasikan.StrictPolicy
Policy
yang dibatasi yang tidak men-cache data respons apa pun dan hanya mengizinkan akses aplikasi saat server menampilkan respons berlisensi.
LVL tersedia sebagai paket Android SDK yang dapat didownload. Paket tersebut menyertakan LVL itu sendiri dan aplikasi contoh yang menunjukkan bagaimana library sebaiknya diintegrasikan dengan aplikasi Anda dan bagaimana aplikasi sebaiknya mengelola data respons, interaksi UI, dan kondisi error.
Sumber LVL disediakan sebagai project library Android, yang berarti bahwa Anda dapat menyimpan sekumpulan sumber library dan membagikannya ke beberapa aplikasi. Lingkungan pengujian penuh juga tersedia melalui SDK, sehingga Anda dapat mengembangkan dan menguji implementasi pemberian lisensi pada aplikasi Anda sebelum memublikasikannya, meskipun Anda tidak memiliki akses ke perangkat fisik.
Persyaratan dan Batasan
Google Play Licensing didesain untuk memungkinkan Anda menerapkan kontrol lisensi ke aplikasi yang Anda publikasikan melalui Google Play. Layanan ini tidak didesain untuk mengizinkan Anda mengontrol akses ke aplikasi yang tidak dipublikasikan melalui Google Play atau yang dijalankan pada perangkat yang tidak menawarkan klien Google Play.
Berikut adalah beberapa poin yang perlu diperhatikan saat Anda mengimplementasikan pemberian lisensi pada aplikasi Anda:
- Suatu aplikasi hanya dapat menggunakan layanan tersebut jika klien Google Play diinstal pada perangkat host-nya dan perangkat tersebut menjalankan Android 1.5 (API level 3) atau yang lebih tinggi.
- Untuk menyelesaikan pemeriksaan lisensi, server pemberian lisensi harus dapat diakses melalui jaringan. Anda dapat mengimplementasikan perilaku pembuatan cache lisensi untuk mengelola akses ke aplikasi Anda saat tidak ada konektivitas jaringan.
- Keamanan kontrol pemberian lisensi aplikasi Anda sangat mengandalkan desain implementasi Anda sendiri. Layanan ini menyediakan pemblokiran build yang memungkinkan Anda memeriksa pemberian lisensi dengan aman, tetapi penerapan dan penanganan lisensi yang sebenarnya merupakan faktor yang bergantung pada Anda. Dengan mengikuti praktik terbaik pada dokumen berikut, Anda dapat membantu memastikan bahwa implementasi Anda akan aman.
- Menambahkan pemberian lisensi ke aplikasi tidak memengaruhi fungsi aplikasi saat dijalankan pada perangkat yang tidak menawarkan Google Play.
- Anda dapat mengimplementasikan kontrol pemberian lisensi untuk aplikasi gratis, tetapi hanya jika Anda menggunakan layanan ini untuk menyediakan file perluasan APK.
Penggantian untuk Perlindungan dari Penyalinan
Google Play Licensing merupakan mekanisme yang fleksibel dan aman untuk mengontrol akses ke aplikasi Anda. Layanan ini mengganti mekanisme Perlindungan dari Penyalinan secara efektif (tidak lagi didukung) yang sebelumnya ditawarkan di Google Play dan memberikan potensi distribusi yang lebih luas untuk aplikasi Anda.
Pemberian lisensi memungkinkan Anda berpindah ke model berbasis lisensi yang dapat diterapkan ke semua perangkat yang memiliki akses ke Google Play. Akses tidak terikat pada karakteristik perangkat host, tetapi pada aplikasi di Google Play (melalui kunci publik aplikasi) dan kebijakan pemberian lisensi yang Anda tentukan. Aplikasi Anda dapat diinstal dan dikelola di perangkat apa pun pada penyimpanan apa pun, termasuk kartu SD.
Meskipun tidak ada mekanisme lisensi yang dapat sepenuhnya mencegah penggunaan tidak sah, layanan pemberian lisensi memungkinkan Anda mengontrol akses untuk hampir semua jenis penggunaan normal, di semua perangkat yang kompatibel, baik yang terkunci maupun tidak terkunci.
Untuk mulai menambahkan pemberian lisensi aplikasi ke aplikasi Anda, lanjutkan ke Menyiapkan Pemberian Lisensi.