คู่มือการผสานรวม Android SDK

ภาพรวม

MTVerify Android SDK เป็น SDK สำหรับยืนยันหมายเลขโทรศัพท์มือถือ ที่ให้บริการตรวจสอบหมายเลขโทรศัพท์ระดับผู้ให้บริการเครือข่ายที่รวดเร็วและปลอดภัย

ฟีเจอร์หลัก

  • การเริ่มต้น SDK: ดึงการกำหนดค่าโดยอัตโนมัติและเริ่มต้นผ่าน AppKey
  • การตรวจสอบการรองรับ: ตรวจสอบว่าสภาพแวดล้อมเครือข่ายปัจจุบันรองรับบริการยืนยันตัวตนหรือไม่
  • การยืนยันหมายเลข: เริ่มการยืนยันหมายเลขโทรศัพท์มือถือและรับโทเค็นยืนยันตัวตน

ข้อกำหนดของระบบ

  • Android 5.0 (API 21) ขึ้นไป
  • อุปกรณ์ของผู้ใช้เปิดใช้งานเครือข่ายมือถือแล้ว

คู่มือการผสานรวม

การกำหนดค่าสิทธิ์

แพ็กเกจ aar ขอสิทธิ์ต่อไปนี้:

<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" />

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

การกำหนดค่าผู้ให้บริการเครือข่าย

เนื่องจากอินเทอร์เฟซของผู้ให้บริการเครือข่ายจำเป็นต้องใช้การส่งข้อมูลแบบข้อความธรรมดาผ่าน HTTP คุณจึงต้องกำหนดค่านโยบายความปลอดภัยของเครือข่ายใน AndroidManifest.xml ของแอปพลิเคชัน:

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

นอกจากนี้ คุณต้องคัดลอกไฟล์ mtverify_network_security_config.xml ไปยังไดเรกทอรี res/xml/ ของแอปพลิเคชัน คุณสามารถค้นหาไฟล์นี้ได้ในแพ็กเกจติดตั้งที่คุณดาวน์โหลด

รายการเมธอด

  • setLogEnable - ตั้งค่าสวิตช์บันทึก
  • init - เริ่มต้น SDK
  • checkCoverage - ตรวจสอบการรองรับ
  • startAuthentication - ดำเนินการยืนยันตัวตน

init

เริ่มต้น MTVerify SDK และตั้งค่าคีย์แอปพลิเคชันและการกำหนดค่าสภาพแวดล้อม

ลายเซ็นเมธอด

@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
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

คำอธิบายพารามิเตอร์

พารามิเตอร์ ชนิด จำเป็น คำอธิบาย
context Context ใช่ ออบเจ็กต์ context ของ Android
appkey String ใช่ คีย์แอปพลิเคชัน ใช้เพื่อระบุแอปพลิเคชัน
environment IPEnvironment ไม่ ชนิดสภาพแวดล้อม ค่าเริ่มต้นคือ SANDBOX ตัวเลือก: - IPEnvironment.SANDBOX: สภาพแวดล้อมทดสอบ/แซนด์บ็อกซ์ - IPEnvironment.PRODUCTION: สภาพแวดล้อมการใช้งานจริง
callback InitCallback? ไม่ อินเทอร์เฟซ callback การเริ่มต้น ใช้เพื่อรับผลการเริ่มต้น

ค่าที่ส่งกลับ

ไม่มี

ผล Callback

ผลการเริ่มต้นจะถูกส่งกลับผ่าน InitCallback.onComplete(result: InitResult):

