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

ภาพรวม

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

ฟีเจอร์หลัก

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

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

  • iOS 12.0+
  • Xcode 14.0+

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

การผสานรวมด้วยตนเอง

  1. ลาก MTVerify.xcframework เข้าไปในโปรเจ็กต์
  2. ใน Target -> General -> Frameworks, Libraries, and Embedded Content:
    • MTVerify.xcframework: ตั้งค่าเป็น Do Not Embed

เริ่มต้นอย่างรวดเร็ว

ตัวอย่าง Swift

import MTVerify // 1. เปิดโหมดดีบัก (ไม่บังคับ แนะนำให้เปิดในระยะพัฒนา) MTVerifySDK.setDebug(true) // 2. เริ่มต้น SDK MTVerifySDK.setup(appKey: "your_app_key", environment: .production) { result in if result.isSuccess { print("เริ่มต้น SDK สำเร็จ") } else { print("เริ่มต้น SDK ล้มเหลว: \(result.message)") } } // 3. ตรวจสอบการรองรับ MTVerifySDK.checkCoverage(phoneNumber: "6281234567890") { result in if result.isSuccess && result.isAvailable { print("บริการยืนยันตัวตนพร้อมใช้งาน, ผู้ให้บริการ: \(result.operatorCode ?? "")") } } // 4. เริ่มการยืนยันตัวตน MTVerifySDK.startAuthentication(phoneNumber: "6281234567890") { result in if result.isSuccess { print("ยืนยันตัวตนสำเร็จ, Token: \(result.token ?? "")") } }
              
              import MTVerify

// 1. เปิดโหมดดีบัก (ไม่บังคับ แนะนำให้เปิดในระยะพัฒนา)
MTVerifySDK.setDebug(true)

// 2. เริ่มต้น SDK
MTVerifySDK.setup(appKey: "your_app_key", environment: .production) { result in
    if result.isSuccess {
        print("เริ่มต้น SDK สำเร็จ")
    } else {
        print("เริ่มต้น SDK ล้มเหลว: \(result.message)")
    }
}

// 3. ตรวจสอบการรองรับ
MTVerifySDK.checkCoverage(phoneNumber: "6281234567890") { result in
    if result.isSuccess && result.isAvailable {
        print("บริการยืนยันตัวตนพร้อมใช้งาน, ผู้ให้บริการ: \(result.operatorCode ?? "")")
    }
}

// 4. เริ่มการยืนยันตัวตน
MTVerifySDK.startAuthentication(phoneNumber: "6281234567890") { result in
    if result.isSuccess {
        print("ยืนยันตัวตนสำเร็จ, Token: \(result.token ?? "")")
    }
}

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

ตัวอย่าง Objective-C

@import MTVerify; // 1. เปิดโหมดดีบัก (ไม่บังคับ) [MTVerifySDK setDebug:YES]; // 2. เริ่มต้น SDK [MTVerifySDK setupWithAppKey:@"your_app_key" environment:MTEnvironmentProduction completion:^(MTSetupResult *result) { if (result.isSuccess) { NSLog(@"เริ่มต้น SDK สำเร็จ"); } else { NSLog(@"เริ่มต้น SDK ล้มเหลว: %@", result.message); } }]; // 3. ตรวจสอบการรองรับ [MTVerifySDK checkCoverageWithPhoneNumber:@"6281234567890" completion:^(MTCoverageResult *result) { if (result.isSuccess && result.isAvailable) { NSLog(@"บริการยืนยันตัวตนพร้อมใช้งาน, ผู้ให้บริการ: %@", result.operatorCode); } }]; // 4. เริ่มการยืนยันตัวตน [MTVerifySDK startAuthenticationWithPhoneNumber:@"6281234567890" completion:^(MTAuthResult *result) { if (result.isSuccess) { NSLog(@"ยืนยันตัวตนสำเร็จ, Token: %@", result.token); } }];
              
              @import MTVerify;

// 1. เปิดโหมดดีบัก (ไม่บังคับ)
[MTVerifySDK setDebug:YES];

// 2. เริ่มต้น SDK
[MTVerifySDK setupWithAppKey:@"your_app_key" 
                 environment:MTEnvironmentProduction 
                  completion:^(MTSetupResult *result) {
    if (result.isSuccess) {
        NSLog(@"เริ่มต้น SDK สำเร็จ");
    } else {
        NSLog(@"เริ่มต้น SDK ล้มเหลว: %@", result.message);
    }
}];

