iOS SDK 集成指南
概述
MTVerify iOS SDK 是一款手机号码认证 SDK,提供快速、安全的运营商级别手机号验证服务。
主要功能
- SDK 初始化:通过 AppKey 自动获取配置并初始化
- 覆盖检查:检查当前网络环境是否支持认证服务
- 号码认证:发起手机号码认证,获取认证 Token
系统要求
- iOS 12.0+
- Xcode 14.0+
集成指南
手动集成
- 将
MTVerify.xcframework拖入工程 - 在 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
如有问题,请联系技术支持团队。










