Pindah ke Konten Utama

Kebijakan Kontak Google Play 2027: Panduan Capacitor

Google Play's Kebijakan Izin Kontak membatasi READ_CONTACTS mulai Januari 2027. Pelajari perubahan untuk Capacitor aplikasi dan cara menggunakan Pemilih Kontak.

Kredit Artikel

Martin Donadieu

Penulis

Valeria

Pengulas

Jordan

Editor

Panduan Kebijakan Kontak Google Play 2027: Capacitor

Kebijakan Izin Kontak Google Play berarti bahwa, mulai tanggal 27 Januari 2027, aplikasi yang mengincar Android 17 (API tingkat 37) atau lebih tinggi hanya dapat meminta READ_CONTACTS Jika Pemilih Kontak Android tidak dapat mendukung fitur inti, dan harus membenarkan hal itu dengan deklarasi Console Play. Untuk sebagian besar Capacitor aplikasi yang membaca kontak untuk mengundang teman, berbagi file atau mengisi nomor telepon, solusinya adalah untuk beralih ke Pemilih Kontak dan menghapus izin. Panduan ini menjelaskan kebijakan, menunjukkan cara melakukannya dengan @capgo/capacitor-contactsdan menjelaskan apa yang harus dilakukan jika Anda memang membutuhkan buku alamat penuh.

Apa yang dikatakan kebijakan ini

Google mengumumkan kebijakan ini pada tanggal 15 April 2026, sebagai bagian dari setelan pembaruan privasi. Poin-poin kunci, dari halaman Bantuan Console Play:

  • Lingkup: Aplikasi yang mengincar Android 17 (API 37) atau lebih tinggi dan meminta READ_CONTACTS.
  • Aturan: Anda hanya dapat meminta READ_CONTACTS jika Pemilih Kontak Android tidak cukup untuk fitur inti aplikasi Anda.
  • Klarifikasi: Aplikasi yang memerlukan izin tersebut harus mengisi deklarasi di Console Play yang menjelaskan fitur-fitur mana yang memerlukan izin tersebut dan mengapa pilihan pengguna tidak cukup.
  • Jadwal: Console Play mulai meminta aplikasi yang mengklarifikasi READ_CONTACTS pada September 2026. Pemenuhan wajib pada tanggal 27 Januari 2027. Google menyebutkan ekstensi diri sendiri 30 hari di Console Play.
  • Kekecualan: aplikasi pribadi dan pengelolaan perangkat perusahaan di luar lingkup.
  • Data: data kontak dianggap pribadi dan sensitif di bawah kebijakan Data Pengguna, dan Anda tidak boleh memublikasikan data kontak non-publik tanpa izin dari orang-orang yang diceritakan.

Penggunaan yang dapat mempertahankan READ_CONTACTS

Google menyebutkan fitur-fitur inti seperti aplikasi manajemen kontak, dialer, dan aplikasi SMS, riwayat panggilan, dan skrining panggilan, CRM, fitur aksesibilitas, asisten pribadi, pencarian teman, backup, dan restore, serta keyboard atau autocomplete.

Penggunaan yang seharusnya beralih ke picker

Menyambut atau merujuk seseorang, berbagi file, berkolaborasi, atau memilih kontak untuk mengirim uang. Jika itu alasannya aplikasi Anda membaca kontak, deklarasi tidak akan diterima. Gunakan picker.

Perubahan apa yang terjadi pada Android 17

Android 17 ships a new system Contact Picker. Apps get a temporary, read-only session URI that only exposes the contacts and fields the user selected, without any permission. For apps targeting Android 17, the system automatically upgrades the classic Intent.ACTION_PICK Pada versi Android yang lebih tua, memilih baris data spesifik (misalnya nomor telepon) melalui picker kontak telah selalu mengembalikan URI yang dapat dibaca aplikasi tanpa

