Skip to content

Swift SDK

T3 网络验证 Swift SDK,使用 Apple Security 框架实现 RSA 加密。

适用场景

  • iOS / macOS Swift 应用
  • Swift Package Manager 项目

依赖说明

使用 Apple Security 框架,iOS/macOS 原生支持。

初始化

方式一:Base64 自定义编码集

swift
let verify = T3Verify()
verify.initSdk(
    loginCode: "登录调用码",
    noticeCode: "公告调用码",
    versionCode: "版本号调用码",
    heartbeatCode: "心跳调用码",
    appkey: "你的APPKEY",
    base64Charset: "你的Base64编码集"
)

方式二:RSA 算法 + HEX 编码 推荐

swift
let verify = T3Verify()
do {
    try verify.initRsa(
        loginCode: "登录调用码",
        noticeCode: "公告调用码",
        versionCode: "版本号调用码",
        heartbeatCode: "心跳调用码",
        appkey: "你的APPKEY",
        rsaPublicKey: """
            -----BEGIN PUBLIC KEY-----
            你的RSA公钥
            -----END PUBLIC KEY-----
            """
    )
} catch {
    print("初始化失败: \(error.localizedDescription)")
}

后台配置

使用 SDK 前,请先完成 后台快速配置。您也可以在后台「SDK 下载与注入」页面一键自动配置并下载已注入配置信息的 SDK,无需手动填写。

推荐调用顺序

API 方法参考

获取机器码

swift
let machineCode = getMachineCode()

获取程序公告 getNotice()

swift
let result = verify.getNotice()
if result.success {
    print("公告: \(result.notice ?? "")")
} else {
    print("失败: \(result.error ?? "")")
}

获取最新版本号 getLatestVersion()

swift
let result = verify.getLatestVersion()
if result.success {
    print("最新版本: \(result.version ?? "")")
} else {
    print("失败: \(result.error ?? "")")
}

单码卡密登录 login(kami:imei:)

swift
let result = verify.login(kami: card, imei: machineCode)
if result.success {
    print("到期时间: \(result.endTime ?? "")")
    print("状态码: \(result.statecode ?? "")")
} else {
    print("登录失败: \(result.error ?? "")")
}

单码心跳验证 heartbeat(kami:statecode:)

swift
let result = verify.heartbeat(kami: card, statecode: loginResult.statecode ?? "")
if result.success {
    print("心跳验证成功")
} else {
    print("心跳失败: \(result.error ?? "")")
}

检查更新 checkUpdate(ver:)

swift
let result = verify.checkUpdate(ver: "1000")
if result.success {
    if result.hasUpdate {
        print("最新版本: \(result.ver ?? "")")
        print("更新公告: \(result.uplog ?? "")")
        print("下载地址: \(result.upurl ?? "")")
    }
}

查询卡密信息 queryKami(kami:)

swift
let result = verify.queryKami(kami: card)
if result.success {
    print("到期时间: \(result.endTime ?? "")")
    print("剩余时间: \(result.available ?? "")秒")
}

用户注册 userRegister(user:pass:email:)

swift
let result = verify.userRegister(user: "username", pass: "password", email: "email@example.com")
if result.success {
    print("注册成功")
} else {
    print("注册失败: \(result.error ?? "")")
}

用户登录 userLogin(user:pass:imei:)

swift
let result = verify.userLogin(user: "username", pass: "password", imei: machineCode)
if result.success {
    print("到期时间: \(result.endTime ?? "")")
    // result.statecode 用于用户心跳
} else {
    print("登录失败: \(result.error ?? "")")
}

用户心跳验证 userHeartbeat(user:pass:statecode:)

swift
let result = verify.userHeartbeat(user: "username", pass: "password", statecode: userStatecode)

用户充值 recharge(user:card:)

swift
let result = verify.recharge(user: "username", card: "recharge_card")

用户绑定QQ bindQQ(user:pass:openid:accessToken:)

swift
let result = verify.bindQQ(user: "username", pass: "password", openid: "openid", accessToken: "access_token")

用户QQ登录 qqLogin(openid:accessToken:)

swift
let result = verify.qqLogin(openid: "openid", accessToken: "access_token")

解绑设备 unbindKami / unbindUser

swift
// 单码解绑
let result = verify.unbindKami(kami: card, imei: machineCode)
print(result.success ? "  \(result.msg ?? "")" : "  失败: \(result.error ?? "")")
// 用户解绑
let result2 = verify.unbindUser(user: "username", pass: "password", imei: machineCode)
print(result2.success ? "  \(result2.msg ?? "")" : "  失败: \(result2.error ?? "")")

IP 解绑 ipUnbindKami / ipUnbindUser

swift
// 单码 IP 解绑
let result = verify.ipUnbindKami(kami: card)
print(result.success ? "  \(result.msg ?? "")" : "  失败: \(result.error ?? "")")
// 用户 IP 解绑
let result2 = verify.ipUnbindUser(user: "username", pass: "password")
print(result2.success ? "  \(result2.msg ?? "")" : "  失败: \(result2.error ?? "")")

获取远程变量 getVariableByKami / getVariableByUser

swift
// 通过卡密获取
let result = verify.getVariableByKami(kami: card, valueid: "变量ID", valuename: "变量名称")
// 通过用户获取
let result2 = verify.getVariableByUser(user: "username", pass: "password", valueid: "变量ID", valuename: "变量名称")
if result.success {
    print("变量值: \(result.value ?? "")")
}

修改远程变量 modifyVariableByKami / modifyVariableByUser

swift
// 通过卡密修改
let result = verify.modifyVariableByKami(kami: card, valueid: "变量ID", valuecontent: "新内容")
// 通过用户修改
let result2 = verify.modifyVariableByUser(user: "username", pass: "password", valueid: "变量ID", valuecontent: "新内容")

修改核心数据 modifyCoreByKami / modifyCoreByUser

swift
// 通过卡密修改
let result = verify.modifyCoreByKami(kami: card, core: "核心数据")
// 通过用户修改
let result2 = verify.modifyCoreByUser(user: "username", pass: "password", core: "核心数据")

获取核心数据 getCoreByKami / getCoreByUser

swift
// 通过卡密获取
let core1 = verify.getCoreByKami(kami: card)
if core1.success { print("核心数据: \(core1.core ?? "")") }

// 通过用户获取
let core2 = verify.getCoreByUser(user: "username", pass: "password")
if core2.success { print("核心数据: \(core2.core ?? "")") }

返回值T3CoreResult

属性类型说明
successBool是否成功
coreString?核心数据内容
errorString?错误信息

获取在线数量 getOnlineKamiCount / getOnlineUserCount

swift
// 获取在线卡密数量
let ok = verify.getOnlineKamiCount()
if ok.success { print("在线卡密数: \(ok.count)") }

// 获取在线用户数量
let ou = verify.getOnlineUserCount()
if ou.success { print("在线用户数: \(ou.count)") }

返回值T3OnlineResult

属性类型说明
successBool是否成功
countInt在线数量
errorString?错误信息

获取云文档 getCloudDoc(token:)

swift
let result = verify.getCloudDoc(token: "云文档Token")
if result.success {
    print("内容: \(result.content ?? "")")
}

应用签名比对 appSign(autograph:)

swift
let result = verify.appSign(autograph: "应用签名")
if result.success {
    print("  \(result.msg ?? "")")
    print("  后台签名: \(result.autograph ?? "")")
} else {
    print("  失败: \(result.error ?? "")")
}

用户修改密码 changePassword(user:oldpass:newpass:)

swift
let result = verify.changePassword(user: "username", oldpass: "旧密码", newpass: "新密码")

禁用 disableKami / disableUser

swift
// 禁用卡密
let result = verify.disableKami(kami: card)
// 禁用用户
let result2 = verify.disableUser(user: "username", pass: "password")

用户注销 userCancel(user:pass:)

swift
let result = verify.userCancel(user: "username", pass: "password")

完整示例

swift
import Foundation

let verify = T3Verify()
do {
    try verify.initRsa(
        loginCode: "F2FA89AD46C050B2",
        noticeCode: "3512425FE75AE73A",
        versionCode: "F119CF1323743DBC",
        heartbeatCode: "B1D2263C3702177F",
        appkey: "5d116108006a454d538839ccff2d32f9",
        rsaPublicKey: """
            -----BEGIN PUBLIC KEY-----
            ...
            -----END PUBLIC KEY-----
            """
    )
} catch {
    print("初始化失败: \(error.localizedDescription)")
    exit(1)
}

let card = "你的卡密"
let machineCode = getMachineCode()

// 1. 获取公告
let notice = verify.getNotice()
if notice.success { print("公告: \(notice.notice ?? "")") }

// 2. 获取版本号
let ver = verify.getLatestVersion()
if ver.success { print("最新版本: \(ver.version ?? "")") }

// 3. 单码登录
let login = verify.login(kami: card, imei: machineCode)
if login.success {
    print("到期时间: \(login.endTime ?? "")")
    // 4. 心跳验证
    let hb = verify.heartbeat(kami: card, statecode: login.statecode ?? "")
    if hb.success { print("心跳验证成功") }
}

编译运行

bash
swiftc -o t3demo main.swift T3Verify.swift -framework Foundation -framework Security
./t3demo

T3 网络验证 WebAPI 开发文档