appNestAgent

来自于:AC模块工作室

概述

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及更高版本