คู่มือการผสานรวม 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" />
การกำหนดค่าผู้ให้บริการเครือข่าย
เนื่องจากอินเทอร์เฟซของผู้ให้บริการเครือข่ายจำเป็นต้องใช้การส่งข้อมูลแบบข้อความธรรมดาผ่าน HTTP คุณจึงต้องกำหนดค่านโยบายความปลอดภัยของเครือข่ายใน AndroidManifest.xml ของแอปพลิเคชัน:
<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
)
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| 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? // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด)
)
ตัวอย่างการใช้งาน
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)
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| enable | Boolean | ใช่ | true เปิดใช้งานบันทึก, false ปิดการแสดงผลบันทึกทั้งหมด |
ตัวอย่างการใช้งาน
// เปิดใช้งานบันทึก
MTVerifyApi.setLogEnable(true)
// ปิดบันทึก
MTVerifyApi.setLogEnable(false)
checkCoverage
ตรวจสอบว่าหมายเลขโทรศัพท์มือถือที่ระบุรองรับบริการตรวจสอบ IPification หรือไม่
ลายเซ็นเมธอด
@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? // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด)
)
ตัวอย่างการใช้งาน
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
)
คำอธิบายพารามิเตอร์
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| 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? // ข้อความ (ข้อความสำเร็จหรือข้อผิดพลาด)
)
หมายเหตุ: token เป็นสตริง JSON ที่เข้ารหัส โดยมีรูปแบบดังนี้:
{
"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", "ผู้ใช้ยกเลิกการยืนยันตัวตน")
}
}
}
}
)
โมเดลข้อมูล
IPEnvironment
Enum ชนิดสภาพแวดล้อม:
enum class IPEnvironment {
SANDBOX, // สภาพแวดล้อมทดสอบ/แซนด์บ็อกซ์
PRODUCTION // สภาพแวดล้อมการใช้งานจริง
}
InitResult
ผลการเริ่มต้น:
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? // ข้อความ
)
AuthenticationResult
ผลการยืนยันตัวตน:
data class AuthenticationResult(
val code: Int, // รหัสสถานะ; 0 หมายถึงสำเร็จ, -1 หมายถึงล้มเหลว, -2 หมายถึงผู้ใช้ยกเลิก
val token: String?, // โทเค็นยืนยันตัวตนที่เข้ารหัส
val message: String? // ข้อความ
)
อินเทอร์เฟซ Callback
InitCallback
อินเทอร์เฟซ callback การเริ่มต้น:
interface InitCallback {
fun onComplete(result: InitResult)
}
CoverageCallback
อินเทอร์เฟซ callback การตรวจสอบการรองรับ:
interface CoverageCallback {
fun onComplete(result: CoverageResult)
}
AuthenticationCallback
อินเทอร์เฟซ callback การยืนยันตัวตน:
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 ที่แลกเปลี่ยนแล้ว
}
}
ข้อควรระวัง
- ลำดับการเริ่มต้น: คุณต้องเรียกเมธอด
init()เพื่อเริ่มต้น SDK ก่อนจึงจะสามารถใช้ฟีเจอร์อื่นได้ - ความปลอดภัยของเธรด: เมธอด API ทั้งหมดสามารถเรียกใช้ในเธรดหลักได้ และ callback ก็จะทำงานในเธรดหลักเช่นกัน
- ข้อกำหนดด้านสิทธิ์: ตรวจสอบให้แน่ใจว่าแอปพลิเคชันได้ขอสิทธิ์เครือข่ายที่จำเป็นแล้ว
- การถอดรหัส Token: token ที่ส่งกลับหลังจากยืนยันตัวตนสำเร็จถูกเข้ารหัสไว้ และต้องประมวลผลด้วยวิธีถอดรหัสที่เกี่ยวข้อง
- การควบคุมบันทึก: แนะนำให้ปิดการแสดงผลบันทึกในสภาพแวดล้อมการใช้งานจริงเพื่อเพิ่มประสิทธิภาพและความปลอดภัย
ข้อมูลเวอร์ชัน
- เวอร์ชัน SDK: 1.0.1