data class InitResult( val code: Int, // รหัสสถานะ; 0 หมายถึงสำเร็จ ตัวเลขอื่นหมายถึงล้มเหลว val message: String? // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด) )
              
              data class InitResult(
    val code: Int,        // รหัสสถานะ; 0 หมายถึงสำเร็จ ตัวเลขอื่นหมายถึงล้มเหลว
    val message: String?  // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด)
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างการใช้งาน

MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.PRODUCTION, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // เริ่มต้นสำเร็จ Log.d("MTVerify", "เริ่มต้นสำเร็จ: ${result.message}") } else { // เริ่มต้นล้มเหลว Log.e("MTVerify", "เริ่มต้นล้มเหลว: ${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) {
                // เริ่มต้นสำเร็จ
                Log.d("MTVerify", "เริ่มต้นสำเร็จ: ${result.message}")
            } else {
                // เริ่มต้นล้มเหลว
                Log.e("MTVerify", "เริ่มต้นล้มเหลว: ${result.message}")
            }
        }
    }
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อควรระวัง

  • คุณต้องเรียกเมธอด init() เพื่อเริ่มต้น SDK ก่อนจึงจะสามารถใช้ฟีเจอร์อื่นได้
  • กระบวนการเริ่มต้นจะดึง clientId และ redirectUrl ผ่านคำขอ HTTP จึงจำเป็นต้องมีการเชื่อมต่อเครือข่าย

setLogEnable

ตั้งค่าสวิตช์บันทึกเพื่อควบคุมการแสดงผลบันทึกของ SDK

ลายเซ็นเมธอด

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

คำอธิบายพารามิเตอร์

พารามิเตอร์ ชนิด จำเป็น คำอธิบาย
enable Boolean ใช่ true เปิดใช้งานบันทึก, false ปิดการแสดงผลบันทึกทั้งหมด

ตัวอย่างการใช้งาน

// เปิดใช้งานบันทึก MTVerifyApi.setLogEnable(true) // ปิดบันทึก MTVerifyApi.setLogEnable(false)
              
              // เปิดใช้งานบันทึก
MTVerifyApi.setLogEnable(true)

// ปิดบันทึก
MTVerifyApi.setLogEnable(false)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

checkCoverage

ตรวจสอบว่าหมายเลขโทรศัพท์มือถือที่ระบุรองรับบริการตรวจสอบ IPification หรือไม่

ลายเซ็นเมธอด

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

คำอธิบายพารามิเตอร์

พารามิเตอร์ ชนิด จำเป็น คำอธิบาย
context Context ใช่ ออบเจ็กต์ context ของ Android
phoneNumber String ใช่ รหัสประเทศ + หมายเลขโทรศัพท์มือถือของผู้ใช้
callback CoverageCallback? ไม่ อินเทอร์เฟซ callback การตรวจสอบการรองรับ

ค่าที่ส่งกลับ

ไม่มี

ผล Callback

ผลการตรวจสอบจะถูกส่งกลับผ่าน CoverageCallback.onComplete(result: CoverageResult):

