BroadNet
JurnalTeknik
Teknik

Isi otomatis SMS OTP: Android SMS Retriever, iOS one-time-code, dan format pesan WebOTP

Kode SMS dapat terisi secara otomatis di Android, iOS, dan web jika pesan diformat untuk itu: hash aplikasi 11 karakter untuk SMS Retriever Android, autocomplete="one-time-code" untuk iOS dan Safari, serta baris terakhir berisi @your-domain #code untuk WebOTP. Berikut adalah setiap format dan satu templat yang berfungsi untuk ketiganya.

8 menit baca
Teknik · Edisi 40
8 menit baca

ode satu kali SMS dapat terisi secara otomatis jika pesan diformat untuk platform tersebut. Pada Android, SMS Retriever API membaca pesan yang tidak lebih dari 140 byte, berisi kode, dan menyertakan hash 11 karakter yang mengidentifikasi aplikasi Anda. Pada iOS dan Safari, tandai input dengan autocomplete="one-time-code" (textContentType oneTimeCode pada aplikasi native) dan keyboard akan menyarankan kode tersebut. Pada web, WebOTP API membaca pesan yang baris terakhirnya adalah @your-domain #code. Satu templat dapat memenuhi kebutuhan ketiganya.

Poin penting

  • Isi otomatis menghilangkan perpindahan aplikasi yang dapat menyebabkan kehilangan pengguna antara saat menerima dan mengetik kode.
  • SMS Retriever Android: pesan maksimal 140 byte, berisi kode dan hash aplikasi 11 karakter Anda; tidak memerlukan izin SMS.
  • SMS User Consent Android: tanpa hash; pesan harus berisi kode alfanumerik 4–10 karakter dengan setidaknya satu angka; pengguna mengetuk untuk mengizinkan.
  • iOS dan Safari: autocomplete="one-time-code" pada input; baris terakhir yang terikat domain memungkinkan saran dari Safari.
  • WebOTP: baris terakhir @domain #code, tanpa skema, port, atau jalur; didukung di Chrome pada Android dan desktop.

Mengapa pengisian otomatis OTP itu penting?

Setiap langkah antara "kode dikirim" dan "kode dimasukkan" menyebabkan kehilangan pengguna: beralih ke aplikasi pesan, menghafal enam digit, lalu beralih kembali. Autofill mengubah proses tersebut menjadi satu ketukan saja. Ini juga mengurangi kesalahan pengetikan dan, dengan kode yang terikat domain, mempersulit penipuan pengguna untuk memasukkan kode di situs yang menyerupai aslinya. Ini tidak memperbaiki pengiriman: kode tetap harus tiba dengan cepat, jadi pasangkan autofill dengan rute yang cepat dan fallback. Lihat praktik terbaik pengiriman OTP.

Bagaimana cara kerja API SMS Retriever Android?

API SMS Retriever memungkinkan aplikasi Android Anda menerima pesan verifikasi tanpa meminta izin baca SMS. Dokumentasi Google menetapkan tiga aturan untuk pesan tersebut:

  • tidak lebih dari 140 byte;
  • berisi kode OTP yang dikirimkan kembali oleh aplikasi ke server Anda;
  • mencakup string hash 11 karakter yang mengidentifikasi aplikasi Anda.

Hash dihitung dari nama paket aplikasi Anda dan sertifikat penandatangannya: tambahkan nama paket ke bentuk heksadesimal sertifikat, ambil SHA-256, lakukan base64-encode, dan ambil 11 karakter pertama. Build debug dan release biasanya ditandatangani dengan kunci yang berbeda, sehingga memiliki hash yang berbeda. Server Anda akan menambahkan hash yang tepat saat menyusun pesan.

Ketika Anda tidak dapat menyertakan hash aplikasi dalam pesan, misalnya karena templat dibagikan ke saluran lain, SMS User Consent API Android akan menampilkan perintah kepada pengguna agar aplikasi Anda dapat membaca satu pesan. Menurut Google, pesan tersebut harus berisi string alfanumerik 4–10 karakter dengan setidaknya satu angka, dan jika Anda menentukan pengirim, pesan harus berasal dari pengirim tersebut. API akan mendengarkan selama sekitar lima menit setelah Anda memulainya dan kemudian mengalami timeout.

Bagaimana cara kerja pengisian otomatis OTP pada iOS?

iOS menawarkan autofill kode keamanan dari keyboard. Dalam aplikasi native, atur textContentType pada kolom teks menjadi oneTimeCode; pada halaman web, tambahkan autocomplete="one-time-code" ke input. Saat SMS yang cocok tiba, kode akan muncul di atas keyboard dan pengguna cukup mengetuknya. Safari tidak menerapkan WebOTP JavaScript API, tetapi dokumentasi WebOTP Chrome mencatat bahwa dengan anotasi autocomplete, keyboard default akan menyarankan kode jika SMS mengikuti format terikat domain di bawah ini (iOS 14 dan macOS Big Sur atau versi setelahnya).

Apa format pesan WebOTP?

WebOTP API memungkinkan halaman web membaca kode dengan navigator.credentials.get({ otp: { transport: ['sms'] } }). SMS harus dimulai dengan teks yang dapat dibaca manusia dan diakhiri dengan baris terakhir dalam format ini:

snippet
Your BroadNet code is 482913.
@www.example.com #482913
  • Baris terakhir dimulai dengan @ dan domain dari halaman yang meminta kode tersebut.
  • Satu spasi, lalu # dan kodenya.
  • Tanpa skema, port, atau jalur dalam domain, dan tidak ada spasi di dalamnya.
  • Bagian yang dapat dibaca manusia juga harus menyertakan kode tersebut, bagi orang yang membaca pesan.