// 3. ตรวจสอบการรองรับ
[MTVerifySDK checkCoverageWithPhoneNumber:@"6281234567890" 
                               completion:^(MTCoverageResult *result) {
    if (result.isSuccess && result.isAvailable) {
        NSLog(@"บริการยืนยันตัวตนพร้อมใช้งาน, ผู้ให้บริการ: %@", result.operatorCode);
    }
}];

// 4. เริ่มการยืนยันตัวตน
[MTVerifySDK startAuthenticationWithPhoneNumber:@"6281234567890" 
                                     completion:^(MTAuthResult *result) {
    if (result.isSuccess) {
        NSLog(@"ยืนยันตัวตนสำเร็จ, Token: %@", result.token);
    }
}];

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

การอ้างอิง API

คลาส MTVerifySDK

MTVerifySDK เป็นคลาสหลักของ SDK และจัดเตรียมฟีเจอร์ทั้งหมดที่เกี่ยวข้องกับการยืนยันตัวตน

พร็อพเพอร์ตี้

พร็อพเพอร์ตี้ ชนิด คำอธิบาย
version String หมายเลขเวอร์ชัน SDK (อ่านอย่างเดียว, พร็อพเพอร์ตี้ของคลาส)
isInitialized Bool SDK ได้รับการเริ่มต้นแล้วหรือไม่ (อ่านอย่างเดียว, พร็อพเพอร์ตี้ของคลาส)

เมธอด

setDebug(_:)

ตั้งค่าโหมดดีบัก เมื่อเปิดใช้งานจะแสดงบันทึกโดยละเอียด

static func setDebug(_ enabled: Bool)
              
              static func setDebug(_ enabled: Bool)

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

พารามิเตอร์

พารามิเตอร์ ชนิด คำอธิบาย
enabled Bool จะเปิดโหมดดีบักหรือไม่

คำอธิบาย

  • แนะนำให้เปิดในระยะพัฒนาและทดสอบ
  • แนะนำให้ปิดในเวอร์ชันที่เผยแพร่
isDebug()

รับสถานะโหมดดีบักปัจจุบัน

static func isDebug() -> Bool
              
              static func isDebug() -> Bool

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

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

Bool - เปิดโหมดดีบักหรือไม่

setup(appKey:environment:completion:)

เริ่มต้น SDK ใช้ AppKey เพื่อดึงการกำหนดค่าจากเซิร์ฟเวอร์โดยอัตโนมัติและทำการเริ่มต้นให้เสร็จสมบูรณ์

static func setup(appKey: String, environment: MTEnvironment = .production, completion: @escaping (MTSetupResult) -> Void)
              
              static func setup(appKey: String,
                  environment: MTEnvironment = .production,
                  completion: @escaping (MTSetupResult) -> Void)

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

พารามิเตอร์

พารามิเตอร์ ชนิด คำอธิบาย
appKey String AppKey ของแอปพลิเคชัน รับได้จากคอนโซล
environment MTEnvironment สภาพแวดล้อมการทำงาน ค่าเริ่มต้นคือ .production
completion (MTSetupResult) -> Void callback เมื่อการเริ่มต้นเสร็จสมบูรณ์

ข้อควรระวัง

  • ต้องทำการเริ่มต้นให้เสร็จก่อนเรียกใช้ API อื่น
  • การเริ่มต้นเป็นการดำเนินการแบบอะซิงโครนัส โปรดยืนยันความสำเร็จใน callback
  • แนะนำให้เรียกใช้ใน AppDelegate หรือเมื่อเปิดแอปพลิเคชัน
checkCoverage(phoneNumber:completion:)

ตรวจสอบว่าสภาพแวดล้อมเครือข่ายปัจจุบันรองรับบริการยืนยันตัวตนหรือไม่

static func checkCoverage(phoneNumber: String, completion: @escaping (MTCoverageResult) -> Void)
              
              static func checkCoverage(phoneNumber: String,
                          completion: @escaping (MTCoverageResult) -> Void)

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

พารามิเตอร์

พารามิเตอร์ ชนิด คำอธิบาย
phoneNumber String หมายเลขโทรศัพท์มือถือ (รหัสประเทศ + หมายเลขโทรศัพท์)
completion (MTCoverageResult) -> Void callback เมื่อการตรวจสอบเสร็จสมบูรณ์