On older Android versions, picking a specific data row (for example a phone number) through the contacts picker has always returned a URI the app can read without READ_CONTACTSYaitu hal yang membuat aliran tanpa izin memungkinkan di setiap versi Android.

Mengapa “pilih kontak” pernah memerlukan READ_CONTACTS

Banyak Capacitor plugin menerapkan “pilih kontak” dengan membuka picker untuk kontak seluruhnya, kemudian mengakses buku alamat untuk nomor telepon dan email kontak tersebut. Pertanyaan kedua ini memerlukan READ_CONTACTSJadi bahkan aplikasi yang hanya ingin satu nomor telepon akhirnya mengumumkan izin, yang tepatnya apa yang diincar oleh kebijakan ini.

Pemecahan masalah adalah dengan meminta picker untuk bidang spesifik yang Anda butuhkan, sehingga URI hasilnya sudah membawa data.

Pilih telepon, email atau alamat tanpa READ_CONTACTS

@capgo/capacitor-contacts Ditambahkan property option di versi 8.1.0. Ketika diatur, Android membuka picker terhadap tabel telepon, email atau alamat pos dan membaca baris yang dipilih dari URI yang diberikan. Tidak READ_CONTACTS perlu diatur pada versi Android manapun. Di iOS, picker sistem tidak pernah memerlukan izin kontak.

bun add @capgo/capacitor-contacts
bunx cap sync
import { CapacitorContacts, ContactProperty } from '@capgo/capacitor-contacts';

export async function pickPhoneNumber(): Promise<string | undefined> {
  const { contacts } = await CapacitorContacts.pickContacts({
    property: ContactProperty.PhoneNumber,
  });
  const picked = contacts[0];
  return picked?.phoneNumbers?.[0]?.value;
}

export async function pickEmail(): Promise<string | undefined> {
  const { contacts } = await CapacitorContacts.pickContacts({
    property: ContactProperty.EmailAddress,
  });
  return contacts[0]?.emailAddresses?.[0]?.value;
}

Dengan property, hasilnya berisi kontak id, displayName dan hanya properti yang dipilih. Pilihan banyak diabaikan, pengambilan properti selalu mengembalikan satu nilai. Jika pengguna membatalkan, cek array kosong.

Plugin ini tidak mengklaim READ_CONTACTS atau WRITE_CONTACTS Dalam manifest sendiri, jadi jika Anda hanya menggunakan pilihan properti, manifest yang diintegrasikan tetap bersih.

Ketika Anda masih memerlukan akses baca kontak

Metode plugin ini membaca buku alamat dan terus memerlukan izin:

  • pickContacts() atau pickContact() without propertyketika Anda ingin memperoleh seluruh catatan kontak
  • getContacts(), getContactById(), countContacts()
  • getGroups(), getGroupById(), getAccounts()

If your app is a CRM, a backup tool or a friend matching feature, that is a legitimate core use. Add the permission yourself and file the declaration:

<!-- android/app/src/main/AndroidManifest.xml -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
import { CapacitorContacts } from '@capgo/capacitor-contacts';

const perm = await CapacitorContacts.requestPermissions({ permissions: ['readContacts'] });
if (perm.readContacts === 'granted' || perm.readContacts === 'limited') {
  const { contacts } = await CapacitorContacts.getContacts({
    fields: ['displayName', 'phoneNumbers'],
    limit: 200,
    offset: 0,
  });
  console.log(contacts.length);
}

Kebijakan ini bertujuan READ_CONTACTSSasaran kebijakan ini adalah WRITE_CONTACTS (for createContact, updateContactById, deleteContactById) hanya ditambahkan jika Anda menggunakan metode tersebut.

