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
联系销售