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 文件,方法如下:
<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>
检测是否某一个scheme 可以被打开。
注意:要 配置白名单
canOpenUrlWithScheme(callback(ret))
scheme:
ret:
{
canOpen:true // true 可以 false 不可以
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.canOpenUrlWithScheme({
scheme:'AppNest'
},function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS 系统
可提供的 1.0.0 及更高版本
注册AppNest终端注册第三方程序应用。
registerApp(callback(ret))
appKey:
secretkey:
hostBundle:
packageName:
scheme:
ret:
{
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){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS, Android系统
可提供的1.0.0及更高版本
可以获得当前sdk的版本号,以用于版本管理。
getVersion(callback(ret, err))
ret:
{
version:'' //版本号
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.getVersion(function(ret, err) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
} else {
api.alert({
msg: JSON.stringify(err)
})
}
});
iOS,Android系统
可提供的1.0.0及更高版本
检测AppNest是否安装
packageName:
ret:
{
isInstalled:'' // 是否安装
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.isAppNestInstalled(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统
可提供的1.0.0及更高版本
获取token
getToken({params}, callback(ret, err))
ret:
{
resultCode:0, // 数字类型;返回码:0:成功 -1 其他错误
resultmessage:''//字符串类型;返回码说明(携带错误信息)
token:'' //字符串类型;token
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.getToken(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS,Android系统
可提供的1.0.0及更高版本
获取param
getParam(callback(ret, err))
key:
ret:
{
value:'', // 参数值与键值对应(该参数仅支持android)
param:{"loginId":loginId,
"password":pwd,
"ecId":ecid
}
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.getParam({
key:''
},function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS,Android系统
可提供的1.0.0及更高版本
检测版本信息,用于第三方应用的版本管理。
checkApp({params},callback(ret, err))
appId:
appVersion:
ret:
{
resultCode:0, // 数字类型;返回码:0:成功 -1 其他错误
resultmessage:''//字符串类型;返回码说明(携带错误信息)
appNestCheckAppInfo:'' //应用数据 AppNestCheckAppInfo对象
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.checkApp({
appId:'',
appVersion:''
},function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS,Android系统
可提供的1.0.0及更高版本
手势密码判断
isSetGesture(callback(ret, err))
ret:
{
isSetGesture:false //布尔类型; 成功时返回true ,失败时返回false
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.isSetGesture(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS,Android系统
可提供的1.0.0及更高版本
显示手势密码界面;以下方法为直接显示在keywindow上
手势密码做大验证次数为5次,resultCode为0则成功,其他值则为验证失败,若验证成功则会自动消失,失败时需要调用disMissGestureView方法将手势密码关闭。
showGesture(callback(ret, err))
ret:
{
resultmessage:''//字符串类型;验证结果回调
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.showGesture(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS,Android系统
可提供的1.0.0及更高版本
显示手势密码界面 ;该方法通过present方式由target显示 (该方法仅支持ios)
showGesturePresent({params}, callback(ret, err))
ret:
{
resultmessage:''//字符串类型;验证结果回调
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.showGesturePresent(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统
可提供的1.0.0及更高版本
手势密码界面消失方法,在用户输入次数过多时,需要自主关闭 (该方法仅支持ios)
disMissGestureView(callback(ret, err))
ret:
{
isDisMiss:false //布尔类型;
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.disMissGestureView(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS系统
可提供的1.0.0及更高版本
使用手势密码功能时,界面切换到后台需调用的函数(该方法仅支持 Android)
onPause()
var appNestAgent = api.require('appNestAgent');
appNestAgent.onPause();
Android系统
可提供的1.0.0及更高版本
使用手势密码功能时,界面切换到前台唤起手势密码界面需调用的函数(该方法仅支持 Android)
onPause()
{
resultCode:0, // 数字类型;返回码
resultMessage:'' // 字符串;返回消息
}
var appNestAgent = api.require('appNestAgent');
appNestAgent.onResume();
Android系统
可提供的1.0.0及更高版本