# Flutter API说明
[TOC]
tk_initSdk
- 功能:IOTC初始化,确认sdkLicensekey的合法性
- Key值需要向TUTK申请
/**
IOTC 初始化
/// 初始化SDK, 更改 realm 设定
/// 需要在 IOTC_Initialize2() 之前调用
/// 如果 master realm 设定成功,则回调 TUTK_ER_NoERROR
/// * \如果返回值 < 0,则上报错误码
/// * - #如果region无效,则回调 TUTK_ER_INVALID_ARG
/// * - #如果key无效,则回调 TUTK_ER_INVALID_LICENSE_KEY
/// * - #如果内存分配失败,则回调 TUTK_ER_MEM_INSUFFICIENT
/// * [licenseKey] 需要设置的TUTK Server's realm.
*/
static Future<int> tk_initSdk(String licenseKey)
示例:
FlutterTunnel.tk_initSdk('licensekey');
tk_connectTunnel
- 功能:建立Tunnel连接
/**
Tunnel 连接
/// 此接口用于客户端与Tunnel Agent建立连接
/// * [connectInfo]
/// var connectInfo = {"uid": _uid, "username": _username, "password": _password};
/// * [_uid] Tunnel服务端 所需使用的UID
/// * [_username] 预设的account
/// * [_password] 预设的password
/// 当返回值 >= 0 且等于输入的SID参数时,则返回相应的session id
/// 如果返回值 < 0,则上报错误码
*/
static Future<int>tk_connectTunnel(Map connectInfo)
- (int)tk_connectTunnel
示例:
var info = {"uid": _uid, "username": "admin", "password": "testpwd"};
int sid = await FlutterTunnel.tk_connectTunnel(info);
tk_startPortMapping
- 功能:开始将两端端口进行映射
/**
端口映射
/// 进行端口映射
/// 此接口用于Tunnel Agent启用端口映射服务
// * 由P2PTunnel 模块提供,Tunnel Agent将指定本地端口
// * Tunnel Agent将使用一个本地的端口local port映射远程的端口remote port
/// * [portInfo]
/// var portInfo = {"uid": _uid, "localPort": _localPort, "remotePort": _remotePort};
/// * [_uid] Tunnel服务端 所需使用的UID
/// * [_localPort] 与Tunnel服务端 建立连接时使用的本地端口
/// * [_remotePort] Tunnel服务端 建立连接时指定的远端端口
/// 如果返回值 >= 0,则返回端口映射索引
/// 如果返回值 < 0,则上报错误码
*/
static Future<int>tk_startPortMapping(Map portInfo)
tk_startPortMapping
示例:
int webIndex;
var info = {"uid": _uid, "localPort": 10000, "remotePort": 80};
try {
webIndex = await FlutterTunnel.tk_startPortMapping(info);
}
on Exception {
webIndex = -1;
}
tk_stopPortMapping
- 功能:停止端口映射
/**
停止端口映射
/// 停止端口映射
/// 此API用于Tunnel Agent关闭端口映射服务
// * 与P2PTunnelAgent_PortMapping() 提供的端口映射索引 保持一致
/// * [portInfo]
/// var portInfo = {"uid": _uid};
/// * [_uid] Tunnel服务端 所需使用的UID
*/
static Future<void>tk_stopPortMapping(Map portInfo)
示例:
var info = {"uid": _uid};
FlutterTunnel.tk_stopPortMapping(info);
tk_disconnectTunnel
- 功能:断开Tunnel连接
/**
断开Tunnel连接
/// 停止Tunnel连接的进程
/// 此接口用于客户端停止与服务端建立连接
// * 当客户端在 P2PTunnelAgent_Connect_Ex() 中阻塞时,可使用此API。
/// * [connectInfo]
/// var connectInfo = {"uid": _uid};
/// * [_uid] Tunnel服务端 所需使用的UID
*/
static Future<void>tk_disconnectTunnel(Map connectInfo)
示例:
var info = {"uid": _uid};
FlutterTunnel.tk_disconnectTunnel(info);
tk_unInitSdk
- 功能:IOTC反初始化
/**
IOTC 反初始化
/// 反初始化 P2PTunnel 模块
/// 此API用于将Tunnel Agent的P2PTunnel模块进行反初始化
/// * \如果反初始化成功,则回调 TUNNEL_ER_NoERROR
/// * \如果返回值 < 0,则上报错误码
*/
static Future<void> tk_unInitSdk()
示例:
FlutterTunnel.tk_unInitSdk();
tk_setTunnelStatusCB
- 功能:上抛Tunnel连接状态
/**
上抛Tunnel连接状态
/// 上抛Tunnel连接状态
/// 此接口用于设置P2PTunnel的回调
// * Tunnel Agent可从回调中获知当前的连接状态
// * 每当tunnel连接状态发生改变时,P2PTunnel模块将被调用
// * 此回调函数用于通知Tunnel Agent相应的状态
/// * [_uid] Tunnel服务端 所需使用的UID
*/
static Future<void> tk_setTunnelStatusCB(String _uid, void Function(dynamic) callback)
示例:
FlutterTunnel.tk_setTunnelStatusCB(_uid, (data) {
String uid = data["uid"];
int sid = data["sid"];
int error = data["error"];
setState(() {
_tunnelStatusCB = error;
if(_tunnelStatusCB < 0) {
disconnectTunnel();
}
});
});