管理员公告
卡密概况
统计范围:全部项目
客户端对接(加密)
1. 一键门禁:IOASLicenseGate(API, 用户ID, project_key, app_secret, crypto_mode, preventCapture)
2. crypto_mode 仅支持 2 / 3(明文模式1已禁用),必须与客户端完全一致
3. 点击「我的项目」中的项目名称可查看详情(含 app_secret)
4. preventCapture:编译/调用时传入 YES 开启提示框防截屏/防录制(iOS13+ secureTextEntry 方案)
5. 模式:1=HMAC签名 · 2=AES+签名 · 3=AES严格;请求含 ts / nonce / sign
创建项目密钥
加载配额中…
· 创建后会显示密钥;之后也可点击「我的项目」中的项目名称再次查看
· 客户端打包时必须写入相同的
project_key / app_secret / crypto_mode· 轮换 app_secret 后旧客户端会失效,需同步更新
我的项目
点击项目名称查看详情(含 app_secret)。可删除不再使用的项目。
| 名称 | project_key | 加密 | 默认设备 | 操作 |
|---|
修改项目加密方式
生成卡密
生成结果
卡密与设备
| 卡密 | 类型 | 状态 | 激活 | 设备 | 到期/天数 | 操作 |
|---|
二级代理(分销)
打开代理登录页仅高级用户可用。代理继承你指定的某个项目,用余额制作 1 / 7 / 14 / 30 天卡密。 单价由你设定;删卡不退余额。代理面板不能改加密参数、不能看 app_secret。
开通代理
代理列表
| 账号 | 项目 | 余额 | 单价 1/7/14/30 | 状态 | 操作 |
|---|
余额流水
| 时间 | 代理ID | 变动 | 余额后 | 原因 | 说明 |
|---|
编辑代理
项目公告
按项目设置客户端验证成功后显示的公告。若卡密由二级代理制作,客户端还会在项目公告下方额外显示绿色的「代理公告」。
对接说明
创建项目后可随时在「我的项目」点击名称查看 project_key 与 app_secret。
客户端加密方式 crypto_mode 必须与项目设置完全一致(仅 2 / 3,推荐 3)。
AsApi.zip(部署后对应 …/apikey/AsApi.zip)。
若点击无反应,请确认服务器已上传该文件。
对接前准备
- 在「项目密钥」创建项目,保存 project_key 与 app_secret
- 确认项目加密方式:1=签名 · 2=AES+签名 · 3=AES严格
- 在「生成卡密」生成测试卡,记下卡密
- 下载 AsApi 例子包,按示例填入你的参数
例子 1 · 一键门禁(推荐)
进程启动时调用一次即可完成配置与校验入口(按你的 SDK 版本使用对应 API 名)。
// Objective-C 示例
#import "IOASApiServer.h"
void demo_gate(void) {
IOASLicenseGate(
@"https://api.iosastool.com/apikey", // 你的服务地址
@"你的用户ID", // 用户后台登录 ID
@"pk_xxxxxxxx", // project_key
@"sk_xxxxxxxx", // app_secret(创建时保存)
2 // crypto_mode:必须与后台项目一致 2/3(推荐3)
);
}
例子 2 · 手动 verify / activate
适合需要自己控制激活时机的场景。
// Objective-C 示例
#import "IOASApiServer.h"
void demo_manual(void) {
IOASApiServerConfigureFull(
@"https://api.iosastool.com/apikey",
@"你的用户ID",
@"pk_xxxxxxxx",
@"sk_xxxxxxxx",
IOASCryptoModeAES // 或 Sign / AESStrict,与后台一致
);
[IOASApiServer verifyWithProjectKey:@"pk_xxxxxxxx"
cardKey:@"你的卡密"
completion:^(IOASVerifyResult *result, NSError *error) {
if (result.code == 0 && result.needActivate) {
[IOASApiServer activateWithProjectKey:@"pk_xxxxxxxx"
cardKey:@"你的卡密"
completion:^(IOASVerifyResult *r2, NSError *e2) {
NSLog(@"activate code=%ld msg=%@", (long)r2.code, r2.msg);
}];
} else {
NSLog(@"verify code=%ld msg=%@", (long)result.code, result.msg);
}
}];
}
参数对照
| 参数 | 从哪里来 | 说明 |
|---|---|---|
| API 地址 | 你的站点根路径 | 例如 https://api.iosastool.com/apikey |
| 用户 ID | 用户后台登录账号 | 注册/管理员开通的用户 ID |
| project_key | 项目密钥列表 | 创建项目后生成 |
| app_secret | 创建/轮换时 | 点击项目名称可查看;请妥善保管,勿泄露 |
| crypto_mode | 项目设置 | 1 / 2 / 3,客户端必须一致 |
| card_key | 生成卡密 | 发给终端用户的卡密 |
常见问题
- 签名/解密失败:检查 app_secret 与 crypto_mode 是否和后台项目一致
- 设备超限:提高该卡「最大设备数」或解绑旧设备
- 账号到期:控制台只读,客户端也无法验证,需管理员续期
- 丢了 app_secret:在「我的项目」点击名称查看详情;或轮换 secret 并同步客户端
编辑卡密
绑定设备
| 设备 ID | 名称 | 绑定时间 | 操作 |
|---|