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.
Apa itu SMS User Consent API?
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:
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:
Your BroadNet code is 482913. Do not share it.FA+9qCX9VSu @www.example.com #482913| Platform | Apa yang membaca kode | Apa yang dibutuhkan pesan |
|---|---|---|
| Aplikasi Android | SMS Retriever API | Kode dan hash aplikasi 11-karakter Anda; maksimal 140 byte |
| Aplikasi Android (tanpa hash) | SMS User Consent API | Kode alfanumerik 4–10 karakter dengan setidaknya satu angka |
| Aplikasi iOS | Isi 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 API | Baris 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.