ผลลัพธ์ที่ส่งกลับ

ส่งกลับผ่านออบเจ็กต์ MTCoverageResult:

  • isAvailable: รองรับการยืนยันตัวตนหรือไม่
  • operatorCode: รหัสผู้ให้บริการ ละเว้นฟิลด์นี้ ค่าเริ่มต้นจะส่งกลับเป็นค่าว่าง

ข้อควรระวัง

  • ตรวจสอบให้แน่ใจว่า SDK ได้รับการเริ่มต้นแล้วก่อนเรียกใช้
  • แนะนำให้เรียกเมธอดนี้เพื่อตรวจสอบการรองรับก่อนเริ่มการยืนยันตัวตน
startAuthentication(phoneNumber:completion:)

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

static func startAuthentication(phoneNumber: String, completion: @escaping (MTAuthResult) -> Void)
              
              static func startAuthentication(phoneNumber: String,
                                completion: @escaping (MTAuthResult) -> Void)

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

พารามิเตอร์

พารามิเตอร์ ชนิด คำอธิบาย
phoneNumber String หมายเลขโทรศัพท์มือถือ (รหัสประเทศ + หมายเลขโทรศัพท์)
completion (MTAuthResult) -> Void callback เมื่อการยืนยันตัวตนเสร็จสมบูรณ์

ผลลัพธ์ที่ส่งกลับ

ส่งกลับผ่านออบเจ็กต์ MTAuthResult:

  • token: โทเค็นยืนยันตัวตน ใช้สำหรับการตรวจสอบฝั่งแบ็กเอนด์

ข้อควรระวัง

  • ตรวจสอบให้แน่ใจว่า SDK ได้รับการเริ่มต้นแล้วก่อนเรียกใช้
  • ต้องใช้งานในสภาพแวดล้อมเครือข่ายมือถือ
  • โทเค็นที่ได้รับต้องส่งต่อไปยังแบ็กเอนด์เพื่อตรวจสอบครั้งที่สอง

ชนิด Enum

MTEnvironment

Enum สภาพแวดล้อมการทำงานของ SDK

@objc public enum MTEnvironment: Int { case sandbox = 0 // สภาพแวดล้อมแซนด์บ็อกซ์ (ทดสอบ) case production = 1 // สภาพแวดล้อมการใช้งานจริง }
              
              @objc public enum MTEnvironment: Int {
    case sandbox = 0      // สภาพแวดล้อมแซนด์บ็อกซ์ (ทดสอบ)
    case production = 1   // สภาพแวดล้อมการใช้งานจริง
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
ค่า คำอธิบาย
.sandbox สภาพแวดล้อมทดสอบแซนด์บ็อกซ์
.production สภาพแวดล้อมการใช้งานจริง

ชนิดผลลัพธ์

MTSetupResult

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

@objcMembers public class MTSetupResult: NSObject { /// รหัสผลลัพธ์ (0 คือสำเร็จ, อื่น ๆ คือล้มเหลว) public let code: Int /// ข้อความอธิบาย public let message: String /// สำเร็จหรือไม่ public var isSuccess: Bool { return code == 0 } }
              
              @objcMembers
public class MTSetupResult: NSObject {
    /// รหัสผลลัพธ์ (0 คือสำเร็จ, อื่น ๆ คือล้มเหลว)
    public let code: Int
    
    /// ข้อความอธิบาย
    public let message: String
    
    /// สำเร็จหรือไม่
    public var isSuccess: Bool { return code == 0 }
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
พร็อพเพอร์ตี้ ชนิด คำอธิบาย
code Int รหัสผลลัพธ์; 0 หมายถึงสำเร็จ
message String ข้อความอธิบาย
isSuccess Bool สำเร็จหรือไม่ (พร็อพเพอร์ตี้แบบคำนวณ)

MTCoverageResult

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

@objcMembers public class MTCoverageResult: NSObject { /// รหัสผลลัพธ์ (0 คือสำเร็จ, อื่น ๆ คือล้มเหลว) public let code: Int /// ข้อความอธิบาย public let message: String /// ใช้งานได้หรือไม่ public let isAvailable: Bool /// รหัสผู้ให้บริการ public let operatorCode: String? /// สำเร็จหรือไม่ public var isSuccess: Bool { return code == 0 } }
              