Rencana migrasi untuk sebuah aplikasi Capacitor

  1. Audit manifest yang telah diintegrasikan. Bangun rilis Anda dan buka android/app/build/intermediates/merged_manifest/ (atau gunakan tab Manifest Merged di Android Studio). Beberapa plugin menambahkan READ_CONTACTS Tanpa Anda sadari. Jika plugin menambahkannya dan Anda tidak membutuhkannya, hapuslah. tools:node="remove":

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
        <uses-permission android:name="android.permission.READ_CONTACTS" tools:node="remove" />
    </manifest>
  2. Daftar semua tempat Anda menyentuh kontak. Untuk setiap satu, putuskan: picker dengan properti, atau buku alamat penuh.

  3. Gantikan alur undangan dan berbagi dengan pickContacts({ property }).

  4. Tahan izin hanya untuk fitur utama, dan siapkan teks deklarasi: fitur mana, mengapa picker tidak cukup, video jika fitur sulit ditemukan.

  5. Kirim bangun native. Perubahan manifest dan plugin memerlukan rilis Play baru. Jika Anda membangun di CI, Capgo Bangun Dapat menghasilkan aplikasi Android yang ditandatangani, dan Penghasil Kunci Android bermanfaat jika Anda sedang mengatur tanda tangan untuk pertama kalinya.

  6. membantu jika Anda mengatur tanda tangan untuk pertama kalinya. Setelah plugin native baru aktif, perubahan kata dan alur di picker dapat diterbitkan Capgo live updates.

__CAPGO_KEEP_0__ pembaruan hidup

If you use @capacitor-community/contacts Jika Anda menggunakan (8.0.0 pada saat menulis), Android pickContact meminta kelompok izin kontak sebelum membuka picker, kemudian membaca kontak penuh dari buku alamat. Tidak ada properti mode. Nama metode juga berbeda (getContact vs getContactById, objek proyeksi vs array). Perbandingan kami dari plugin kontak komunitas dan plugin __CAPGO_KEEP_0__ fields array). perbandingan plugin kontak komunitas dan plugin Capgo migrasi dari Cordova ke __CAPGO_KEEP_0__

Jika Anda masih menggunakan plugin kontak Cordova di dalam Capacitor, sekarang adalah waktu yang tepat untuk menggantinya. Lihat mengganti dari Cordova ke Capacitor.

Troubleshooting

Penggunaan picker mengembalikan kontak dengan tidak ada nomor telepon. Panggilan Anda pickContacts() tanpa property dan aplikasi tidak memiliki READ_CONTACTS. Hanya id dan displayName Kembali (dan pada Android 17+, bidang yang diberikan picker) property.

(dan di Android 17+, bidang yang diberikan picker) kembali. Tambahkan Sebuah library menambahkannya. Periksa manifest yang diintegrasikan dan hapusnya dengan tools:node="remove"Sebuah library menambahkannya. Periksa manifest yang diintegrasikan dan hapusnya dengan

Pengakuan Ditolak. Invites, referrals and sharing are listed as cases for the picker. Rework the feature or show clearly why the full list is core (for example friend matching that runs against the whole address book).

iOS meminta izin akses kontak. Anda memanggil sebuah metode yang membaca buku alamat. Pilih tidak pernah membutuhkannya. Hapus NSContactsUsageDescription Jika Anda hanya memilih.

Kalender Utama

Tanggal Apa yang terjadi
15 April 2026 Kebijakan diumumkan
September 2026 Play Console meminta aplikasi yang mengklaim READ_CONTACTS untuk mengajukan deklarasi
27 Januari 2027 Pengawasan wajib untuk aplikasi yang mengincar Android 17 (API 37) atau lebih baru

Periksa halaman Bantuan Play Console untuk kebijakan sebelum Anda mengirimkan, Google dapat mengupdate jadwal dan istilah.

Live update untuk aplikasi Capacitor

Ketika ada bug pada layer web yang hidup, kirimkan perbaikan melalui Capgo bukan menunggu hari-hari untuk persetujuan toko aplikasi. Pengguna mendapatkan update di latar belakang sementara perubahan native tetap dalam jalur review normal.

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk membuat aplikasi seluler profesional yang sebenarnya