Panduan Integrasi SDK Android

Ikhtisar

SDK Android MTVerify adalah SDK autentikasi nomor ponsel yang menyediakan verifikasi nomor telepon yang cepat, aman, dan tingkat operator.

Fitur Utama

  • Inisialisasi SDK: Mengambil konfigurasi secara otomatis dan menginisialisasi melalui AppKey
  • Pemeriksaan cakupan: Memeriksa apakah lingkungan jaringan saat ini mendukung layanan autentikasi
  • Autentikasi nomor: Memulai autentikasi nomor ponsel dan memperoleh token autentikasi

Persyaratan Sistem

  • Android 5.0 (API 21) ke atas
  • Perangkat pengguna telah mengaktifkan data seluler

Panduan Integrasi

Konfigurasi Izin

Paket aar meminta izin berikut:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
              
              <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

            
Tampilkan blok kode ini di jendela mengambang

Konfigurasi Operator

Karena antarmuka operator memerlukan transmisi teks biasa HTTP, Anda perlu mengonfigurasi kebijakan keamanan jaringan di AndroidManifest.xml aplikasi Anda:

<application android:networkSecurityConfig="@xml/mtverify_network_security_config" ...> ... </application>
              
              <application
    android:networkSecurityConfig="@xml/mtverify_network_security_config"
    ...>
    ...
</application>

            
Tampilkan blok kode ini di jendela mengambang

Anda juga perlu menyalin file mtverify_network_security_config.xml ke direktori res/xml/ aplikasi Anda. Anda dapat menemukan file ini di paket instalasi yang Anda unduh.

Daftar Metode

init

Menginisialisasi SDK MTVerify serta mengatur kunci aplikasi dan konfigurasi lingkungan.

Tanda Tangan Metode

@JvmStatic fun init( context: Context, appkey: String, environment: IPEnvironment = IPEnvironment.PRODUCTION, callback: InitCallback? = null )
              
              @JvmStatic
fun init(
    context: Context, 
    appkey: String, 
    environment: IPEnvironment = IPEnvironment.PRODUCTION, 
    callback: InitCallback? = null
)

            
Tampilkan blok kode ini di jendela mengambang

Parameter

Parameter Tipe Wajib Deskripsi
context Context Ya Objek konteks Android
appkey String Ya Kunci aplikasi, digunakan untuk mengidentifikasi aplikasi
environment IPEnvironment Tidak Tipe lingkungan, default SANDBOX. Opsi: - IPEnvironment.SANDBOX: lingkungan uji/sandbox - IPEnvironment.PRODUCTION: lingkungan produksi
callback InitCallback? Tidak Antarmuka callback inisialisasi, digunakan untuk menerima hasil inisialisasi

Nilai Kembalian

Tidak ada

Hasil Callback

Hasil inisialisasi dikembalikan melalui InitCallback.onComplete(result: InitResult):

