appNestAgent
来自于:AC模块工作室
canOpenUrlWithScheme registerApp getVersion isAppNestInstalled getToken getParam cheakApp isSetGesture showGesture showGesturePresent disMissGestureView onPause onResume
概述
appNestAgent 模块封装了AppNestAgentSDK。AppNestAgent解决了第三方客户端用户鉴权问题,实现了第三方客户端的单点登录。
运行环境
iOS 9.0以上, AppNest 5.5.1以上
产品使用流程
AppNestAgent总体包括三个功能:SSO,MAM,Gesture。开发人员可以获取与AppNest客户端共享的数据,实现单点登录功能,通过sdk向平台服务器请求第三方应用的版本信息,以及公用AppNest客户端的手势密码功能。
使用前提
1.AppNest客户端版本在5.5.1以上。 AppNest客户端与第三方客户端的打包证书需要在同一team下。
2.使用此模块之前需先配置 config.xml 文件,方法如下:
- 名称:appNestAgent
- 参数:urlScheme
- 配置示例:
<feature name="appNestAgent">
<param name="urlScheme" value="AppNest"/>
</feature>
3.在工程的Capabilities需开启Keychain Sharing功能,并且添加一个keychain group,group的命名规则为主工程的bundleId后面添加appnest.keychain。例如主工程的bundleId为com.nationsky.appnest.plus,则添加的group为com.nationsky.appnest.plus.appnest.keychain。所以要使用此模块还需要配置一个.entitlements是xml格式的文件,新建一个文本文件,修改内容后命名为UZApp.entitlements文件,然后将文件放置在代码包里面的res文件夹下,云编译时会将里面的内容添加到编译工程里面的UZApp.entitlements中。
- 配置示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.nationsky.appnest.plus.appnest.keychain</string>
</array>
</dict>
</plist>
模块接口
canOpenUrlWithScheme
检测是否某一个scheme 可以被打开。
注意:要 配置白名单
canOpenUrlWithScheme(callback(ret))
Params
scheme:
- 类型:字符串
- 描述:检测的 scheme
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
canOpen:true // true 可以 false 不可以
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.canOpenUrlWithScheme({
scheme:'AppNest'
},function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS 系统
可提供的 1.0.0 及更高版本
registerApp
注册AppNest终端注册第三方程序应用。
registerApp(callback(ret))
Params
appKey:
- 类型:字符串
- 描述:(必填项)appkey 接入账号 (需要从服务器申请)
secretkey:
- 类型:字符串
- 描述:(必填项)秘钥,需要申请和appkey对应
hostBundle:
- 类型:字符串 (该参数仅支持ios)
- 描述:(必填项)主程序的bundleId
packageName:
- 类型:字符串 (该参数仅支持android)
- 描述:包名
scheme:
- 类型:字符串 (该参数仅支持ios)
- 描述:(必填项)主程序的程序入口
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true // true 成功 false 失败
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.registerApp({
appKey:'appnest',
secretkey:'qdgx@2020',
hostBundle:'com.nationsky.appnest.plus',
scheme:'AppNest',
packageName:‘’
},function(ret){
alert(JSON.stringify(ret));
});
可用性
iOS, Android系统
可提供的1.0.0及更高版本
getVersion
可以获得当前sdk的版本号,以用于版本管理。
getVersion(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
version:'' //版本号
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.getVersion(function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS,Android系统
可提供的1.0.0及更高版本
isAppNestInstalled
检测AppNest是否安装
Params
packageName:
- 类型:字符串
- 描述:app的包名(仅支持android)
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
isInstalled:'' // 是否安装
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.isAppNestInstalled(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统
可提供的1.0.0及更高版本
getToken
获取token
getToken({params}, callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
resultCode:0, // 数字类型;返回码:0:成功 -1 其他错误
resultmessage:''//字符串类型;返回码说明(携带错误信息)
token:'' //字符串类型;token
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.getToken(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS,Android系统
可提供的1.0.0及更高版本
getParam
获取param
getParam(callback(ret, err))
Params
key:
- 类型:字符串 (该参数仅支持android)
- 描述:参数的键值 (如:用户名(userName),用户标识(loginId),密码(password),机构标识(ecId))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
value:'', // 参数值与键值对应(该参数仅支持android)
param:{"loginId":loginId,
"password":pwd,
"ecId":ecid
}
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.getParam({
key:''
},function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS,Android系统
可提供的1.0.0及更高版本
checkApp
检测版本信息,用于第三方应用的版本管理。
checkApp({params},callback(ret, err))
params
appId:
- 类型:字符串
- 描述:应用id
appVersion:
- 类型:字符串
- 描述:应用版本号
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
resultCode:0, // 数字类型;返回码:0:成功 -1 其他错误
resultmessage:''//字符串类型;返回码说明(携带错误信息)
appNestCheckAppInfo:'' //应用数据 AppNestCheckAppInfo对象
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.checkApp({
appId:'',
appVersion:''
},function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS,Android系统
可提供的1.0.0及更高版本
isSetGesture
手势密码判断
isSetGesture(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
isSetGesture:false //布尔类型; 成功时返回true ,失败时返回false
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.isSetGesture(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS,Android系统
可提供的1.0.0及更高版本
showGesture
显示手势密码界面;以下方法为直接显示在keywindow上
手势密码做大验证次数为5次,resultCode为0则成功,其他值则为验证失败,若验证成功则会自动消失,失败时需要调用disMissGestureView方法将手势密码关闭。
showGesture(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
resultmessage:''//字符串类型;验证结果回调
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.showGesture(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS,Android系统
可提供的1.0.0及更高版本
showGesturePresent
显示手势密码界面 ;该方法通过present方式由target显示 (该方法仅支持ios)
showGesturePresent({params}, callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
resultmessage:''//字符串类型;验证结果回调
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.showGesturePresent(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统
可提供的1.0.0及更高版本
disMissGestureView
手势密码界面消失方法,在用户输入次数过多时,需要自主关闭 (该方法仅支持ios)
disMissGestureView(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
isDisMiss:false //布尔类型;
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.disMissGestureView(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统
可提供的1.0.0及更高版本
onPause
使用手势密码功能时,界面切换到后台需调用的函数(该方法仅支持 Android)
onPause()
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.onPause();
可用性
Android系统
可提供的1.0.0及更高版本
onResume
使用手势密码功能时,界面切换到前台唤起手势密码界面需调用的函数(该方法仅支持 Android)
onPause()
callback
{
resultCode:0, // 数字类型;返回码
resultMessage:'' // 字符串;返回消息
}
示例代码
var appNestAgent = api.require('appNestAgent');
appNestAgent.onResume();
可用性
Android系统
可提供的1.0.0及更高版本