Selalu sertakan autocomplete="one-time-code" pada input, sehingga browser tanpa WebOTP tetap dapat menawarkan kode tersebut.

Apakah satu templat SMS dapat berfungsi di setiap platform?

Ya, jika tetap berada dalam batas byte Android dan baris-barisnya berada dalam urutan yang benar. Templat gabungan:

snippet
Your BroadNet code is 482913. Do not share it.
FA+9qCX9VSu
@www.example.com #482913
PlatformApa yang membaca kodeApa yang dibutuhkan pesan
Aplikasi AndroidSMS Retriever APIKode dan hash aplikasi 11-karakter Anda; maksimal 140 byte
Aplikasi Android (tanpa hash)SMS User Consent APIKode alfanumerik 4–10 karakter dengan setidaknya satu angka
Aplikasi iOSIsi otomatis kode keamanan (oneTimeCode)Kode yang dapat dikenali; disarankan menggunakan baris terikat domain
Safari (iOS, macOS)autocomplete="one-time-code"Baris terakhir @domain #code
Chrome (Android, desktop)WebOTP APIBaris terakhir @domain #code

Hash yang ditampilkan adalah placeholder: gunakan nilai aplikasi Anda sendiri. Pastikan templat tetap dalam set karakter GSM-7 agar tetap menjadi satu segmen; emoji atau huruf beraksen akan mengubah seluruh pesan ke Unicode, yang akan memangkas kapasitas hingga setengahnya dan dapat melampaui batas 140-byte. Lihat pengodean dan segmentasi SMS.

Bagaimana cara mengirim pesan ini dengan BroadNet?

Buat pesan di server Anda dan kirimkan melalui OTP API atau SMS API; baris baru adalah bagian dari teks pesan. Produk OTP milik BroadNet akan beralih ke SMS, WhatsApp, suara, dan Flash Call jika kode tidak tiba, dan MyOTP.App mengirimkan kode melalui SMS, WhatsApp, atau Telegram dari satu akun. Untuk seluruh alur, baca cara membangun alur OTP dan panduan verifikasi OTP multichannel kami.

Pertanyaan yang sering diajukan

Mengapa aplikasi Android saya tidak membaca SMS OTP?

Biasanya hash aplikasi dalam pesan tidak cocok dengan build (kunci debug dan release berbeda), pesan lebih panjang dari 140 byte, atau listener dimulai setelah pesan tiba.

Apakah saya memerlukan izin SMS untuk mengisi otomatis kode di Android?

Tidak. SMS Retriever API dan SMS User Consent API keduanya dapat berfungsi tanpa izin baca SMS.

Bagaimana cara mengaktifkan autofill OTP di iOS?

Atur textContentType ke oneTimeCode pada aplikasi native, atau tambahkan autocomplete="one-time-code" ke input pada halaman web.

Apa itu format WebOTP SMS?

Teks yang dapat dibaca manusia terlebih dahulu, kemudian baris terakhir berisi @ diikuti domain Anda, spasi, # dan kodenya, contohnya @www.example.com #482913.

Apakah WebOTP berfungsi di Safari?

Safari tidak mendukung WebOTP JavaScript API, tetapi dengan autocomplete="one-time-code" keyboard-nya akan menyarankan kode dari pesan dalam format yang terikat domain.

Bisakah saya menggunakan satu template untuk Android, iOS, dan web?

Ya: kode di dalam teks, hash aplikasi pada baris tersendiri, dan baris terikat domain di bagian akhir, semuanya dalam 140 byte.

Aturan platform dibaca pada 28 September 2026 dalam dokumentasi SMS Retriever dan SMS User Consent milik Google (developers.google.com) serta dokumentasi WebOTP milik Chrome (developer.chrome.com). Lihat standar editorial kami.

Apakah ini bermanfaat?

Cara kami menulis dan meninjau konten

Ditulis oleh

Tim Teknik BroadNet

Tim Teknik mengoperasikan jaringan: bind SMPP, stack SS7, mesin rute, serta infrastruktur mendasar yang memungkinkan pengiriman satu miliar pesan per bulan. Mereka menulis di sini ketika ada sesuatu yang layak untuk dicatat.

Jurnal, melalui email

Satu esai setiap bulan. Tidak ada hal lain.

Berlangganan dan kami akan mengirimkan tulisan berikutnya — baik mengenai teknik, regulasi, atau industri — tepat pada hari penerbitannya. Tanpa kampanye drip, tanpa penawaran produk, tanpa pembagian ke pihak ketiga. Berhenti berlangganan hanya dengan satu klik.

Kami mengirimkan satu email sebulan. Berhenti berlangganan kapan saja. Lihat kebijakan privasi.

Apa yang akan Anda dapatkan
  • Tulisan mendalam, bukan sekadar umpan klik
    Enam hingga sebelas menit tulisan terfokus pada satu topik.
  • Ditulis oleh para operator
    Ditulis secara internal oleh teknisi, pimpinan regulasi, dan manajer produk.
  • Sadar wilayah
    Pandangan berbasis pengalaman di kawasan MENA mengenai regulator, operator, dan bauran saluran.
  • Sebulan sekali
    Tanpa kampanye drip. Hanya satu esai saat ada hal yang perlu dibagikan.
Berhenti membaca. Mulai implementasi.

Sebagian besar dari apa yang kami tulis dipelajari langsung dari produksi.

Jika tulisan ini membuat Anda setuju, kita sebaiknya berbicara. Bawa kasus penggunaan, volume, dan pasarnya — kami akan kembali dengan rute, harga, dan referensi pelanggan yang dapat Anda hubungi.

$ curl -X POST https://api.broadnet.me/sms/sendSms