data class InitResult( val code: Int, // Kode status; 0 berarti berhasil, angka lain berarti gagal val message: String? // Pesan (pesan berhasil atau kesalahan) )
              
              data class InitResult(
    val code: Int,        // Kode status; 0 berarti berhasil, angka lain berarti gagal
    val message: String?  // Pesan (pesan berhasil atau kesalahan)
)

            
Tampilkan blok kode ini di jendela mengambang

Contoh Penggunaan

MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.PRODUCTION, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // Inisialisasi berhasil Log.d("MTVerify", "Inisialisasi berhasil: ${result.message}") } else { // Inisialisasi gagal Log.e("MTVerify", "Inisialisasi gagal: ${result.message}") } } } )
              
              MTVerifyApi.init(
    context = this,
    appkey = "your_app_key",
    environment = IPEnvironment.PRODUCTION,
    callback = object : InitCallback {
        override fun onComplete(result: InitResult) {
            if (result.code == 0) {
                // Inisialisasi berhasil
                Log.d("MTVerify", "Inisialisasi berhasil: ${result.message}")
            } else {
                // Inisialisasi gagal
                Log.e("MTVerify", "Inisialisasi gagal: ${result.message}")
            }
        }
    }
)

            
Tampilkan blok kode ini di jendela mengambang

Catatan

  • Anda harus memanggil metode init() untuk menginisialisasi SDK terlebih dahulu sebelum menggunakan fitur lain
  • Proses inisialisasi mengambil clientId dan redirectUrl melalui permintaan HTTP dan memerlukan koneksi jaringan

setLogEnable

Mengatur sakelar log untuk mengontrol keluaran log SDK.

Tanda Tangan Metode

@JvmStatic fun setLogEnable(enable: Boolean)
              
              @JvmStatic
fun setLogEnable(enable: Boolean)

            
Tampilkan blok kode ini di jendela mengambang

Parameter

Parameter Tipe Wajib Deskripsi
enable Boolean Ya true mengaktifkan log, false menonaktifkan semua keluaran log

Contoh Penggunaan

// Mengaktifkan log MTVerifyApi.setLogEnable(true) // Menonaktifkan log MTVerifyApi.setLogEnable(false)
              
              // Mengaktifkan log
MTVerifyApi.setLogEnable(true)

// Menonaktifkan log
MTVerifyApi.setLogEnable(false)

            
Tampilkan blok kode ini di jendela mengambang

checkCoverage

Memeriksa apakah nomor ponsel yang ditentukan mendukung layanan verifikasi IPification.

Tanda Tangan Metode

@JvmStatic fun checkCoverage( context: Context, phoneNumber: String, callback: CoverageCallback? = null )
              
              @JvmStatic
fun checkCoverage(
    context: Context,
    phoneNumber: String,
    callback: CoverageCallback? = null
)

            
Tampilkan blok kode ini di jendela mengambang

Parameter

Parameter Tipe Wajib Deskripsi
context Context Ya Objek konteks Android
phoneNumber String Ya Kode negara + nomor ponsel pengguna
callback CoverageCallback? Tidak Antarmuka callback pemeriksaan cakupan

Nilai Kembalian

Tidak ada

Hasil Callback

Hasil pemeriksaan dikembalikan melalui CoverageCallback.onComplete(result: CoverageResult):

data class CoverageResult( val code: Int, // Kode status; 0 berarti berhasil, angka lain berarti gagal val isAvailable: Boolean, // Apakah tersedia (operator yang didukung) val operatorCode: String?, // Kode operator val message: String? // Pesan (pesan berhasil atau kesalahan) )
              
              data class CoverageResult(
    val code: Int,           // Kode status; 0 berarti berhasil, angka lain berarti gagal
    val isAvailable: Boolean, // Apakah tersedia (operator yang didukung)
    val operatorCode: String?, // Kode operator
    val message: String?      // Pesan (pesan berhasil atau kesalahan)
)

            
Tampilkan blok kode ini di jendela mengambang

Contoh Penggunaan

MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.code == 0) { if (result.isAvailable) { // Layanan didukung Log.d("MTVerify", "Operator didukung: ${result.operatorCode}") } else { // Layanan tidak didukung Log.d("MTVerify", "Operator tidak didukung") } } else { // Pemeriksaan gagal Log.e("MTVerify", "Pemeriksaan gagal: ${result.message}") } } } )
              
              MTVerifyApi.checkCoverage(
    context = this,
    phoneNumber = "6281234567890",
    callback = object : CoverageCallback {
        override fun onComplete(result: CoverageResult) {
            if (result.code == 0) {
                if (result.isAvailable) {
                    // Layanan didukung
                    Log.d("MTVerify", "Operator didukung: ${result.operatorCode}")
                } else {
                    // Layanan tidak didukung
                    Log.d("MTVerify", "Operator tidak didukung")
                }
            } else {
                // Pemeriksaan gagal
                Log.e("MTVerify", "Pemeriksaan gagal: ${result.message}")
            }
        }
    }
)

            
Tampilkan blok kode ini di jendela mengambang

startAuthentication

Memulai alur autentikasi nomor ponsel.

Tanda Tangan Metode

@JvmStatic fun startAuthentication( activity: Activity, countryCode: String, phoneNumber: String, callback: AuthenticationCallback? = null )
              
              @JvmStatic
fun startAuthentication(
    activity: Activity,
    countryCode: String,
    phoneNumber: String,
    callback: AuthenticationCallback? = null
)

            
Tampilkan blok kode ini di jendela mengambang

Parameter

Parameter Tipe Wajib Deskripsi
activity Activity Ya Objek Activity Android, digunakan untuk menampilkan antarmuka autentikasi
countryCode String Ya Kode negara
phoneNumber String Ya Nomor ponsel pengguna (tanpa kode negara)
callback AuthenticationCallback? Tidak Antarmuka callback autentikasi

Nilai Kembalian

Tidak ada

Hasil Callback

Hasil autentikasi dikembalikan melalui AuthenticationCallback.onComplete(result: AuthenticationResult):

data class AuthenticationResult( val code: Int, // Kode status; 0 berarti berhasil, -1 berarti gagal, -2 berarti dibatalkan pengguna val token: String?, // Data autentikasi terenkripsi (string JSON yang berisi code, dienkripsi AES) val message: String? // Pesan (pesan berhasil atau kesalahan) )
              
              data class AuthenticationResult(
    val code: Int,        // Kode status; 0 berarti berhasil, -1 berarti gagal, -2 berarti dibatalkan pengguna
    val token: String?,   // Data autentikasi terenkripsi (string JSON yang berisi code, dienkripsi AES)
    val message: String?  // Pesan (pesan berhasil atau kesalahan)
)

            
Tampilkan blok kode ini di jendela mengambang

Catatan: token adalah string JSON terenkripsi dengan format berikut:

{ "version": "1", "content": { "code": "kode autentikasi", "state": "parameter status", "appkey": "kunci aplikasi" } }
              
              {
  "version": "1",
  "content": {
    "code": "kode autentikasi",
    "state": "parameter status",
    "appkey": "kunci aplikasi"
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Contoh Penggunaan

MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { when (result.code) { 0 -> { // Autentikasi berhasil val token = result.token // token digunakan untuk menukar hasil Log.d("MTVerify", "Autentikasi berhasil: $token") } -1 -> { // Autentikasi gagal Log.e("MTVerify", "Autentikasi gagal: ${result.message}") } -2 -> { // Dibatalkan pengguna Log.d("MTVerify", "Pengguna membatalkan autentikasi") } } } } )
              
              MTVerifyApi.startAuthentication(
    activity = this,
    countryCode = "62",
    phoneNumber = "81234567890",
    callback = object : AuthenticationCallback {
        override fun onComplete(result: AuthenticationResult) {
            when (result.code) {
                0 -> {
                    // Autentikasi berhasil
                    val token = result.token
                    // token digunakan untuk menukar hasil
                    Log.d("MTVerify", "Autentikasi berhasil: $token")
                }
                -1 -> {
                    // Autentikasi gagal
                    Log.e("MTVerify", "Autentikasi gagal: ${result.message}")
                }
                -2 -> {
                    // Dibatalkan pengguna
                    Log.d("MTVerify", "Pengguna membatalkan autentikasi")
                }
            }
        }
    }
)

            
Tampilkan blok kode ini di jendela mengambang

Model Data

IPEnvironment

Enum tipe lingkungan:

enum class IPEnvironment { SANDBOX, // Lingkungan uji/sandbox PRODUCTION // Lingkungan produksi }
              
              enum class IPEnvironment {
    SANDBOX,      // Lingkungan uji/sandbox
    PRODUCTION    // Lingkungan produksi
}

            
Tampilkan blok kode ini di jendela mengambang

InitResult

Hasil inisialisasi:

data class InitResult( val code: Int, // Kode status; 0 berarti berhasil val message: String? // Pesan )
              
              data class InitResult(
    val code: Int,        // Kode status; 0 berarti berhasil
    val message: String?  // Pesan
)

            
Tampilkan blok kode ini di jendela mengambang

CoverageResult

Hasil pemeriksaan cakupan:

data class CoverageResult( val code: Int, // Kode status; 0 berarti berhasil val isAvailable: Boolean, // Apakah tersedia val operatorCode: String?, // Kode operator val message: String? // Pesan )
              
              data class CoverageResult(
    val code: Int,           // Kode status; 0 berarti berhasil
    val isAvailable: Boolean, // Apakah tersedia
    val operatorCode: String?, // Kode operator
    val message: String?      // Pesan
)

            
Tampilkan blok kode ini di jendela mengambang

AuthenticationResult

Hasil autentikasi:

data class AuthenticationResult( val code: Int, // Kode status; 0 berarti berhasil, -1 berarti gagal, -2 berarti dibatalkan pengguna val token: String?, // Token autentikasi terenkripsi val message: String? // Pesan )
              
              data class AuthenticationResult(
    val code: Int,        // Kode status; 0 berarti berhasil, -1 berarti gagal, -2 berarti dibatalkan pengguna
    val token: String?,   // Token autentikasi terenkripsi
    val message: String?  // Pesan
)

            
Tampilkan blok kode ini di jendela mengambang

Antarmuka Callback

InitCallback

Antarmuka callback inisialisasi:

interface InitCallback { fun onComplete(result: InitResult) }
              
              interface InitCallback {
    fun onComplete(result: InitResult)
}

            
Tampilkan blok kode ini di jendela mengambang

CoverageCallback

Antarmuka callback pemeriksaan cakupan:

interface CoverageCallback { fun onComplete(result: CoverageResult) }
              
              interface CoverageCallback {
    fun onComplete(result: CoverageResult)
}

            
Tampilkan blok kode ini di jendela mengambang

AuthenticationCallback

Antarmuka callback autentikasi:

interface AuthenticationCallback { fun onComplete(result: AuthenticationResult) }
              
              interface AuthenticationCallback {
    fun onComplete(result: AuthenticationResult)
}

            
Tampilkan blok kode ini di jendela mengambang

Contoh Lengkap

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 1. Mengaktifkan log (opsional) MTVerifyApi.setLogEnable(true) // 2. Menginisialisasi SDK MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.SANDBOX, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // Inisialisasi berhasil; Anda dapat mulai menggunakan fitur lain checkCoverage() } } } ) } private fun checkCoverage() { // 3. Memeriksa cakupan MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.isAvailable) { // 4. Jika didukung, lakukan autentikasi startAuthentication() } } } ) } private fun startAuthentication() { // 5. Melakukan autentikasi MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { if (result.code == 0) { // Autentikasi berhasil; tangani token handleToken(result.token) } } } ) } private fun handleToken(token: String?) { // Panggil API untuk menangani token yang telah ditukar } }
              
              class MainActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // 1. Mengaktifkan log (opsional)
        MTVerifyApi.setLogEnable(true)
        
        // 2. Menginisialisasi SDK
        MTVerifyApi.init(
            context = this,
            appkey = "your_app_key",
            environment = IPEnvironment.SANDBOX,
            callback = object : InitCallback {
                override fun onComplete(result: InitResult) {
                    if (result.code == 0) {
                        // Inisialisasi berhasil; Anda dapat mulai menggunakan fitur lain
                        checkCoverage()
                    }
                }
            }
        )
    }
    
    private fun checkCoverage() {
        // 3. Memeriksa cakupan
        MTVerifyApi.checkCoverage(
            context = this,
            phoneNumber = "6281234567890",
            callback = object : CoverageCallback {
                override fun onComplete(result: CoverageResult) {
                    if (result.isAvailable) {
                        // 4. Jika didukung, lakukan autentikasi
                        startAuthentication()
                    }
                }
            }
        )
    }
    
    private fun startAuthentication() {
        // 5. Melakukan autentikasi
        MTVerifyApi.startAuthentication(
            activity = this,
            countryCode = "62",
            phoneNumber = "81234567890",
            callback = object : AuthenticationCallback {
                override fun onComplete(result: AuthenticationResult) {
                    if (result.code == 0) {
                        // Autentikasi berhasil; tangani token
                        handleToken(result.token)
                    }
                }
            }
        )
    }
    
    private fun handleToken(token: String?) {
        // Panggil API untuk menangani token yang telah ditukar
        
    }
}

            
Tampilkan blok kode ini di jendela mengambang

Catatan

  1. Urutan inisialisasi: Anda harus memanggil metode init() untuk menginisialisasi SDK terlebih dahulu sebelum menggunakan fitur lain.
  2. Keamanan thread: Semua metode API dapat dipanggil di thread utama, dan callback juga dijalankan di thread utama.
  3. Persyaratan izin: Pastikan aplikasi telah meminta izin jaringan yang diperlukan.
  4. Dekripsi token: Token yang dikembalikan setelah autentikasi berhasil terenkripsi dan harus diproses menggunakan metode dekripsi yang sesuai.
  5. Kontrol log: Disarankan untuk menonaktifkan keluaran log di lingkungan produksi guna meningkatkan kinerja dan keamanan.

Informasi Versi

  • Versi SDK: 1.0.1
Icon Solid Transparent White Qiyu
Hubungi Sales