data class CoverageResult( val code: Int, // รหัสสถานะ; 0 หมายถึงสำเร็จ ตัวเลขอื่นหมายถึงล้มเหลว val isAvailable: Boolean, // ใช้งานได้หรือไม่ (ผู้ให้บริการที่รองรับ) val operatorCode: String?, // รหัสผู้ให้บริการ val message: String? // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด) )
              
              data class CoverageResult(
    val code: Int,           // รหัสสถานะ; 0 หมายถึงสำเร็จ ตัวเลขอื่นหมายถึงล้มเหลว
    val isAvailable: Boolean, // ใช้งานได้หรือไม่ (ผู้ให้บริการที่รองรับ)
    val operatorCode: String?, // รหัสผู้ให้บริการ
    val message: String?      // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด)
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างการใช้งาน

MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.code == 0) { if (result.isAvailable) { // รองรับบริการ Log.d("MTVerify", "ผู้ให้บริการรองรับ: ${result.operatorCode}") } else { // ไม่รองรับบริการ Log.d("MTVerify", "ผู้ให้บริการไม่รองรับ") } } else { // การตรวจสอบล้มเหลว Log.e("MTVerify", "การตรวจสอบล้มเหลว: ${result.message}") } } } )
              
              MTVerifyApi.checkCoverage(
    context = this,
    phoneNumber = "6281234567890",
    callback = object : CoverageCallback {
        override fun onComplete(result: CoverageResult) {
            if (result.code == 0) {
                if (result.isAvailable) {
                    // รองรับบริการ
                    Log.d("MTVerify", "ผู้ให้บริการรองรับ: ${result.operatorCode}")
                } else {
                    // ไม่รองรับบริการ
                    Log.d("MTVerify", "ผู้ให้บริการไม่รองรับ")
                }
            } else {
                // การตรวจสอบล้มเหลว
                Log.e("MTVerify", "การตรวจสอบล้มเหลว: ${result.message}")
            }
        }
    }
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

startAuthentication

เริ่มกระบวนการยืนยันหมายเลขโทรศัพท์มือถือ

ลายเซ็นเมธอด

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

คำอธิบายพารามิเตอร์

พารามิเตอร์ ชนิด จำเป็น คำอธิบาย
activity Activity ใช่ ออบเจ็กต์ Activity ของ Android ใช้เพื่อแสดงหน้าจอยืนยันตัวตน
countryCode String ใช่ รหัสประเทศ
phoneNumber String ใช่ หมายเลขโทรศัพท์มือถือของผู้ใช้ (ไม่รวมรหัสประเทศ)
callback AuthenticationCallback? ไม่ อินเทอร์เฟซ callback การยืนยันตัวตน

ค่าที่ส่งกลับ

ไม่มี

ผล Callback

ผลการยืนยันตัวตนจะถูกส่งกลับผ่าน AuthenticationCallback.onComplete(result: AuthenticationResult):

data class AuthenticationResult( val code: Int, // รหัสสถานะ; 0 หมายถึงสำเร็จ, -1 หมายถึงล้มเหลว, -2 หมายถึงผู้ใช้ยกเลิก val token: String?, // ข้อมูลยืนยันตัวตนที่เข้ารหัส (สตริง JSON ที่มี code เข้ารหัสด้วย AES) val message: String? // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด) )
              
              data class AuthenticationResult(
    val code: Int,        // รหัสสถานะ; 0 หมายถึงสำเร็จ, -1 หมายถึงล้มเหลว, -2 หมายถึงผู้ใช้ยกเลิก
    val token: String?,   // ข้อมูลยืนยันตัวตนที่เข้ารหัส (สตริง JSON ที่มี code เข้ารหัสด้วย AES)
    val message: String?  // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด)
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

หมายเหตุ: token เป็นสตริง JSON ที่เข้ารหัส โดยมีรูปแบบดังนี้:

{ "version": "1", "content": { "code": "รหัสยืนยันตัวตน", "state": "พารามิเตอร์สถานะ", "appkey": "คีย์แอปพลิเคชัน" } }
              
              {
  "version": "1",
  "content": {
    "code": "รหัสยืนยันตัวตน",
    "state": "พารามิเตอร์สถานะ",
    "appkey": "คีย์แอปพลิเคชัน"
  }
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างการใช้งาน

MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { when (result.code) { 0 -> { // ยืนยันตัวตนสำเร็จ val token = result.token // token ใช้สำหรับแลกเปลี่ยนผลลัพธ์ Log.d("MTVerify", "ยืนยันตัวตนสำเร็จ: $token") } -1 -> { // ยืนยันตัวตนล้มเหลว Log.e("MTVerify", "ยืนยันตัวตนล้มเหลว: ${result.message}") } -2 -> { // ผู้ใช้ยกเลิก Log.d("MTVerify", "ผู้ใช้ยกเลิกการยืนยันตัวตน") } } } } )
              
              MTVerifyApi.startAuthentication(
    activity = this,
    countryCode = "62",
    phoneNumber = "81234567890",
    callback = object : AuthenticationCallback {
        override fun onComplete(result: AuthenticationResult) {
            when (result.code) {
                0 -> {
                    // ยืนยันตัวตนสำเร็จ
                    val token = result.token
                    // token ใช้สำหรับแลกเปลี่ยนผลลัพธ์
                    Log.d("MTVerify", "ยืนยันตัวตนสำเร็จ: $token")
                }
                -1 -> {
                    // ยืนยันตัวตนล้มเหลว
                    Log.e("MTVerify", "ยืนยันตัวตนล้มเหลว: ${result.message}")
                }
                -2 -> {
                    // ผู้ใช้ยกเลิก
                    Log.d("MTVerify", "ผู้ใช้ยกเลิกการยืนยันตัวตน")
                }
            }
        }
    }
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

โมเดลข้อมูล

IPEnvironment

Enum ชนิดสภาพแวดล้อม:

enum class IPEnvironment { SANDBOX, // สภาพแวดล้อมทดสอบ/แซนด์บ็อกซ์ PRODUCTION // สภาพแวดล้อมการใช้งานจริง }
              
              enum class IPEnvironment {
    SANDBOX,      // สภาพแวดล้อมทดสอบ/แซนด์บ็อกซ์
    PRODUCTION    // สภาพแวดล้อมการใช้งานจริง
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

InitResult

ผลการเริ่มต้น:

data class InitResult( val code: Int, // รหัสสถานะ; 0 หมายถึงสำเร็จ val message: String? // ข้อความ )
              
              data class InitResult(
    val code: Int,        // รหัสสถานะ; 0 หมายถึงสำเร็จ
    val message: String?  // ข้อความ
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

CoverageResult

ผลการตรวจสอบการรองรับ:

data class CoverageResult( val code: Int, // รหัสสถานะ; 0 หมายถึงสำเร็จ val isAvailable: Boolean, // ใช้งานได้หรือไม่ val operatorCode: String?, // รหัสผู้ให้บริการ val message: String? // ข้อความ )
              
              data class CoverageResult(
    val code: Int,           // รหัสสถานะ; 0 หมายถึงสำเร็จ
    val isAvailable: Boolean, // ใช้งานได้หรือไม่
    val operatorCode: String?, // รหัสผู้ให้บริการ
    val message: String?      // ข้อความ
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

AuthenticationResult

ผลการยืนยันตัวตน:

data class AuthenticationResult( val code: Int, // รหัสสถานะ; 0 หมายถึงสำเร็จ, -1 หมายถึงล้มเหลว, -2 หมายถึงผู้ใช้ยกเลิก val token: String?, // โทเค็นยืนยันตัวตนที่เข้ารหัส val message: String? // ข้อความ )
              
              data class AuthenticationResult(
    val code: Int,        // รหัสสถานะ; 0 หมายถึงสำเร็จ, -1 หมายถึงล้มเหลว, -2 หมายถึงผู้ใช้ยกเลิก
    val token: String?,   // โทเค็นยืนยันตัวตนที่เข้ารหัส
    val message: String?  // ข้อความ
)

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

อินเทอร์เฟซ Callback

InitCallback

อินเทอร์เฟซ callback การเริ่มต้น:

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

CoverageCallback

อินเทอร์เฟซ callback การตรวจสอบการรองรับ:

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

AuthenticationCallback

อินเทอร์เฟซ callback การยืนยันตัวตน:

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

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ตัวอย่างฉบับสมบูรณ์

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 1. เปิดใช้งานบันทึก (ไม่บังคับ) MTVerifyApi.setLogEnable(true) // 2. เริ่มต้น SDK MTVerifyApi.init( context = this, appkey = "your_app_key", environment = IPEnvironment.SANDBOX, callback = object : InitCallback { override fun onComplete(result: InitResult) { if (result.code == 0) { // เริ่มต้นสำเร็จ สามารถเริ่มใช้ฟีเจอร์อื่นได้ checkCoverage() } } } ) } private fun checkCoverage() { // 3. ตรวจสอบการรองรับ MTVerifyApi.checkCoverage( context = this, phoneNumber = "6281234567890", callback = object : CoverageCallback { override fun onComplete(result: CoverageResult) { if (result.isAvailable) { // 4. หากรองรับ ให้ดำเนินการยืนยันตัวตน startAuthentication() } } } ) } private fun startAuthentication() { // 5. ดำเนินการยืนยันตัวตน MTVerifyApi.startAuthentication( activity = this, countryCode = "62", phoneNumber = "81234567890", callback = object : AuthenticationCallback { override fun onComplete(result: AuthenticationResult) { if (result.code == 0) { // ยืนยันตัวตนสำเร็จ ประมวลผล token handleToken(result.token) } } } ) } private fun handleToken(token: String?) { // เรียก API เพื่อประมวลผล token ที่แลกเปลี่ยนแล้ว } }
              
              class MainActivity : AppCompatActivity() {
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // 1. เปิดใช้งานบันทึก (ไม่บังคับ)
        MTVerifyApi.setLogEnable(true)
        
        // 2. เริ่มต้น SDK
        MTVerifyApi.init(
            context = this,
            appkey = "your_app_key",
            environment = IPEnvironment.SANDBOX,
            callback = object : InitCallback {
                override fun onComplete(result: InitResult) {
                    if (result.code == 0) {
                        // เริ่มต้นสำเร็จ สามารถเริ่มใช้ฟีเจอร์อื่นได้
                        checkCoverage()
                    }
                }
            }
        )
    }
    
    private fun checkCoverage() {
        // 3. ตรวจสอบการรองรับ
        MTVerifyApi.checkCoverage(
            context = this,
            phoneNumber = "6281234567890",
            callback = object : CoverageCallback {
                override fun onComplete(result: CoverageResult) {
                    if (result.isAvailable) {
                        // 4. หากรองรับ ให้ดำเนินการยืนยันตัวตน
                        startAuthentication()
                    }
                }
            }
        )
    }
    
    private fun startAuthentication() {
        // 5. ดำเนินการยืนยันตัวตน
        MTVerifyApi.startAuthentication(
            activity = this,
            countryCode = "62",
            phoneNumber = "81234567890",
            callback = object : AuthenticationCallback {
                override fun onComplete(result: AuthenticationResult) {
                    if (result.code == 0) {
                        // ยืนยันตัวตนสำเร็จ ประมวลผล token
                        handleToken(result.token)
                    }
                }
            }
        )
    }
    
    private fun handleToken(token: String?) {
        // เรียก API เพื่อประมวลผล token ที่แลกเปลี่ยนแล้ว
        
    }
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย

ข้อควรระวัง

  1. ลำดับการเริ่มต้น: คุณต้องเรียกเมธอด init() เพื่อเริ่มต้น SDK ก่อนจึงจะสามารถใช้ฟีเจอร์อื่นได้
  2. ความปลอดภัยของเธรด: เมธอด API ทั้งหมดสามารถเรียกใช้ในเธรดหลักได้ และ callback ก็จะทำงานในเธรดหลักเช่นกัน
  3. ข้อกำหนดด้านสิทธิ์: ตรวจสอบให้แน่ใจว่าแอปพลิเคชันได้ขอสิทธิ์เครือข่ายที่จำเป็นแล้ว
  4. การถอดรหัส Token: token ที่ส่งกลับหลังจากยืนยันตัวตนสำเร็จถูกเข้ารหัสไว้ และต้องประมวลผลด้วยวิธีถอดรหัสที่เกี่ยวข้อง
  5. การควบคุมบันทึก: แนะนำให้ปิดการแสดงผลบันทึกในสภาพแวดล้อมการใช้งานจริงเพื่อเพิ่มประสิทธิภาพและความปลอดภัย

ข้อมูลเวอร์ชัน

  • เวอร์ชัน SDK: 1.0.1
Icon Solid Transparent White Qiyu
ติดต่อฝ่ายขาย