              @objcMembers
public class MTCoverageResult: NSObject {
    /// รหัสผลลัพธ์ (0 คือสำเร็จ, อื่น ๆ คือล้มเหลว)
    public let code: Int
    
    /// ข้อความอธิบาย
    public let message: String
    
    /// ใช้งานได้หรือไม่
    public let isAvailable: Bool
    
    /// รหัสผู้ให้บริการ
    public let operatorCode: String?
    
    /// สำเร็จหรือไม่
    public var isSuccess: Bool { return code == 0 }
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
พร็อพเพอร์ตี้ ชนิด คำอธิบาย
code Int รหัสผลลัพธ์; 0 หมายถึงสำเร็จ
message String ข้อความอธิบาย
isAvailable Bool สภาพแวดล้อมปัจจุบันรองรับการยืนยันตัวตนหรือไม่
operatorCode String? รหัสผู้ให้บริการ (เช่น "TELKOMSEL") ละเว้นฟิลด์นี้ ค่าเริ่มต้นจะส่งกลับเป็นค่าว่าง
isSuccess Bool สำเร็จหรือไม่ (พร็อพเพอร์ตี้แบบคำนวณ)

MTAuthResult

คลาสผลการยืนยันตัวตน

@objcMembers public class MTAuthResult: NSObject { /// รหัสผลลัพธ์ (0 คือสำเร็จ, อื่น ๆ คือล้มเหลว) public let code: Int /// ข้อความอธิบาย public let message: String /// โทเค็นยืนยันตัวตน (ใช้สำหรับการตรวจสอบฝั่งแบ็กเอนด์) public let token: String? /// สำเร็จหรือไม่ public var isSuccess: Bool { return code == 0 } }
              
              @objcMembers
public class MTAuthResult: NSObject {
    /// รหัสผลลัพธ์ (0 คือสำเร็จ, อื่น ๆ คือล้มเหลว)
    public let code: Int
    
    /// ข้อความอธิบาย
    public let message: String
    
    /// โทเค็นยืนยันตัวตน (ใช้สำหรับการตรวจสอบฝั่งแบ็กเอนด์)
    public let token: String?
    
    /// สำเร็จหรือไม่
    public var isSuccess: Bool { return code == 0 }
}

            
โค้ดนี้โชว์เป็นหน้าต่างลอย
พร็อพเพอร์ตี้ ชนิด คำอธิบาย
code Int รหัสผลลัพธ์; 0 หมายถึงสำเร็จ
message String ข้อความอธิบาย
token String? โทเค็นยืนยันตัวตน ใช้สำหรับการตรวจสอบครั้งที่สองฝั่งแบ็กเอนด์
isSuccess Bool สำเร็จหรือไม่ (พร็อพเพอร์ตี้แบบคำนวณ)

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

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

import UIKit import MTVerify class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // เปิดโหมดดีบัก MTVerifySDK.setDebug(true) // เริ่มต้น SDK initializeSDK() } // MARK: - การเริ่มต้น SDK private func initializeSDK() { MTVerifySDK.setup( appKey: "your_app_key", environment: .production ) { [weak self] result in if result.isSuccess { print("✅ เริ่มต้น SDK สำเร็จ") print("เวอร์ชัน SDK: \(MTVerifySDK.version)") print("เริ่มต้นแล้ว: \(MTVerifySDK.isInitialized)") } else { print("❌ เริ่มต้น SDK ล้มเหลว: \(result.message) (code: \(result.code))") } } } // MARK: - ตรวจสอบการรองรับ func checkCoverage(phoneNumber: String) { // ตรวจสอบว่า SDK เริ่มต้นแล้วหรือไม่ guard MTVerifySDK.isInitialized else { print("⚠️ SDK ยังไม่ได้เริ่มต้น") return } MTVerifySDK.checkCoverage(phoneNumber: phoneNumber) { result in if result.isSuccess { if result.isAvailable { print("✅ บริการพร้อมใช้งาน") print("ผู้ให้บริการ: \(result.operatorCode ?? "ไม่ทราบ")") } else { print("⚠️ สภาพแวดล้อมปัจจุบันไม่รองรับบริการยืนยันตัวตน") } } else { print("❌ การตรวจสอบล้มเหลว: \(result.message) (code: \(result.code))") } } } // MARK: - เริ่มการยืนยันตัวตน func authenticate(phoneNumber: String) { // ตรวจสอบว่า SDK เริ่มต้นแล้วหรือไม่ guard MTVerifySDK.isInitialized else { print("⚠️ SDK ยังไม่ได้เริ่มต้น") return } MTVerifySDK.startAuthentication(phoneNumber: phoneNumber) { result in if result.isSuccess { print("✅ ยืนยันตัวตนสำเร็จ") print("Token: \(result.token ?? "")") // TODO: ส่ง token ไปยังแบ็กเอนด์เพื่อตรวจสอบ self.verifyTokenOnServer(token: result.token ?? "") } else { print("❌ ยืนยันตัวตนล้มเหลว: \(result.message) (code: \(result.code))") } } } // MARK: - การตรวจสอบฝั่งแบ็กเอนด์ private func verifyTokenOnServer(token: String) { // ส่ง token ไปยังเซิร์ฟเวอร์แบ็กเอนด์ของคุณเพื่อตรวจสอบ // แบ็กเอนด์ใช้ token เพื่อเรียก API เซิร์ฟเวอร์ MTVerify เพื่อตรวจสอบหมายเลขโทรศัพท์ } }
              
