敬告:此 DEMO 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,了解更多。
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版 jsBridge-v20241115.zip,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
♦ js API 详细说明及VPN连接流程请参考 官方文档 的同名函数
事件监听
• 如需接口调用事件,请设置此监听器;
//示例 var login = function(captcha) { jsBridge.topVpn.loginVOne({ m_iLoginType: 2, m_iAuthType : 1, m_strAccount : "账号", m_strLoginPasswd: "密码", m_strExtraCode : captcha //验证码 }, function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 GET_SERVERCFG 监听事件 } }); }; jsBridge.topVpn.setListener(function(event, data) { switch (event) { case "GET_SERVERCFG": { //============= 取得服务器端配置 if (data.success) { if (data.captchaType != "off") { //需要验证码,向服务器请求验证码图片 jsBridge.topVpn.requestCaptcha(function(succ, data) { if (!succ) { alert("请求验证码图片失败\n" + JSON.stringify(data)); } }); } else { //登录 login(""); } } else { alert("GET_SERVERCFG 失败: " + JSON.stringify(data)); } break; } case "GET_CAPTCHA": { //=============取得验证码图片 if (data.success) { //把 data.base64_image 显示在网页上,让用户读取输入图片上的验证码 //登录 login("验证码"); } else { alert("GET_CAPTCHA 失败: " + JSON.stringify(data)); } break; } case "LOGIN_SYSTEM": { //=============登录事件 if (data.success) { //获取用户授权的资源 jsBridge.topVpn.requestVPNResInfo(function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 GET_RESOURCE 监听事件 } }); } else { alert("LOGIN_SYSTEM 失败: " + JSON.stringify(data)); } break; } case "GET_RESOURCE": { //=============获取用户授权的资源 if (data.success) { //启动VPN服务 jsBridge.topVpn.startService(function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 START_SERVICE 监听事件 } }); } else { alert("GET_RESOURCE 失败: " + JSON.stringify(data)); } break; } case "START_SERVICE": { //=============启动VPN服务 if (data.success) { //启动VPN服务 alert("VPN 服务启动成功: " + JSON.stringify(data)); } else { alert("START_SERVICE 失败: " + JSON.stringify(data)); } break; } //case "....": { //其他事件 // } }; //json方式显示监听回调参数 showResult({ event: event, data : data }); }); //请拉到页面底部查看回调数据信息 $('html,body').animate({ scrollTop: $('#view').offset().top }, 500); /** 回调参数说明: event - 事件代码,字符串类型 data - 事件数据,JSON 对象 **/
//移除监听器,不会再收到回调通知 //在需要时可重新调用 setListener jsBridge.topVpn.removeListener();
业务接口
//设置配置信息后触发 GET_SERVERCFG 监听事件时返回服务器配置信息 jsBridge.topVpn.setConfigInfo({ //是否自动重连 m_blAutoReConnect: true, //重试次数 m_iRetryCount: 10, //超时时间(秒) m_iTimeOut: 5, //VPN 地址 m_strVPNIP: "222.223.187.10", //VPN 端口 m_iServerPort: 8443 }, function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 GET_SERVERCFG 监听事件 } });
//需先调用 setConfigInfo,在 GET_SERVERCFG 监听事件中判断成功获取服务器配置信息后才能调用此登录接口。 jsBridge.topVpn.loginVOne({ //登录方式: //方式1.用户名口令 m_iLoginType: 2, m_iAuthType : 1, //方式2.国际(rsa)软证书 //m_iLoginType: 4, //m_iAuthType : 2, //m_iProtocolType: 4, //方式3.国际(rsa)硬证书 //m_iLoginType: 4, //m_iAuthType : 4, //m_iProtocolType : 4, //m_strPackageName: "App的包名,com.example.vpn", //方式4.国密(sm)硬证书 //m_iLoginType: 4, //m_iAuthType : 4, //m_iProtocolType : 2, //m_strPackageName: "App的包名,com.example.vpn", //方式5.外部认证 //m_iLoginType: 16, //m_iAuthType : 1, //m_iProtocolType : 1, //1 静态密码, 8 动态密码, 16 Token认证 //方式6.生物指纹认证 //m_iLoginType: 64, //m_iAuthType : 128, //m_byarrReservedData_base64 : "", //生物指纹数据的 Base64 编码 //口令方式时提供 m_strAccount : "账号", m_strLoginPasswd: "密码", m_strExtraCode : "验证码", //证书方式时提供 m_strCer_base64: "", //p12证书文件的 Base64 编码 m_strCerPasswd : "证书密码" }, function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 LOGIN_SYSTEM 监听事件 } });
jsBridge.topVpn.requestVPNResInfo(function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 GET_RESOURCE 监听事件 } });
jsBridge.topVpn.startService(function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 START_SERVICE 监听事件 } });
jsBridge.topVpn.closeService(function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 CLOSE_SERVICE 监听事件 } });
jsBridge.topVpn.logoutVOne(function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 LOGOUT_SYSTEM 监听事件 } });
jsBridge.topVpn.requestCaptcha(function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 GET_CAPTCHA 监听事件 //返回 base64_image JPG 图片,请自行显示在 UI 上 } });
jsBridge.topVpn.modifyPassword({ oldPassword: "旧密码", newPassword: "新密码" }, function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { //请处理 MODIFY_PASSWORD 监听事件 } });
//此接口无监听事件 jsBridge.topVpn.getStatus(function(succ, data) { if (!succ) { alert("失败\n" + JSON.stringify(data)); } else { alert(JSON.stringify(data)); } });
监听回调数据: