项目总数

0

激活码总量

0

已激活设备

0

今日新增激活

0
最近激活与绑定记录
时间项目激活码设备型号 / IDIP & 归属地动作
正在加载最新动态...
项目列表
项目名称App ID (包名)Project Secret (客户端密钥)激活码 / 设备数解绑策略创建时间操作
加载中...
激活码所属项目类型 / 有效期绑定设备状态到期时间 / 剩余备注操作
加载中...
共 0 条
1 / 1
时间 (UTC+8)动作项目激活码设备 IDIP & 归属地客户端信息 / 详情操作
加载中...
Android / iOS 客户端激活与心跳模拟器
// 点击左侧按钮发起测试请求...
移动端 SDK 快速集成

一、标准 RESTful API 接口地址

后端服务部署在 Cloudflare 全球边缘节点,直接向以下端点发送 JSON 请求:

POST /api/v1/activate - 首次激活与一机一码绑定
POST /api/v1/verify - 启动验证与周期心跳
POST /api/v1/unbind - 设备主动解绑 (需项目允许)

二、Android (Kotlin) 极简接入示例

val client = OkHttpClient()
val json = JSONObject().apply {
    put("project_key", "YOUR_PROJECT_SECRET_KEY")
    put("code", "VIP-XXXX-XXXX-XXXX")
    put("device_id", Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID))
    put("device_info", JSONObject().apply {
        put("model", Build.MODEL)
        put("os", "Android")
        put("os_version", Build.VERSION.RELEASE)
        put("app_version", "1.0.0")
    })
}
val request = Request.Builder()
    .url("https://YOUR_WORKER_DOMAIN/api/v1/activate")
    .post(json.toString().toRequestBody("application/json".toMediaType()))
    .build()
client.newCall(request).enqueue(object : Callback {
    override fun onResponse(call: Call, response: Response) {
        val result = JSONObject(response.body?.string() ?: "{}")
        if (result.optBoolean("success")) {
            val expiresAt = result.getJSONObject("data").optString("expires_at")
        }
    }
    override fun onFailure(call: Call, e: IOException) {}
})

三、iOS (Swift) 极简接入示例

let deviceId = UIDevice.current.identifierForVendor?.uuidString ?? UUID().uuidString
let params: [String: Any] = [
    "project_key": "YOUR_PROJECT_SECRET_KEY",
    "code": "VIP-XXXX-XXXX-XXXX",
    "device_id": deviceId,
    "device_info": [
        "model": UIDevice.current.model,
        "os": "iOS",
        "os_version": UIDevice.current.systemVersion,
        "app_version": Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0"
    ]
]
var request = URLRequest(url: URL(string: "https://YOUR_WORKER_DOMAIN/api/v1/activate")!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: params)
URLSession.shared.dataTask(with: request) { data, _, _ in
    if let data = data, let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] {
        print("激活结果: \(json)")
    }
}.resume()