Logo Site EngageLab Mark Colored Transparent文件
搜尋

iOS SDK 整合指南

概述

MTVerify iOS SDK 是一款手機號碼認證 SDK,提供快速、安全的電信業者等級手機號碼驗證服務。

主要功能

  • SDK 初始化:透過 AppKey 自動取得設定並初始化
  • 覆蓋檢查:檢查目前網路環境是否支援認證服務
  • 號碼認證:發起手機號碼認證,取得認證 Token

系統需求

  • 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 初始化完成回呼

注意事項

  • 必須在呼叫其他 API 之前完成初始化
  • 初始化為非同步操作,請在回呼中確認是否成功
  • 建議在 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 檢查完成回呼

回傳結果

透過 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 認證完成回呼

回傳結果

透過 MTAuthResult 物件回傳:

  • token:認證 Token,用於後端驗證

注意事項

  • 呼叫前請確保 SDK 已初始化
  • 需要在行動網路環境下使用
  • 取得的 Token 需要傳給後端進行二次驗證

列舉類型

MTEnvironment

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 /// 認證 Token(用於後端驗證) 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
    
    /// 認證 Token(用於後端驗證)
    public let token: String?
    
    /// 是否成功
    public var isSuccess: Bool { return code == 0 }
}

            
此代碼塊在浮窗中顯示
屬性 類型 描述
code Int 結果代碼,0 表示成功
message String 描述資訊
token String? 認證 Token,用於後端二次驗證
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 呼叫 MTVerify 伺服器 API 驗證手機號碼 } }
              
              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 呼叫 MTVerify 伺服器 API 驗證手機號碼
    }
}

            
此代碼塊在浮窗中顯示

版本資訊

  • SDK 版本:1.0.1
Icon Solid Transparent White Qiyu
聯繫銷售