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
  • 配置示例:
  1. <feature name="appNestAgent">
  2. <param name="urlScheme" value="AppNest"/>
  3. </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中。

  • 配置示例:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>keychain-access-groups</key>
  6. <array>
  7. <string>$(AppIdentifierPrefix)com.nationsky.appnest.plus.appnest.keychain</string>
  8. </array>
  9. </dict>
  10. </plist>

模块接口

canOpenUrlWithScheme

检测是否某一个scheme 可以被打开。

注意:要 配置白名单

canOpenUrlWithScheme(callback(ret))

Params

scheme:

  • 类型:字符串
  • 描述:检测的 scheme

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. canOpen:true // true 可以 false 不可以
  3. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.canOpenUrlWithScheme({
  3. scheme:'AppNest'
  4. },function(ret){
  5. alert(JSON.stringify(ret));
  6. });

可用性

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 对象
  • 内部字段:
  1. {
  2. status:true // true 成功 false 失败
  3. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.registerApp({
  3. appKey:'appnest',
  4. secretkey:'qdgx@2020',
  5. hostBundle:'com.nationsky.appnest.plus',
  6. scheme:'AppNest'
  7. packageName:‘’
  8. },function(ret){
  9. alert(JSON.stringify(ret));
  10. });

可用性

iOS, Android系统

可提供的1.0.0及更高版本

getVersion

可以获得当前sdk的版本号,以用于版本管理。

getVersion(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. version:'' //版本号
  3. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.getVersion(function(ret, err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

iOS,Android系统

可提供的1.0.0及更高版本

isAppNestInstalled

检测AppNest是否安装

Params

packageName:

  • 类型:字符串
  • 描述:app的包名(仅支持android)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. isInstalled:'' // 是否安装
  3. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.isAppNestInstalled(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统

可提供的1.0.0及更高版本

getToken

获取token

getToken({params}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultCode:0, // 数字类型;返回码:0:成功 -1 其他错误
  3. resultmessage:''//字符串类型;返回码说明(携带错误信息)
  4. token:'' //字符串类型;token
  5. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.getToken(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS,Android系统

可提供的1.0.0及更高版本

getParam

获取param

getParam(callback(ret, err))

Params

key:

  • 类型:字符串 (该参数仅支持android)
  • 描述:参数的键值 (如:用户名(userName),用户标识(loginId),密码(password),机构标识(ecId))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. value:'', // 参数值与键值对应(该参数仅支持android)
  3. param:{"loginId":loginId,
  4. "password":pwd,
  5. "ecId":ecid
  6. }
  7. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.getParam({
  3. key:''
  4. },function(ret) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. });

可用性

iOS,Android系统

可提供的1.0.0及更高版本

checkApp

检测版本信息,用于第三方应用的版本管理。

checkApp({params},callback(ret, err))

params

appId:

  • 类型:字符串
  • 描述:应用id

appVersion:

  • 类型:字符串
  • 描述:应用版本号

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultCode:0, // 数字类型;返回码:0:成功 -1 其他错误
  3. resultmessage:''//字符串类型;返回码说明(携带错误信息)
  4. appNestCheckAppInfo:'' //应用数据 AppNestCheckAppInfo对象
  5. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.checkApp({
  3. appId:'',
  4. appVersion:''
  5. },function(ret) {
  6. if (ret) {
  7. alert(JSON.stringify(ret));
  8. }
  9. });

可用性

iOS,Android系统

可提供的1.0.0及更高版本

isSetGesture

手势密码判断

isSetGesture(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. isSetGesture:false //布尔类型; 成功时返回true ,失败时返回false
  3. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.isSetGesture(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS,Android系统

可提供的1.0.0及更高版本

showGesture

显示手势密码界面;以下方法为直接显示在keywindow上

手势密码做大验证次数为5次,resultCode为0则成功,其他值则为验证失败,若验证成功则会自动消失,失败时需要调用disMissGestureView方法将手势密码关闭。

showGesture(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultmessage:''//字符串类型;验证结果回调
  3. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.showGesture(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS,Android系统

可提供的1.0.0及更高版本

showGesturePresent

显示手势密码界面 ;该方法通过present方式由target显示 (该方法仅支持ios)

showGesturePresent({params}, callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. resultmessage:''//字符串类型;验证结果回调
  3. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.showGesturePresent(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统

可提供的1.0.0及更高版本

disMissGestureView

手势密码界面消失方法,在用户输入次数过多时,需要自主关闭 (该方法仅支持ios)

disMissGestureView(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. isDisMiss:false //布尔类型;
  3. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.disMissGestureView(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统

可提供的1.0.0及更高版本

onPause

使用手势密码功能时,界面切换到后台需调用的函数(该方法仅支持 Android)

onPause()

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.onPause();

可用性

Android系统

可提供的1.0.0及更高版本

onResume

使用手势密码功能时,界面切换到前台唤起手势密码界面需调用的函数(该方法仅支持 Android)

onPause()

callback

  1. {
  2. resultCode:0, // 数字类型;返回码
  3. resultMessage:'' // 字符串;返回消息
  4. }

示例代码

  1. var appNestAgent = api.require('appNestAgent');
  2. appNestAgent.onResume();

可用性

Android系统

可提供的1.0.0及更高版本