              import UIKit
import MTVerify

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // เปิดโหมดดีบัก
        MTVerifySDK.setDebug(true)
        
        // เริ่มต้น SDK
        initializeSDK()
    }
    
    // MARK: - การเริ่มต้น SDK
    
    private func initializeSDK() {
        MTVerifySDK.setup(
            appKey: "your_app_key",
            environment: .production
        ) { [weak self] result in
            if result.isSuccess {
                print("✅ เริ่มต้น SDK สำเร็จ")
                print("เวอร์ชัน SDK: \(MTVerifySDK.version)")
                print("เริ่มต้นแล้ว: \(MTVerifySDK.isInitialized)")
            } else {
                print("❌ เริ่มต้น SDK ล้มเหลว: \(result.message) (code: \(result.code))")
            }
        }
    }
    
    // MARK: - ตรวจสอบการรองรับ
    
    func checkCoverage(phoneNumber: String) {
        // ตรวจสอบว่า SDK เริ่มต้นแล้วหรือไม่
        guard MTVerifySDK.isInitialized else {
            print("⚠️ SDK ยังไม่ได้เริ่มต้น")
            return
        }
        
        MTVerifySDK.checkCoverage(phoneNumber: phoneNumber) { result in
            if result.isSuccess {
                if result.isAvailable {
                    print("✅ บริการพร้อมใช้งาน")
                    print("ผู้ให้บริการ: \(result.operatorCode ?? "ไม่ทราบ")")
                } else {
                    print("⚠️ สภาพแวดล้อมปัจจุบันไม่รองรับบริการยืนยันตัวตน")
                }
            } else {
                print("❌ การตรวจสอบล้มเหลว: \(result.message) (code: \(result.code))")
            }
        }
    }
    
    // MARK: - เริ่มการยืนยันตัวตน
    
    func authenticate(phoneNumber: String) {
        // ตรวจสอบว่า SDK เริ่มต้นแล้วหรือไม่
        guard MTVerifySDK.isInitialized else {
            print("⚠️ SDK ยังไม่ได้เริ่มต้น")
            return
        }
        
        MTVerifySDK.startAuthentication(phoneNumber: phoneNumber) { result in
            if result.isSuccess {
                print("✅ ยืนยันตัวตนสำเร็จ")
                print("Token: \(result.token ?? "")")
                
                // TODO: ส่ง token ไปยังแบ็กเอนด์เพื่อตรวจสอบ
                self.verifyTokenOnServer(token: result.token ?? "")
                
            } else {
                print("❌ ยืนยันตัวตนล้มเหลว: \(result.message) (code: \(result.code))")
            }
        }
    }
    
    // MARK: - การตรวจสอบฝั่งแบ็กเอนด์
    
    private func verifyTokenOnServer(token: String) {
        // ส่ง token ไปยังเซิร์ฟเวอร์แบ็กเอนด์ของคุณเพื่อตรวจสอบ
        // แบ็กเอนด์ใช้ token เพื่อเรียก API เซิร์ฟเวอร์ MTVerify เพื่อตรวจสอบหมายเลขโทรศัพท์
    }
}

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

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

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