Gunakan Android Developer Status API untuk memeriksa apakah nama paket aplikasi Android terdaftar ke developer terverifikasi. Jika Anda membuat alat pengembangan software, IDE, atau alur kerja CI/CD otomatis, Anda dapat mengintegrasikan API server-ke-server ini untuk melakukan hal berikut:
- Memeriksa apakah nama paket aplikasi terdaftar ke developer terverifikasi
- Memvalidasi apakah sidik jari SHA-256 sertifikat penandatanganan aplikasi cocok dengan kredensial yang tercatat untuk nama paket terdaftar
- Mendorong developer dalam antarmuka alat Anda untuk mendaftarkan aplikasi yang tidak dikenal dalam program verifikasi developer Android
API ini dirancang untuk mendukung berbagai alur kerja developer:
| Kasus penggunaan | Deskripsi | Endpoint API |
|---|---|---|
| Kelayakan nama paket | Memeriksa apakah nama paket sudah terdaftar. Menampilkan REGISTERED jika nama paket ditautkan ke developer terverifikasi, atau NOT_REGISTERED jika sebaliknya. |
CheckPackageRegistrationStatus |
| Aplikasi telah didaftarkan | Memeriksa apakah pasangan nama paket dan sidik jari sertifikat tertentu terdaftar. Menampilkan REGISTERED jika pasangan nama paket dan sidik jari sertifikat terdaftar, NOT_REGISTERED jika pasangan nama paket dan sidik jari sertifikat tidak terdaftar, atau REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT jika nama paket terdaftar dengan sidik jari sertifikat yang berbeda. |
CheckPackageRegistrationStatus |
Panduan ini menjelaskan cara menyelesaikan tugas-tugas berikut:
- Siapkan akses dan autentikasi Google Cloud API.
- Verifikasi apakah pasangan nama paket dan sidik jari SHA-256 sertifikat publik aplikasi telah didaftarkan ke program verifikasi developer Android oleh developer terverifikasi, dengan sidik jari SHA-256 sertifikat publik yang diberikan, atau sidik jari SHA-256 sertifikat publik yang berbeda.
- Tangani status pendaftaran API dalam alur kerja IDE atau alat developer Anda.
Prasyarat
Dokumen ini ditujukan bagi developer aplikasi Android atau developer alat pengembangan software. Sebelum memulai, Anda harus memiliki:
- Akses administratif ke project Google Cloud.
- Pemahaman dasar tentang RESTful API, JSON, dan sidik jari sertifikat SHA-256.
Anda juga harus memahami istilah-istilah berikut:
| Istilah | Definisi |
|---|---|
| Verifikasi developer Android | Verifikasi developer Android adalah persyaratan baru yang dirancang untuk menautkan entitas di dunia nyata (individu dan organisasi) dengan aplikasi Android mereka. Android akan mewajibkan semua aplikasi didaftarkan oleh developer terverifikasi agar dapat diinstal oleh pengguna di perangkat Android bersertifikasi. |
| Sidik jari sertifikat | Hash SHA-256 sertifikat publik yang digunakan untuk menandatangani aplikasi. |
| Status pendaftaran | Status yang ditampilkan oleh API untuk nama paket aplikasi atau pasangan nama paket aplikasi dan sidik jari SHA-256 sertifikat publik aplikasi. Status ini menentukan tindakan yang harus Anda lakukan (misalnya, REGISTERED, NOT_REGISTERED). |
Endpoint layanan
Endpoint layanan adalah URL dasar yang menentukan alamat jaringan layanan API. Layanan ini memiliki endpoint layanan berikut, dan semua URI didasarkan pada endpoint layanan ini:
https://androiddeveloperidstatus.googleapis.com
Mengaktifkan API
Untuk menggunakan Android Developer ID Status API, Anda harus menyelesaikan langkah-langkah penyiapan untuk membuat project dan mengaktifkan API.
Membuat project Google Cloud
- Buat akun Google Cloud jika Anda belum memilikinya.
- Buka Konsol Google Cloud.
- Buat project Google Cloud.
Aktifkan API di project Anda
- Di Konsol Google Cloud, buka APIs & Services > Library.
- Pilih project Anda dari menu drop-down.
- Cari Android Developer ID Status API.
- Klik Enable.
Autentikasikan
API ini mendukung kredensial kunci API. Untuk mendapatkan kunci API:
- Di konsol Google Cloud, buka APIs & Services > Credentials.
- Klik + Create credentials, lalu pilih API key.
- Konfigurasi kunci dan salin. Gunakan kunci ini di header permintaan Anda.
Memeriksa status pendaftaran aplikasi
Anda dapat membuat kueri resource PackageRegistrationStatus untuk memverifikasi nama paket saja, atau memeriksa nama paket yang dipasangkan dengan sidik jari sertifikat tertentu.
Memeriksa nama paket
Untuk memeriksa apakah nama paket aplikasi didaftarkan oleh developer terverifikasi, buat permintaan
terautentikasi GET yang berisi nama paket aplikasi Android (misalnya, com.example.app) ke endpoint packageRegistrationStatus:check
tanpa parameter opsional:
Permintaan:
curl -X GET "https://androiddeveloperidstatus.googleapis.com/v1/packages/com.example.app/packageRegistrationStatus:check" \
-H "X-Goog-Api-Key: [key]"
Hasil
Respons (Terdaftar):
Jika nama paket terdaftar, Anda akan menerima isi respons HTTP berikut dengan kode respons HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED"
}
Tindakan yang disarankan: Beri tahu developer bahwa nama paket sudah terdaftar.
Respons (Tidak terdaftar):
Jika nama paket tidak terdaftar, Anda akan menerima isi respons HTTP berikut dengan kode respons HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "NOT_REGISTERED"
}
Memverifikasi pasangan nama paket dan sidik jari sertifikat
Untuk memeriksa apakah nama paket aplikasi terdaftar dengan sidik jari SHA-256 sertifikat publik tertentu, teruskan parameter kueri certificateFingerprint:
Permintaan:
curl -X GET "https://androiddeveloperidstatus.googleapis.com/v1/packages/com.example.app/packageRegistrationStatus:check?certificateFingerprint=d6ac89ed1d0a805aad4b087d06d5f41645b814480b133fbc867ef7498d069e06" \
-H "X-Goog-Api-Key: [key]"
Hasil
Respons (Terdaftar dengan sidik jari sertifikat yang cocok):
Jika nama paket terdaftar dengan sidik jari SHA-256 sertifikat publik yang diberikan, Anda akan menerima isi respons HTTP berikut dengan kode respons HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED"
}
Respons (Terdaftar dengan sidik jari sertifikat yang berbeda):
Jika nama paket terdaftar dengan sidik jari SHA-256 sertifikat yang berbeda dengan yang diberikan, Anda akan menerima isi respons HTTP berikut dengan kode respons HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "REGISTERED_WITH_ANOTHER_CERTIFICATE_FINGERPRINT"
}
Respons (Tidak terdaftar):
Jika nama paket tidak terdaftar dengan sidik jari SHA-256 sertifikat publik yang diberikan, Anda akan menerima isi respons HTTP berikut dengan kode respons HTTP 200:
{
"name": "packages/com.example.app/packageRegistrationStatus",
"state": "NOT_REGISTERED"
}
Contoh penerapan Java
Class Java berikut menunjukkan cara memanggil API menggunakan HttpClient standar
Java 11.
import java.io.IOException;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
public class DeveloperIdStatusClient {
private static final String API_ENDPOINT = "https://androiddeveloperidstatus.googleapis.com";
public static void main(String[] args) {
String apiKey = "YOUR_API_KEY";
String packageName = "com.example.app";
String certificateFingerprint = "d6ac89ed1d0a805aad4b087d06d5f41645b814480b133fbc867ef7498d069e06";
try {
String response = checkPackageRegistrationStatus(apiKey, packageName, certificateFingerprint);
System.out.println("Response: " + response);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
/**
* Checks the registration status of an Android package.
*
* @param apiKey The Google API key for authentication.
* @param packageName The fully-qualified Android package name (for example, "com.example.app").
* @param certificateFingerprint Optional SHA-256 certificate fingerprint. Pass null or empty to omit.
* @return The JSON response string from the API.
*/
public static String checkPackageRegistrationStatus(
String apiKey, String packageName, String certificateFingerprint)
throws IOException, InterruptedException {
// 1. Build the URL path (accepts dots directly)
// Format: /v1/packages/{package}/packageRegistrationStatus:check
String path = String.format("/v1/packages/%s/packageRegistrationStatus:check", packageName);
// 2. Build query parameters (only certificateFingerprint if provided)
StringBuilder queryBuilder = new StringBuilder();
if (certificateFingerprint != null && !certificateFingerprint.isEmpty()) {
queryBuilder.append("certificateFingerprint=")
.append(URLEncoder.encode(certificateFingerprint, StandardCharsets.UTF_8));
}
String fullUrl = API_ENDPOINT + path;
if (queryBuilder.length() > 0) {
fullUrl += "?" + queryBuilder.toString();
}
// 3. Create and send the HTTP GET request with API Key header
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(fullUrl))
.header("Accept", "application/json")
.header("X-Goog-Api-Key", apiKey)
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() != 200) {
throw new IOException("Unexpected response code: " + response.statusCode() + ", body: " + response.body());
}
return response.body();
}
}
Memahami status pendaftaran dan penanganan error
Jika permintaan API gagal, Android Developer ID Status API akan menampilkan objek error JSON Google Cloud standar di isi respons. Objek ini memberikan struktur yang konsisten untuk memahami dan menangani error.
Contoh respons error:
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
Objek error berisi kolom kunci berikut:
code: Kode status HTTP (misalnya,400,403,500).message: Deskripsi error dalam bahasa Inggris yang ditujukan untuk developer. Pesan ini tidak stabil dan dapat berubah, jadi jangan buat logika parsing di sekitarnya.status: Kode error kanonis yang mengidentifikasi jenis error secara terprogram (misalnya,INVALID_ARGUMENT,PERMISSION_DENIED). Logika penanganan error Anda harus dibangun berdasarkan ID yang stabil ini.
Tabel berikut mencantumkan error paling umum yang ditampilkan oleh API dan tindakan yang direkomendasikan.
| Status HTTP | Kode error kanonis (status) |
Arti dan penyebab umum | Saran tindakan | Dapat dicoba lagi? |
|---|---|---|---|---|
400 Permintaan Buruk |
INVALID_ARGUMENT |
Permintaan salah format. | Jangan coba lagi. Periksa kolom detail dalam respons error untuk mengidentifikasi pelanggaran kolom tertentu. Perbaiki payload permintaan dan kirim lagi. | Tidak |
401 Tidak sah |
UNAUTHENTICATED |
Token akses tidak ada, sudah tidak berlaku, atau tidak valid. | Jangan coba lagi segera. Pastikan Anda menggunakan token atau kunci akses yang benar. | Tidak |
403 Terlarang |
PERMISSION_DENIED |
Anda telah diautentikasi, tetapi project Anda tidak memiliki izin untuk mengakses API. Penyebab paling umum adalah Anda belum mengaktifkan API di project Google Cloud Anda. | Jangan coba lagi. Pastikan Anda menggunakan project ID yang benar dan API sudah diaktifkan. | Tidak |
429 Terlalu Banyak Permintaan |
RESOURCE_EXHAUSTED |
Anda telah melampaui kuota API untuk project Anda. | Berhenti mengirim permintaan dan coba lagi setelah beberapa saat. Periksa kuota project Anda di konsol Google Cloud. | Ya |
500 Error Server Internal |
INTERNAL |
Terjadi error tak terduga di server Google. | Masalah ini kemungkinan bersifat sementara. Coba lagi permintaan menggunakan strategi backoff eksponensial. Jika error masih berlanjut, hubungi dukungan. | Ya |
503 Layanan Tidak Tersedia |
UNAVAILABLE |
Layanan ini untuk sementara tak tersedia. | Coba lagi permintaan menggunakan strategi backoff eksponensial. | Ya |
Batas kuota
Kuota penggunaan diterapkan per project untuk memastikan keandalan layanan.
| Metode API | Batas default (per project) | Catatan |
|---|---|---|
CheckPackageRegistrationStatus |
1.000 permintaan per hari | Pemanggil diwajibkan untuk mengelola pembatasan kapasitas internal untuk mencegah penyalahgunaan. |
Memantau penggunaan Anda
Anda dapat memantau penggunaan API project saat ini dan melihat seberapa dekat Anda dengan batas kuota langsung di Konsol Google Cloud.
- Buka halaman API & Layanan > Dasbor.
- Pilih Android Developer ID Status API.
- Klik tab Kuota.
Dasbor ini memberikan perincian mendetail tentang volume permintaan Anda dari waktu ke waktu.