概述
KK JS-SDK是基于移动KK平台的Web应用开发工具包。
Web应用开发人员使用KK JS-SDK,可以调用拍照、拨号、定位等的移动设备能力,可以访问移动KK自身通讯录,可以对文件进行查看、删除、压缩/解压、加密/解密等操作,为KK用户提供更好的网页体验。
此外,KK JS-SDK还能部分兼容基于微信平台开发的Web应用,详见兼容微信的能力模块。
KK JS SDK版本变更记录请参考 Changelog.
整体说明
关于文档
此文档有下面几条约定:
1.函数原型中,被方括号包裹的参数为可选参数.
如:
kk.app.callNativeApp(options, [done], [fail])
这里的done、fail都是可选参数
2.参数类型 Any
表示参数的类型可以是javascript支持的任意数据类型
3.文档中所有涉及分辨率、尺寸或者宽高的单位都是像素(px)
如
kk.app.getDeviceInfo
获取到的分辨率,kk.media.getPicture
中设置图片的宽高等
文件路径
API中文件路径有以下几种写法:
协议 | 路径位置 |
---|---|
app | 应用包自身。如 app://doc/myfile.doc 表示应用包 中的 doc 文件夹中的 myfile.doc 文件 |
public | KK客户端公共存储区。如 public://temp/ 表示公共存储区 temp 文件夹 |
sdcard | Android指向sd卡,iOS则指向KK客户端的 document 文件夹。如 stcard://message.wav 在Android机器上表示sd卡根目录下的 message.wav 文件,在iOS上表示KK客户端 document 目录下的 message.wav 文件 |
调用说明
所有能力通过kk对象来调用 (若有命名冲突,使用kk.noConflict来解决命名冲突)。
KK JS SDK中大部分能力均为异步的能力,即需要使用回调函数才可知道能力的执行结果,只有极少部分能力会直接返回结果。异步调用的能力都有可以传入成功回调和失败回调,其中:
- 成功回调可能会接收一个对象作为参数。读取类型的能力,成功回调函数是必传的,比如 拍照,录音,选择通讯录联系人;其他类型的能力成功回调选填.
- 失败回调都会接收两个参数
fail(code,msg)
,code为错误代码,msg为错误说明。一般能力调用参数参数错误,客户端无相应权限(如用户未授权客户端使用摄像头,则无法使用拍照及录视频的能力),用户取消操作(如取消拍照)等均会进入失败回调。失败回调均为选填。
公用的错误代码
KK客户端提供的应用能力,在调用失败的情况下,会调用到应用提供的失败回调函数,返回错误码给应用。这里罗列一些公用的错误码。
错误代码 | 描述 |
---|---|
999 | 能力发生了未知的错误。 |
998 | 能力未定义。 |
996 | 未授权的能力调用。 |
990 | 非法能力调用。 |
使用步骤
获取 JS SDK
步骤1. 获取JS-SDK文件,点此获取JS-SDK文件。
引入 JS SDK
步骤2. 引入JS-SDK文件,通过 <script>
标签或者使用 AMD/CMD 标准模块加载方法加载。即有如下四种方式加载JS SDK库文件. 四种方式根据你的实际情况四选其一即可(若在EKP移动项目中引用, 请使用第四种方式).
加载方式1: 标签加载
@section('加载方式1: 标签加载')
<!--Script标签加载:-->
<script src='kk-1.3.19.js'></script>
@endsection
加载方式2: CMD工具加载
@section('加载方式2: CMD加载')
// 对CMD加载工具进行配置,此处使用seajs
seajs.config({
base: "../sea-modules/",
alias: {
'kk': 'app/kk-1.3.19.js'
}
});
// 在模块代码中即可这样使用:
define(function(require){
// 引入KK
var kk = require('kk')
// 监听ready事件,即可在回调中使用kk的API
kk.ready(function(){
// 调用能力
})
})
@endsection
加载方式3: AMD工具加载
@section('加载方式3: AMD加载')
//AMD加载:
requirejs(['jquery', 'app/kk-1.3.19'],function($,kk){
// 监听ready事件,即可在回调中使用kk的API
kk.ready(function(){
// 调用能力
})
});
@endsection
加载方式4: 在EKP移动Web项目中加载
蓝凌公司EKP的移动web应用使用的是dojo mobile框架,该框架采用 AMD 方式加载 js 代码, 且框架内已经内置了KK的JS SDK,若要在 EKP的移动web项目中使用KK JS SDK,应当使用如下方式引入:
@section('在EKP项目中加载JS SDK')
// 声明依赖内置的KK JS SDK
define(['mui/device/kk5/kk5'],function(kk){
//监听ready事件,即可在回调中使用kk的API
});
@endsection
注意: EKP移动Web框架中内置的JS SDK版本可能较官网版本旧, 若想使用最新版本的JS SDK, 可采用 加载方式1
引入, 注意必须在其他 script
之前引入, 否则可能引入失败. 引入后, 即可全局使用JS SDK中提供的能力.
配置并使用
步骤3. 配置JS-SDK(可选)
@section('配置JS-SDK')
//步骤3: 配置JS-SDK(可选)
// 配置应用,输出能力调用的详细日志, 在浏览器开发工具控制台中可查看该日志, 推荐开发时开启该选项
kk.config('detailLog', true);
@endsection
步骤4. 监听ready事件,回调后即可使用kk的API
@section('监听ready事件,回调后即可使用kk的API')
//步骤4: 监听ready事件,回调后即可使用kk的API
//应用运行入口:
kk.ready(function(){
//扫描二维码
kk.scaner.scanTDCode(function(res){
alert('二维码内容:' + res.code);
});
});
@endsection
调试方法
eruda日志调试工具
1、通过CDN使用:
@section('通过CDN使用:')
<script src="//cdn.bootcdn.net/ajax/libs/eruda/2.3.3/eruda.js"></script>
<script>eruda.init();</script>
@endsection
2、通过 npm 安装: npm install eruda --save
3、在页面中加载脚本:
@section('在页面中加载脚本:')
<script src="node_modules/eruda/eruda.js"></script>
<script>eruda.init();</script>
@endsection
下载地址:https://github.com/liriliri/eruda
核心入口模块
kk入口模块,整个库的核心入口模块,定义的库的命名空间kk(以及别名 Easymi,为兼容旧有项目),并暴露给全局使用。
提供了 kk.ready
, kk.noConflict
两个核心方法。
kk.ready(fn)
KK JS能力, 如果浏览器的DOM一样, 需要一个加载和准备的时间, KK JS能力需要在客户端能力组件(native)初始化好之后才能调用, 如果在 native 初始化之前调用能力, 能力会调用失败(实际效果是调用能力进入失败回调, 或者调用能力无响应. 通常在打开应用后立即调用能力容易出现该问题)
将函数添加到 native 初始化后的回调函数队列,可以多次调用。
若调用 ready
时,native 已完成初始化,则立即执行传入的函数。
fn(args)
类型: function
接收一个对象args
作为参数, 这个对象 args
描述了应用启动时的相关信息。
args.netState
类型: number
网络状态:0
:离线,1
:在线
args.startType
类型:number
应用的启动类型:
1
:用户请求使用应用2
:被推送消息拉起3
:被其他应用拉起
args.callArgs
类型 object
调用参数,startType
等于2
时,为推送消息的数据;等于 3
时,为调用参数(第三方应用穿入的参数)。
args.tokenReady
类型 boolean
表示是否已经取到了SSO Token,true
为取到了
@section('监听ready事件示例代码')
//监听ready事件
kk.ready(function( args ){
/*args值示例
{
startType:'1', // 应用启动类型: 是被其他应用拉起, 还是从工作台启动等等
netState:'0',
callArgs:{} // 应用启动时从外部传入的参数
tokenReady: true // 是否已经取到了SSO token
}
*/
// 可以在此处调用能力
kk.app.getBadge(function(res) {
alert('badge num is ' + res.num)
})
});
@endsection
kk.noConflict()
解决命名冲突,将全局命名空间下的 kk
改回 加载KK SDK
之前的值. 如果在加载 KK SDK
之前已经存在一个名字为 kk
的变量,执行 kk.noConflict()
后会返回JS SDK能力对象,变量kk
将恢复为加载KK SDK
之前的值。
@section('解决命名冲突示例代码')
// 假设 kk 加载之前已经存在一个 kk 变量
var kk = {
name:'kk'
};
// 加载KK后,修改kk的命名,将 kk 值改为加载JS SDK之前的值
var newkk = kk.noConflict();
newkk.ready( function(){
//使用newkk来调用kk的API
});
console.log( kk.name ); //=> 'kk'
@endsection
kk.isKK()
判断当前Web应用的运行环境是否为移动KK客户端,若为kk移动客户端,则返回 true
。该能力通过检测浏览器的userAgent
中是否有 kkPlus
来判断。
@section('判断运行环境是否为KK')
if( kk.isKK() ) {
alert('Welcome kk user!');
}
@endsection
kk.defy(fn, [[args1], ...[, argsN])
将KK的能力函数 promise 化, 可以使用链式调用的方式传递能力的回调函数
fn
类型: function|string
, 必填
- function: KK能力函数(如
kk.media.getPicture
), - string: 能力名称(如
"media.getPicture"
,"app.getNetState"
)
argsN
类型:any
能力函数的参数中除了回调函数(包括成功回调和失败回调)的其他参数, 可以有多个
- 如果调用的能力一定要传参数,则
argsN
一定要传 - 如果调用的能力参数是可选的,则
args
也是可选的;
返回值
类型: object
调用该函数后返回一个promise对象, 支持以下promise写法:
then(done, fail)
, 可接收能力的成功回调和失败回调done(done)
, 可接收能力的成功回调fail(fail)
, 可接收能力的失败回调catch(fail)
, 同fail(fail)
finally(fn)
, 不论能力执行成功或者失败,均会执行回调函数 fnalways()
, 同finally(fn)
返回的promise 对象的的回调函数接收的参数与被promise化的能力是一致的。
成功回调写在then函数第一个参数或者done函数里面,失败回调写在then函数第二次参数或者fail函数或者catch函数里面,其它函数用法请查看promise的用法
@section('带参数的,有成功回调,失败回调的')
//调用获取图片能力
kk.defy(kk.media.getPicture, {
sourceType: 'album'
}).then(function(res){
// 成功回调
/*
{
imageURI: "sdcard://easymi/1496399648439.png",
imagePath: "kkapp://fil.o-1207-o.kk/storage/sdcard1/easymi/1496399648439.png",
imageTime: Fri Jun 02 2017 18:34:07 GMT+0800 (CST),
imageFileOSPath: "kkapp://fil.o-1207-o.kk/storage/sdcard1/easymi/1496399648439.png",
imageTimeString: "20170602183407"
}
*/
console.log(res);
}).catch(function (code, msg) {
console.log('获取照片失败,错误代码是' + code + '错误信息是' + msg) ;
}).finally(function () {
console.log('能力执行完成')
})
//等同于 =>
kk.defy('media.getPicture', {
sourceType: 'album'
}).then(function(res){
// 成功回调
console.log(res);
}).catch(function (code, msg) {
console.log('获取照片失败,错误代码是' + code + '错误信息是' + msg) ;
})
@endsection
@section('无参数,只有成功回调的')
// 获取当前角标
kk.defy(kk.app.getBadge).then(function(res) {
// 成功回调
/*
Object {num: "0"}
*/
console.log(res);
})
@endsection
@section('无参数,只有失败回调的')
// 返回上一页
kk.defy(kk.history.back).catch(function() {
console.log('当前页不能做返回操作');
})
@endsection
@section('无参数,无成功和失败回调的')
// 获取当前网络状态
kk.defy('app.getNetState').then(function(res) {
/*
Object {netState: 0}
*/
console.log(res);
})
@endsection
应用配置模块
kk.config
获取或设置应用配置。目前仅支持应用的日志配置。
在KK中,如果有应用使用 console.log
、 console.debug
、 console.error
、 console.warn
打印日志,日志不仅会在浏览器调试工具(比如 Chrome的 DevTools)中看到,还会输出到日志文件中,可在手机磁盘上查看到。
支持的配置项
debug
类型: boolean
, 默认为 true
是否调用能力打印日志(使用console.debug
打印日志),日志会输出到日志文件中。该选项仅会打印能力调用的日志: 使用什么参数调用了什么能力,能力是否调用成功(成功回调接收的参数不会打印), 是否失败(失败信息会打印出来)。
detailLog
类型:boolean
, 默认为 false
是否在日志中打印能力调用成功回调接收的所有参数, 只有 debug
为 true
是,detailLog
的设置才有效。能力调用的成功回调参数可能会带有敏感信息(比如 kk.proxy.request 的成功回调接收的参数则是后台接口返回的数据),建议仅在开发阶段开启该选项,方便调试能力的详细调用情况。
日志文件在手机上的位置
在 KK管理台->应用管理->移动端应用
上添加手机移动web应用之后,会得到一个应用ID,在手机上日志文件的名称即以该ID命名。
Android和iOS的日志在手机上路径是不一样的。
Android日志文件位置
[Andorid内部存储空间]/Andorid/data/com.landray.kkplus/files/log/applog/
目录下以 应用ID命名(无文件后缀)的文件,该文件为纯文本文件,可用任何能打开纯文本文件的软件查看。路径中的com.landray.kkplus
是客户端的包名,不同企业定制的客户端使用的包名可能有所不同,需与KK产品部出包人员确认Android客户端的包名
。
iOS日志文件位置
查看iOS的日志必须借助iTunes。在电脑上安装iTunes后,使用数据线连接iOS设备,在iTunes中点击已连接的iOS设备,管理其中的应用,在 文件共享
下找到 KK 5.0
(企业定制的客户端则会是企业自定义的名称) 并选中它,在右侧 KK 5.0的文稿
列表中即可找到 以应用ID命名(文件后缀为 .log
)的文件,该文件为纯文本文件,将其拖拽至电脑上,即可使用文本编辑器查看。
获取应用的配置 kk.config([key])
获取应用的配置。key
为 string
即配置项键名。如果不传入 key
, 则返回一个对象,包含所有配置项。若传入 key
则返回该 key 对应的值。
@section('设置和获取应用配置:不传参数')
// 1.不传参数:返回包含所有配置的对象
var appConfig = kk.config();
console.log(JSON.stringify( appConfig ) );
//=>'{"debug": true, "detailLog": false}'
@endsection
@section('设置和获取应用配置:传入一个配置键名字符串')
// 2.传入一个配置键名字符串:返回键名对应的值
var appConfig = kk.config( 'detailLog' );
console.log( appConfig );
//=>false
@endsection
设置应用的配置
可以通过 kk.config(options)
设置多个配置项的值(options
为对象). 如果options中的属性名在配置项中存在,则修改 options 中的值,完成后返回全部配置项
也可以通过 kk.config(key, value)
设置单个配置项的值。将配置项 key 的值设置为value,并返回value
@section('设置和获取应用配置:传入两个参数(key,value)')
// 3.传入两个参数(key,value):返回设置的值
var appConfig = kk.config( 'detailLog', true );
console.log(appConfig);
//=>true
@endsection
@section('设置和获取应用配置:传入一个对象')
// 4.传入一个对象:返回包含所有配置的对象
var appConfig = kk.config({
debug: false
});
console.log( JSON.stringify( appConfig ) );
//=>'{"debug": false, "detailLog": false}'
@endsection
应用模块
app模块,提供了控制app的基础能力,如应用退出、拉起引用、监听应用事件、应用徽章控制等等
kk.app.exit()
退出Web应用:直接关闭Webview窗口,该能力无返回值。
@section('退出应用示例代码')
//退出应用
kk.app.exit();
@endsection
kk.app.isOfflineApp()
判断当前应用是否为混合应用, 若为混合应用则返回 true
,否则返回 false
@section('判断当前应用是否为混合应用')
var flag = kk.app.isOfflineApp();
if (flag) {
console.log('当前应用为混合应用');
} else {
console.log('当前应用不是混合应用');
}
@endsection
kk.app.callApp
调用客户端内置的其他Web应用。
该能力有两种调用方式:
- kk.app.callApp(appInfo, [done], [fail])
- kk.app.callApp(appInfo, args, [done], [fail])
appInfo
类型:object
或 string
被调用的Web应用的应用信息。
appInfo 为对象时
可携带下述信息:
appInfo.url
: string类型, 应用的启动URL,即被拉起应用的访问地址(仅支持http及https协议)appInfo.code
: string类型, 应用代码,可在KK管理台上查看(在KK管理台增加移动Web应用时填入的应用代码)。若要启动混合应用,则只能通过应用代码打开
以上信息可二选一,亦可都提供:
- 若只提供
appInfo.code
, 客户端则会在新窗口打开该应用代码的 web 应用 - 若只提供了
appInfo.url
, 客户端则会在新窗口中打开该URL - 若二者均提供了,客户端则会在新窗口打开
appInfo.url
指定的URL,并使用appInfo.code
对应应用参数(应用的参数主要影响代理模块的能力,使用该模块的能力需要在KK管理台上进行相应配置). 所以打开应用时,appInfo.code
与appInfo.url
应当相对应,否则可能导致代理相关的能力异常(请求地址错误,上传下载地址错误)。
appInfo 为字符串时
若 appInfo
为URL,则相当于上述结构中的 appInfo.url
, 否则当作 appInfo.code
处理。
appInfo.code
(应用代码) 可在 KK管理台->应用管理->移动端应用->移动混合应用管理
上找到该手机移动web应用,就会得到它的 应用代码
args
类型: any
(null, number, string, boolean, array, object)
在第一种调用方式下不填,在第二种调用方式下必填。传递给被拉起应用的参数,被拉起应用可以在其应用内部的 kk.ready的回调函数中的 args.callArgs
拿到该参数并进行相应处理。
done()
类型: function
,可选
调用成功后即会执行,该函数不接受参数。
fail(code, msg)
类型: function
,可选
调用失败后即会执行,该函数不接受参数。code
类型为number
, msg
为错误代码
使用应用代码拉起应用示例
@section('使用应用代码拉起应用')
// 拉起混合应用 日程管理
// KK-SCHEDULE 为 KK 日程管理 应用的应用代码
kk.app.callApp( 'KK-SCHEDULE', function(){
// 拉起后,本应用退出。
kk.app.exit();
}, function( code, msg ){
console.log('kk.app.callApp 错误代码:' + code + ' , 错误信息:' + msg );
});
@endsection
@section('使用应用代码拉起应用, 并传入相关参数')
// 拉起混合应用 日程管理
// KK-SCHEDULE 为 KK 日程管理 应用的应用代码,并传入给日程管理应用传入参数 date
kk.app.callApp({
code: 'KK-SCHEDULE'
}, {
date: '2017-2-28'
}, function(){
// 拉起后,本应用退出。
kk.app.exit();
}, function( code, msg ){
console.log('kk.app.callApp 错误代码:' + code + ' , 错误信息:' + msg );
});
@endsection
使用应用的访问地址拉起应用
@section('拉起在线应用示例代码')
// 打开 KK JS SDK的官网
kk.app.callApp('http://kk5.landray.com.cn:6789/jssdk');
@endsection
@section('拉起在线应用示例代码')
// 打开 KK JS SDK的官网
kk.app.callApp({
url: 'http://kk5.landray.com.cn:6789/jssdk'
}, function(){
console.log('应用拉起成功')
}, function( code, msg ){
console.log('kk.app.callApp 错误代码:' + code + ' , 错误信息:' + msg );
});
@endsection
应用代码及访问地址均提供
@section('拉起应用示例代码')
// 打开 KK JS SDK的官网
kk.app.callApp({
code: 'KK-SCHEDULE',
url: 'http://ekp.landray.com.cn/sys/person/home.do?mod=timemanage'
});
@endsection
kk.app.callNativeApp(options, [done], [fail])
拉起原生应用,启动第三方native应用
options
类型: object
调用应用的参数,iOS和Android的参数不一致,详见options
options(iOS)
options(iOS).url
类型: string
Native应用注册处理的url
URL及URL上携带的参数需被拉起的 iOS 客户端开发商提供。
options(Android)
以下参数均可选,具体传递什么参数,需被拉起的android客户端开发商提供。
options(Andrid).url
类型: string
Intent Data url
options(Andrid).type
类型: string
Intent MimeType
options(Andrid).action
类型: string
Intent Action
options(Andrid).category
类型: string
Intent category,暂不支持多个
options(Andrid).package
类型: string
Intent package
options(Andrid).class
类型: string
Intent class
options(Andrid).otherParam
类型: object
拉起应用的额外参数,作为extra放到启动Intent中。
注意 otherParam 中的键值对中的键即为 extra 的 name,value 可以是:
- 字符串
- html字符串,因为html也是字符串,所以传递html时候需做特殊处理: 字符串前应追加 char code 为 128 的控制字符, JS SDK会自动处理。假设
value = '<h1>标题</h1>'
, 则应变为value = String.fromCharCode(128) + value
. - URL字符串,因为URL也是字符串,所以传递URL时候需做特殊处理: 字符串前应追加 char code 为 129 的控制字符, JS SDK会自动处理。假设
value = 'http://www.landray.com'
, 则应变为value = String.fromCharCode(129) + value
. - 数字(整型及浮点型)
- 字符串数组(数组成员只能是字符串)
- 整型数组(数组成员只能是整数)
- 浮点型数组(数组成员只能是浮点数)
其他类型均不支持,由于 otherParam 是交由客户端处理(客户端使用java语言开发,强制类型),若参数类型错误均会导致调用能力失败。
done()
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
错误代码 | 错误信息 |
---|---|
9 | 没有对应的Native应用 |
@section('使用浏览器打开链接 Android/iOS示例')
// 使用浏览器打开链接:Android/iOS示例
kk.app.callNativeApp({
action:"android.intent.action.VIEW",
url:"https://news.ycombinator.com/"
}, function(){
console.log('拉起原生应用成功');
}, function(code, msg){
console.log('callNativeApp 错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
@section('拉起原生发短信应用 Android')
// 拉起原生发短信应用:Android/iOS示例
kk.app.callNativeApp({
action:"android.intent.action.SENDTO",
category:"android.intent.category.DEFAULT",
url:"smsto:13823794432",
otherParam: {
sms_body:"短信内容"
}
}, function(){
console.log('拉起原生应用成功');
}, function(code, msg){
console.log('callNativeApp 错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
@section('拉起微信扫描二维码 iOS示例')
// 拉起微信扫描二维码: iOS示例
kk.app.callNativeApp({
url: 'weixin://dl/scan'//Native应用注册处理的url
}, function(){
console.log('拉起原生应用成功');
}, function(code ,msg){
console.log('callNativeApp 错误代码:' + code + ' ,错误信息:' + msg );
})
@endsection
kk.app.on(eventName, eventCB)
添加应用事件监听
eventName
类型: string
事件名称,详见可用的eventName如下表
事件名称 | 描述 |
---|---|
pause | 当页签被切换到后台运行时(可能是打开了其他应用或者按Home返回桌面)时触发,应用在callApp时触发 |
resume | 当页签被切换到前台运行时触发,应用在callApp时触发,回调接收参数 |
exit | 页签在退出登录时触发,应用在关闭应用时触发,没有回调参数 |
netStateChange | 客户端容器的网络状态变动时,回调接收参数 |
back | 后退键事件,没有回调参数,可在事件回调中 return false 阻止返回行为,若有事件回调函数未及时 return false 操作,则仍会执行默认行为。 |
phoneStateChange | 电话状态改变事件(Android Only),回调接收参数 |
appCallBackData | 监听被调用应用返回的数据,回调参数为被调用应用通过app.setAppCallBackData方法设置的数据 |
sSOTokenReady | 已经从服务器上拿到SSO Token,无回调参数 |
fontSizeChange | 当KK客户端的字体变化时触发 |
appsChange | 应用数据发生变化,此时需要 kk.workspace.getUserApps 来刷新应用信息 |
appChange | 单个应用信息发生变化,事件回调接受的参数为发生变化的应用的信息 |
adsChange | 广告信息发生变化,此时需要 kk.workspace.getAds 来刷新广告信息 |
eventCB
类型: function
事件回调,eventCB(args)的 args
参数为一个对象,不同的事件返回的args不同,详见各事件的args
当事件为resume时,事件回调args:
args.callArgs
类型: object
调用参数,startType等2时,为推送消息的数据,等于3时,为调用参数
当事件为netStateChange时,事件回调args:
args.netState
类型: number
网络状态,0:离线,1:在线
当事件为phoneStateChange时(仅在Android 下会触发),事件回调args:
args.phoneState
类型: number
电话状态,1:RING(响铃),2:OFFHOOK(摘机),3:IDLE(空闲)
args.param
类型: number
phoneState=1时,表示来电号码,其他无意义
当事件为appChange时,事件回调args:
args.xxx
类型:any
该应用的最新信息
当事件为fontSizeChange时,事件回调args:
args.fontSize
类型:string
, 值有以下
1
: 标准字体2
: 中字号3
: 大字号
@section('监听应用事务')
//监听应用事务
kk.app.on('resume', function( args ){
console.log(JSON.stringify(args));
});
@endsection
@section('监听网络变化')
//监听网络变化
kk.app.on('netStateChange', function( res ){
if( res.netState == 1 ){
console.log('网络重新连接上');
//更改网络标志为在线
}else{
console.log('网络断开' );
//更改网络标志为离线
}
});
@endsection
@section('监听被调用应用返回的数据')
// 监听被调用应用返回的数据
kk.app.on('appCallBackData', function(args) {
console.log('数据返回' + args)
});
@endsection
@section('已经从服务器上拿到SSO Token')
// 已经从服务器上拿到SSO Token
kk.app.on('sSOTokenReady', function() {
// 无回调参数
});
@endsection
@section('应用数据发生变化')
// 应用数据发生变化
kk.app.on('appsChange', function() {
// 无回调参数
// 此时需要调用 kk.workspace.getUserApps 来刷新应用信息
});
@endsection
@section('监听单个应用变化')
// 监听单个应用变化
kk.app.on('appChange', function( res ) {
// res示例
//
});
@endsection
@section('监听广告信息变化')
// 监听广告信息变化
kk.app.on('adsChange', function(){
// 无回调参数
// 此时需要调用kk.workspace.getAds获取最新广告信息
});
@endsection
@section('监听客户端字体变化')
// 监听客户端字体变化
kk.app.on('fontSizeChange', function(res){
// res示例
console.log('数据返回' + res)
});
@endsection
kk.app.setAppCallBackData(options, [done], [fail])
被调用应用返回数据给发起调用的应用
options
类型: any
返回参数,会通过appCallBackData事件传递给发起调用的应用
done()
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
@section('被调用应用返回数据给发起调用的应用')
//被调用应用返回数据给发起调用的应用
kk.app.setAppCallBackData({
data: 'test'
}, function () {
console.log('返回数据成功')
}, function (code, msg) {
console.log('setAppCallBackData失败 错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
kk.app.setBadge(options)
设置应用徽章,在应用的入口图标的右上角显示一个数字。
options
类型: object
包含徽章值的对象,详见options
options.num
类型: number
要设置的徽章值,设置为0表示去除徽章
@section('设置徽章示例代码')
//设置徽章为"3"
kk.app.setBadge( {num: 3} );
@endsection
kk.app.getBadge(done)
获取应用徽章
done(args)
类型: function
成功回调,接收键名为num的对象作为参数,详见args
args:
类型: object
回调对象
args.num
类型: number
应用徽章的值
@section('获取徽章示例代码')
//获取应用徽章
kk.app.getBadge( function( res ){
console.log( 'getBadge value: ' + res.num );
} );
@endsection
kk.app.getNetState()
返回网络状态 state
对象
state.netState
类型: number
网络状态值,1:在线,0:离线
@section('获取网络状态示例代码')
//获取网络状态
var state = kk.app.getNetState();
if(state.netState == 1){
console.log('网络在线');
}else{
console.log('网络离线');
}
@endsection
kk.app.getDeviceInfo()
获取设备信息,如操作系统、设备类型、分辨率等。返回 deviceInfo
对象
deviceInfo.os
类型: string
操作系统,iOS/Android/windows(模拟器)
deviceInfo.type
类型: string
设备类型,phone/pad
deviceInfo.pixel
类型: string
分辨率,形如:1024x767(值较大的在前)
deviceInfo.largerPixel
类型: number
pixel属性中较大的一边
deviceInfo.smallerPixel
类型: number
pixel属性中的较小的一边
deviceInfo.deviceID
类型: string
设备物理唯一ID
@section('获取设备信息示例代码')
//获取设备信息
var deviceInfo = kk.app.getDeviceInfo();
/*deviceInfo 值示例
{
os:'Andriod',//设备操作系统
osModel:‘Redmi Note 4X’, //
osVersion:"7.0", //
manufatory:"Xiaomi", //
type:'phone', //设备类型
largerPixel:640,//分辨率
smallerPixel:360,//分辨率中大的一边
pixel:'640x360' ,//分辨率中小的一边
deviceID:'58:1f:28:af:14:5d'//设备物理唯一ID
}
*/
@endsection
kk.app.getUserInfo()
获取用户信息,即登陆客户端的用户的账号信息,返回 userInfo
对象。
userInfo.userID
类型: string
用户id
userInfo.loginName
类型: string
用户登录名
userInfo.userName
类型: string
用户显示名称
@section('获取用户信息示例代码')
//获取用户信息
var userInfo = kk.app.getUserInfo();
/*userInfo 值示例
{
userID:'139',//用户id
userName:'Johnson Wu',//用户登录名
loginName:'wugh'//用户显示名称
}
*/
@endsection
kk.app.getAppInfo()
获取应用信息,返回 appInfo
对象
appInfo.appID
类型: string
应用ID
appInfo.name
类型: string
应用名称
appInfo.code
类型: string
应用代码
appInfo.serverAccessURL
类型:string
应用业务代理地址,目前仅在混合应用有效(需要在KK管理台->应用管理->混合应用
找到当前使用的混合应用设置业务代理地址
,设置成功后此项才有值)
@section('获取应用信息示例代码')
//获取应用信息
var appInfo = kk.app.getAppInfo();
/*appInfo 值示例:
{
appID:'1091',//应用ID
name:'测试''//应用名称
code: 'mail 2.0', //应用代码
serverAccessURL: 'http://kk5.xx.com/xxx' // 应用业务代理地址
}
*/
@endsection
kk.app.getClientInfo()
获取客户端信息,返回 clientInfo
对象
clientInfo.name
类型: string
客户端名称
clientInfo.version
类型: string
客户端的版本号(对外发布版本号, 包含版本号及发布时间等信息)
clientInfo.semver
类型: string
当前客户端的语义化版本号
clientInfo.innerVersion
类型:string
客户内部版本号(编译版本)
clientInfo.corpName
类型: string
企业名称
clientInfo.corpID
类型:string
企业ID
clientInfo.lang
类型:string
客户端语言。中文时该值为 zh-CN
, 英文时该值为 en-US
clientInfo.webServer
类型:string
KK Web Server服务器地址,格式如 http://kk5.landray.com.cn
。 KK Web Server 提供了KK相关的一些接口服务。
clientInfo.fontSize
类型:string
字体大小,值有以下:
1
: 标准字体2
: 中字号3
: 大字号
@section('获取客户端信息示例代码')
//获取客户端信息
var clientInfo = kk.app.getClientInfo();
/*clientInfo值示例
{
name:'kk', //企业客户端名称
version:'v5.2.6.R.20170420,3',// 客户端版本号(对外发布版本号, 包含版本号及发布时间等信息)
semver:'5.2.6',// 客户端的语义化版本
corpName: '蓝凌科技', // 企业名称
corpID:'1' // 企业ID
innerVersion: 'v5.2.6.R.20170420,3' // 内部版本号(编译版本)
lang: "zh-CN" //客户端语言
webServer: "http://kk5.landray.com.cn:8000" // 服务器地址
fontSize: "1" // 标准字体
}
*/
@endsection
kk.app.getClientConfig(configName, done, [fail])
获取客户端配置
configName
类型: string
配置项名称,具体定义详见《配置项定义_客户端.xlsx》
done
类型: function
成功回调,将结果直接返回在回调参数中
fail
类型:function
,可选
失败回调
// 具体配置项名称请联系相关人员获取
@section('获取kk服务器的地址')
//获取kk服务器的地址
kk.app.getClientConfig('kk_config_webserver_http_url', function (url) {
console.log('服务器地址为: ' + url);
}, function (code, msg) {
console.log('获取失败, 错误码: ' + code + ', 错误信息: ' + msg);
});
@endsection
kk.app.getAppIcon([appCode])
获取应用图标,返回 selfIconUrl
字符串。
appCode
类型: string
,可选
应用代码
@section('获取自身应用图标示例代码')
//获取应用图标url
//可获取应用代码相应的应用图标,若不传应用代码则为获取自身应用图标
var selfIconUrl = kk.app.getAppIcon();
console.log('自身图标url: ' + selfIconUrl);
@endsection
@section('获取应用图标示例代码')
//获取应用图标url
//可获取应用代码相应的应用图标,若不传应用代码则为获取自身应用图标
var appCode = 'ID333';
var iconUrl = kk.app.getAppIcon(appCode);
console.log('图标url: ' + iconUrl);
@endsection
kk.app.setCookie(options, [done], [fail])
给某个网址设置cookie,一般用于离线页面跳转至在线页面时设置用户身份验证信息
options
类型:object
包含url和cookie属性的对象
options.url
类型: string
cookie生效的域
options.cookie
类型: string
cookie字符串
done
类型: function
,可选
成功回调,没有回调参数
fail(code,msg)
类型: function
,可选
失败回调
错误代码 | 错误信息 |
---|---|
999 | cookie生效的域为空 |
@section('设置cookie示例代码')
//设置cookie
kk.app.setCookie({
url: "http://192.168.1.187:7080/",
cookie: "JSESSIONID=DD24DC2A1174E096DD9FD912C98D775A; Path=/; HttpOnly"
},function(){
console.log('setCookie 成功');
});
@endsection
kk.app.getCookie(options, done, [fail])
获取某个网址中的cookie
options
类型: object
包含url属性的对象
options.url
类型: string
要获取cookie的url
done(args)
类型: function
成功回调,接收有cookie字符串属性的对象作为参数
args
类型: object
args.cookie
类型: string
获取到的cookie字符串
fail(code,msg)
类型: function
,可选
失败回调
错误代码 | 错误信息 |
---|---|
999 | 参数url为空 |
@section('获取cookie示例代码')
//获取cookie
kk.app.getCookie({
url: "http://192.168.1.187:7080/"
},function( res ){
console.log('getCookie coolieStr: ' + res.cookie );
//JSESSIONID=DD24DC2A1174E096DD9FD912C98D775A
});
@endsection
kk.app.captureScreen([options,] done, [fail])
应用截屏
options
类型: string
,可选,默认参数见下
配置参数,不传则全部使用默认参数
options.targetWidth
类型: number
,默认100px
输出图片宽
options.targetHeight
类型:number
,默认100px
输出图片高,需和targetHeight配合使用
options.encodingType
类型: string
,默认png格式
输出格式,可选值:jpeg/png
options.quality
类型: number
,默认为50
输出图片质量,范围:0-100,仅encodingType
为 jpeg
时有效。数值越大,图片的质量越好,文件所占的存储空间越大。
options.destinationType
类型: string
,默认为data
输出形式,可选值:file/data
options.savePath
类型: number
保存路径,destinationType=file时有效,不指定时,以随机文件名保存到'sdcard://easymi/'文件夹
done(args)
类型: function
成功回调,返回一个对象作为参数,详见args
args.imageURI
类型:string
截屏后的文件保存路径(当destinationType为file时返回)
args.imageFileOSPath
类型:string
截屏后的文件的操作系统路径(当destinationType为file时返回)
args.imageData
类型: string
图片的base64编码(当destinationType为data时返回),可用作<img>
标签的src属性
fail(code,msg)
类型: function
,可选
失败回调
错误代码 | 错误信息 |
---|---|
-2 | 参数错误 |
@section('截屏:以文件形式输出')
//截屏:以文件形式输出
kk.app.captureScreen({
encodingType: 'jpeg',
quality: 80,
destinationType: 'file',
savePath: 'sdcard://capturescreen/' + new Date().getTime() + '.jpeg'
}, function( res ){
/*res值示例
{
imageURI:'sdcard://capturescreen/1488268713915.jpeg',
imageFileOSPath:'kkapp://fil.o-1091-o.kk/store/sdcard1/capturescreen/1488268713915.jpeg'
}
*/
//res.imageFileOSPath,可以作为<img>标签的src使用
//res.imageURI,可以作为kk.media.save2album()的filepath,将相片保存到相册
console.log('图片的保存路径:' + res.imageURI + ';图片的操作系统路径:' + res.imageFileOSPath);
});
@endsection
@section('截屏:以base64编码形式输出')
//截屏:以base64编码形式输出
kk.app.captureScreen({
encodingType: 'jpeg',
quality: 80,
destinationType: 'data',
savePath: 'sdcard://capturescreen/' + new Date().getTime() + '.jpeg'
}, function( res ){
console.log('图片的base编码:' + res.imageData);
//res.imageData 可以作为<img>标签的src使用
});
@endsection
kk.app.setScreenMode([mode])
设置屏幕显示模式, 默认值是 normal
(普通模式),该能力无返回值
mode
类型: string
,可选
屏幕显示模式
可选值有:
normal
普通模式, 有kk导航栏,有系统状态栏。enhanced
增强模式,隐藏kk导航栏,系统状态栏正常显示。fullscreen
全屏模式,隐藏kk导航栏,但有系统状态栏,而且系统状态栏背景透明,不占用页面高度。
@section('普通模式')
// 普通模式
kk.app.setScreenMode('normal');
@endsection
@section('增强模式')
//增强模式: 隐藏原生导航栏
kk.app.setScreenMode('enhanced');
@endsection
@section('全屏模式')
//全屏模式: 页面高度为手机屏幕的高度,隐藏原生导航栏,操作系统状态栏背景色变为透明覆盖在网页之上
kk.app.setScreenMode('fullscreen');
@endsection
kk.app.showTitleBar()
显示应用容器(webview)的标题栏/导航栏,该能力无返回值。
@section('显示标题栏示例代码')
//显示标题栏
kk.app.showTitleBar();
@endsection
kk.app.hideTitleBar()
隐藏应用容器(webview)的标题栏/导航栏,该能力无返回值。
@section('隐藏标题栏示例代码')
//隐藏标题栏
kk.app.hideTitleBar();
@endsection
kk.app.setTitle(title)
设置应用容器(webview)的标题栏/导航栏的标题,该能力无返回值。
title
类型: string
,可选
标题文字
@section('修改标题栏标题示例代码')
// 修改标题栏标题
kk.app.setTitle('个人信息');
@endsection
kk.app.showNativePage(pageName)
打开客户端原生页面
pageName
类型: string
页面的名称,目前暂时只支持设置页面settings
@section('打开客户端原生页面')
// 打开设置页面
kk.app.showNativePage('settings');
@endsection
kk.app.enterMeeting(options, [done], [fail])
进入一个视频会议
options
类型: object
入参
options.roomId
类型: string
, 必填
会议ID
done
类型: function
调用成功后即会执行,该函数不接受参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
会议不存在 |
-2 |
会议未开始 |
-3 |
会议已经结束 |
-8 |
网络异常 |
其它情况返回相关视频会议厂商的错误码 |
@section('进入一个视频会议')
// 进入一个视频会议
kk.app.enterMeeting({
roomId:"会议ID"
}, function () {
//成功回调
}, function (code, msg) {
//失败回调
//-1:会议不存在
//-2:会议未开始
//-3:会议已经结束
//-8:网络异常
//其它情况返回相关视频会议厂商的错误码
console.log('错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.app.launchWXMicroApp(options, [done], [fail])
启动微信小程序
options
类型: object
入参
options.userName
类型: string
, 必填
在微信上接入的小程序的原始id
options.path
类型: string
, 可选
拉起小程序页面的可带参路径。可选参数。不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
options.miniprogramType
类型: number
, 可选
小程序版本类型。1开发版,2体验版,3正式版。可选参数,默认为1。
done
类型: function
调用成功后即会执行,该函数不接受参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
启动失败 |
@section('启动微信小程序')
// 启动微信小程序
kk.app.launchWXMicroApp({
userName: "11",
path: '?foo=bar',
miniprogramType: 3
}, function () {
//成功回调
}, function (code, msg) {
//失败回调
//-1: 启动失败
console.log('错误代码是' + code + ',错误信息是' + msg);
});
@endsection
工作台
为应用实现原生工作台页签的类似功能,提供业务逻辑上的支持
以下能力仅支持在页签上面使用
kk.workspace.init()
工作台初始化, 使用工作台模块能力时, 必须先调用该函数
@section('工作台初始化')
//工作台初始化
kk.workspace.init()
@endsection
kk.workspace.getUserApps(done, [fail])
获取用户在工作台上的常用APP
done(args)
类型: function
成功回调,回调参数是由 AppInfo 组成的数组
args.isForce
类型: boolean
是否是强制应用
args.appCode
类型: string
应用代码
args.appID
类型: string
应用唯一ID
args.name
类型: string
应用名称
args.type
类型: string
应用类型,有以下类型:
- hybird(混合应用)
- native(原生应用)
- hidden(隐式应用)
- online(在线应用)
args.status
类型: string
应用状态,有以下状态:
- notdownload(未下载)
- normal(正常)
- hasnew(有新版本)
- notinstall(下载未安装)
args.badge
类型: number
应用角标数
args.iconUrl
类型: string
应用图标地址,可作为图片src地址
args.priority
类型: nubmer
排序号,值越大排越前
args.category
类型: string
应用分类名称
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
@section('获取工作台常用APP')
//获取工作台常用APP
kk.workspace.getUserApps(function (res) {
// res是一个数组对象,示例如下
// [{
// isForce: true, // 是否强制应用
// appID: '1127', // 应用唯一ID
// appCode: 'news', // 应用代码
// name: '公司新闻' // 应用名称
// type: 'online' // 应用类型
// status: 'normal' // 应用状态
// badge: 0 // 角标
// iconUrl: 'kkapp://appicon.o-xxx-o.kk/data/data/com.landray.kkplus/appdata/1106.png' // 应用图标地址
// priority: 2 // 排序号,值越大排越前
// category: "1" // 应用分类名称
// }]
}, function (code, msg) {
console.log('获取工作台常用APP失败,错误代码是' + code + ' , 错误信息:' + msg );
})
@endsection
kk.workspace.getUserAllApps(done, [fail])
获取用户在工作台上的常用APP
done(args)
类型: function
成功回调,回调参数是由 AppInfo 组成的数组
args.isForce
类型: boolean
是否是强制应用
args.appCode
类型: string
应用代码
args.appID
类型: string
应用唯一ID
args.name
类型: string
应用名称
args.type
类型: string
应用类型,有以下类型:
- hybird(混合应用)
- native(原生应用)
- hidden(隐式应用)
- online(在线应用)
args.status
类型: string
应用状态,有以下状态:
- notdownload(未下载)
- normal(正常)
- hasnew(有新版本)
- notinstall(下载未安装)
args.badge
类型: number
应用角标数
args.iconUrl
类型: string
应用图标地址,可作为图片src地址
args.priority
类型: nubmer
排序号,值越大排越前
args.category
类型: string
应用分类名称
args.category_priority
类型: number
分类排序号,值越大约靠前
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
@section('获取用户工作台上的全部应用')
// 获取用户工作台上的全部应用
kk.workspace.getUserAllApps(function (res) {
// res是一个数组对象,示例如下
// [{
// isForce: true, // 是否强制应用
// appID: '1127', // 应用唯一ID
// appCode: 'news', // 应用代码
// name: '公司新闻' // 应用名称
// type: 'online' // 应用类型
// status: 'normal' // 应用状态
// badge: 0 // 角标
// iconUrl: 'kkapp://appicon.o-xxx-o.kk/data/data/com.landray.kkplus/appdata/1106.png' // 应用图标地址
// priority: 2 // 排序号,值越大排越前
// category: "1" // 应用分类名称
// category_priority: 1 // 分类排序号,值越大约靠前
// }]
}, function (code, msg) {
console.log('获取用户工作台上的全部应用失败,错误代码是' + code + ' , 错误信息:' + msg );
})
@endsection
kk.workspace.launchApp(options, [done], [fail])
启动应用
options
类型:object
options.appID
类型:number
应用唯一ID
done
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
应用不存在 |
-2 |
应用未下载 |
-3 |
应用未安装 |
@section('启动应用')
//启动应用
kk.workspace.launchApp({
appID: 10922, // 应用ID
}, function () {
// 启动应用成功即进入成功回调
}, function (code, msg) {
console.log('启动应用失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.workspace.downloadApp(options, done, [fail])
下载应用
options
类型:object
options.appID
类型:number
应用唯一ID
done(args)
类型: function
成功回调,回调参数是包含下载进度的对象
args.progress
类型: number
下载进度, 0-100
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
应用不存在 |
-2 |
应用已下载 |
-3 |
应用下载失败 |
@section('下载应用')
//下载应用
kk.workspace.downloadApp({
appID: 10922, // 应用ID
}, function () {
// 下载应用成功即进入成功回调
}, function (code, msg) {
console.log('下载应用失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.workspace.installApp(options, done, [fail])
安装应用
options
类型:object
options.appID
类型:number
应用唯一ID
done
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
应用不存在 |
-2 |
应用已安装 |
@section('安装应用')
//安装应用
kk.workspace.installApp({
appID: 10922, // 应用ID
}, function () {
// 安装应用成功即进入成功回调
}, function (code, msg) {
console.log('安装应用失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.workspace.getAds(done, [fail])
获取工作台轮播广告
done(args)
类型: function
成功回调,接受 AdInfo 组成的数组作为参数
args.adID
类型: string
广告唯一ID
args.picUrl
类型: string
广告图片地址,可作为图片src地址
args.linkUrl
类型: string
广告链接地址
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
@section('获取工作台轮播广告')
//获取工作台轮播广告
kk.workspace.getAds(function (res) {
// res是一个数组对象,示例如下
// [{
// adID: 10, // 广告唯一ID
// picUrl: 'kkapp://workspacead.o-xxx-o.kk/storage/emulated/0/Android/data/com.landray.kkplus/files/download//2ad_pic.png', // 广告图片地址
// linkUrl: "http://www.163.com", // 广告链接地址
// }]
}, function (code, msg) {
console.log('获取工作台轮播广告失败,错误代码是' + code + ' ,错误信息:' + msg );
})
@endsection
原生通讯录模块
设备通讯录模块,提供了操作客户端设别系统自带通讯录的能力
ContactInfo 联系人信息结构
类型: object
联系人信息,无需指定id信息
ContactInfo.id
类型: string
一个全局的唯一标识,可通过 find
方法获取到
ContactInfo.name
类型: string
名字
ContactInfo.namePY
类型: string
名字拼音/音标
ContactInfo.cname
类型: string
姓氏
ContactInfo.cnamePY
类型: string
姓氏拼音
ContactInfo.company
类型: string
公司
ContactInfo.phones
类型: array
联系人的电话号码列表,多个值之间用逗号分隔。
当phones为多个值时,每个位置的含义如下:
位置 | 含义 |
---|---|
0 | 移动电话 |
1 | 住宅电话 |
2 | 工作电话 |
3 | 主要电话 |
4 | 住宅传真 |
5 | 工作传真 |
6 | 传呼 |
7 | 其他电话 |
ContactInfo.emails
类型: array
联系人的邮件地址列表,多个值之间用逗号分隔
当emails为多个值时,每个位置的含义如下:
位置 | 含义 |
---|---|
0 | 电子邮件 |
1 | 工作邮件 |
2 | 个人邮件 |
3 | 主要邮件 |
4及以后 | 其他邮件 |
ContactInfo.addresses
类型: array
联系人的地址列表,多个值之间用逗号分隔
当addresses为多个值时,每个位置的含义如下:
位置 | 含义 |
---|---|
0 | 主要地址 |
1及以后 | 其他地址 |
ContactInfo.firstLetter
类型: string
名字的首字母
ContactInfo.prefix
类型: string
前缀
ContactInfo.middleName
类型: string
中间名
ContactInfo.suffix
类型: string
后缀
ContactInfo.nickname
类型: string
昵称
ContactInfo.jobTitle
类型: string
职务
ContactInfo.department
类型: string
部门
ContactInfo.birthday
类型: string
生日
ContactInfo.notes
类型: string
备注
kk.contact.add(contactInfo, [done], [fail])
添加联系人
接收一个对象 contactInfo
作为参数, 这个对象描述了被添加联系人的相关信息,done
执行成功的回调, fail
执行失败的回调
contaceInfo
类型: object
联系人信息,无需指定id信息,详见上面 ContactInfo
done
类型: function
,可选
成功回调,没有回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 | 操作失败 |
@section('添加联系人示例代码')
//增加联系人
kk.contact.add({
'name':'Joyce',
'phones':'13499997777'
}, function(){
console.log('新增成功');
}, function(){
console.log('新增失败');
});
@endsection
不带任何回调函数
@section('添加联系人示例代码')
kk.contact.add({
'name':'John',
});
@endsection
kk.contact.remove(contactId, [done], [fail])
删除联系人
接收一个字符串 contactId
作为参数, 这个字符串为被删除联系人的Id,done
执行成功的回调,fail
执行失败的回调
contactId:
类型: string
联系人Id
done
类型: function
,可选
成功回调,没有回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 | 操作失败 |
@section('删除联系人示例代码')
//移除联系人
kk.contact.find({
'name':'Joyce.He',
'phone':'13499997777',
}, function( res ){
kk.contact.remove( res[0].id, function(){
console.log('删除成功');
}, function(){
console.log('删除失败');
});
}, function(){
console.log( '需要删除的联系人不存在' );
});
@endsection
kk.contact.update(contactInfo, [done], [fail])
修改联系人信息
接收一个对象 contactInfo
作为参数, 这个对象描述了被修改联系人的相关信息,done
执行成功的回调,fail
执行失败的回调
contactInfo
类型: object
联系人信息,参考contactInfo,id必填
done
类型: function
,可选
成功回调,没有回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 | 操作失败(id不存在) |
99 | id为空 |
@section('修改联系人信息示例代码')
//修改联系人信息
kk.contact.find({
'name':'Joyce.He',
'phone':'13499997777',
}, function( res ){
kk.contact.update({
id: res[0].id, // 必填
name: 'Joyce.He',
phones: '13499998888'
}, function(){
console.log('修改成功');
}, function(){
console.log('修改失败');
});
}, function(){
console.log( '需要删除的联系人不存在' );
});
@endsection
kk.contact.find(options, done, [fail])
查找联系人
接收一个对象 options
作为参数, 这个对象描述了查找条件,done
执行成功的回调,fail
执行失败的回调
options
类型: object
查找条件
options.name
类型: string
联系人姓名,可选
options.phone
类型: string
联系人手机号码,可选
done(contacts)
类型: function
成功回调,接收数组为参数,数组元素为联系人信息对象,每个对象的形式参考contactInfo
fail
类型: function
,可选
失败回调
@section('查找联系人示例代码')
//查找联系人
kk.contact.find({
name: 'Joyce.He',
phone: '13499997777'
}, function( contacts ){
// 如果通讯录有重复的记录,则会返回多条
for( var i=0; i<contacts.length; i++ ){
console.log('联系人姓名:' + contacts[i].name + ',联系人电话:' + contacts[i].phones);
}
}, function(code, msg){
console.log('查找失败,code:' + code + ',msg:' + msg);
});
@endsection
kk.contact.choose([options],done, [fail])
选择联系人
接收一个可选 options
对象,done
成功回调,fail
失败回调
options
类型: object
,可选
查找条件
options.mode
类型: number
,可选,默认值为 1
选择类型模式,默认为1
选择类型模式 | 含义 |
---|---|
1 | 选择人 |
2 | 选择电话号码 |
3 | 选择邮件地址 |
done(contacts)
类型:function
成功回调,接受contacts数组
contacts.id
类型: string
一个全局的唯一标识
contacts.name
类型: string
名字
contacts.mobile
类型: string|array
电话号码,当 mode
为2时,是字符串,其他情况下是数组,即多个电话号码
contacts.email
类型: string|array
邮箱地址,当 mode
为3时,是字符串,其他情况下是数组,即多个邮箱地址
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 用户取消了选择 |
-3 | kk无通讯录权限 |
-6 | 参数错误 |
@section('选择联系人示例代码')
//查找联系人
kk.contact.choose({
mode: 2
}, function( res ){
/*res值示例
[{
'id':'899',
'name':'移动',
'phones':'13800138000',
'emails':'yidong@qq.com'},
{
'id':'1554',
'name':'电信',
'phones':'10000',
'emails':'dianxin@qq.com'
}]
*/
}, function(code, msg){
console.log('查找失败,code:' + code + ',msg:' + msg);
});
@endsection
不带参数mode
@section('选择联系人示例代码')
kk.contact.choose( function( contacts ) {
/*contacts 值示例
[{
'id':'899',
'name':'移动',
'phones':'13800138000',
'emails':'yidong@qq.com'},
{
'id':'1554',
'name':'电信',
'phones':'10000',
'emails':'dianxin@qq.com'
}]
*/
});
@endsection
企业通讯录模块
门户通讯录模块 提供了访问门户(客户端)自身通讯录的能力
contactInfo
类型: object
联系人的信息
contactInfo.userID
类型: string
员工ID
contactInfo.loginName
类型: string
联系人登录名称
contactInfo.name
类型: string
联系人姓名
contactInfo.depart
类型: string
联系人直属部门名称
contactInfo.mobile
类型: string
手机号码
contactInfo.email
类型: string
邮箱地址
contactInfo.deptPath
类型: array
员工所在所有部门名称,由顶层部门到底层部门依次排列
contactInfo.jobTitle
类型: string
职位信息
contactInfo.signature
类型: string
用户个人签名
kk.econtact.choose([options], done, [fail])
企业通讯录里面选择联系人,接收一个对象 options
,这个对象描述要选择联系人的配置项, done
是成功回调函数, fail
是失败回调函数。
options
类型: object
,可选
传入配置项对象
options.initList
类型: array
初始选中的联系人ID集合,为数组,可选,数组内的每一项为字符串,字符串为联系人的userID,如例:
initList: ['332','178']
options.isSticky
类型: boolean
默认 false
,被选中的联系人是否被取消选中(可否编辑), true
为不可取消 false
为可以被编辑,可选 (ps:设置true时,输出的联系人并不包含initList数组里面的联系人)
options.stickyList(注意此参数目前暂时不处理)
类型: array
初始化联系人中不可被移除的联系人ID,isSticky
为 true
时该参数无效
options.maxCount
类型: number
默认是0
,最多可选择的人数(包含initList里面的人),0
表示不限制人数
options.isSelfSticky
类型: boolean
是否默认带上自己并且不可移除
done(contactInfo)
类型: function
成功回调,返回包含被选择的联系人信息对象的数组,联系人信息结构请见 顶部contactInfo 描述
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 用户取消了选择 |
基础用法
@section('选择企业通讯录人员示例代码')
//initList:联系人ID集合;
//isSticky:被选中的联系人是否被取消选中
var userID = kk.app.getUserInfo().userID;
kk.econtact.choose({
'initList': [userID],
'isSticky': false
}, function( selects ){
/*selects 值示例
[{
userID:'359',//联系人ID
name:'隔壁老王',//联系人姓名
depart:'应用组',//联系人直属部门名称
mobile:'13800138000',//联系人电话
loginName:'laowang',//联系人登录名称
email:'wyg@landray.com.cn',//联系人邮箱
deptPath:['深圳蓝凌-47','KK产品中心-47','应用组'],//联系人所有部门名称
jobTitle: '前端工程师', // 职位
signature: '123456' // 个性签名
}]
*/
}, function( code, msg){
console.log('选择联系人失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
不带参数
@section('选择企业通讯录人员示例代码')
kk.econtact.choose(function( selects ){
/*selects 值示例
[{
userID:'359',//联系人ID
name:'隔壁老王',//联系人姓名
depart:'应用组',//联系人直属部门名称
mobile:'13800138000',//联系人电话
loginName:'laowang',//联系人登录名称
email:'wyg@landray.com.cn',//联系人邮箱
deptPath:['深圳蓝凌-47','KK产品中心-47','应用组'],//联系人所有部门名称
jobTitle: '前端工程师', // 职位
signature: '123456' // 个性签名
}]
*/
}, function( code, msg){
console.log('选择联系人失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
kk.econtact.chooseGroupPerson(options, [done], [fail])
从指定的群组选人
options
类型: object
必填
传入配置项对象
options.groupID
类型: number
必填
群ID
options.stickyList
类型: array
可选
选中并且不能被移除的员工的ID
options.maxCount
类型: number
可选
默认是0
,最多可选择的人数(包含stickyList里面的人),0
表示不限制人数
done(contactInfo)
类型: function
成功回调,返回包含被选择的联系人信息对象的数组,联系人信息结构请见 顶部contactInfo 描述
fail(code,msg)
类型: function
可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 用户取消了选择 |
-2 | 群不存在 |
@section('从指定的群组选人示例')
kk.econtact.chooseGroupPerson({
'groupID': 520, //群ID
'stickyList': [13,14], //选中并且不能被移除的员工的ID
'maxCount': 12 //最多可以选择的人数,请注意是包含stickyList里面的人的。不指定此参数,或者值<=0,表示不限制。
}, function (res) {
/*selects 值示例
[{
userID:'359',//联系人ID
name:'隔壁老王',//联系人姓名
depart:'应用组',//联系人直属部门名称
mobile:'13800138000',//联系人电话
loginName:'laowang',//联系人登录名称
email:'wyg@landray.com.cn',//联系人邮箱
deptPath:['深圳蓝凌-47','KK产品中心-47','应用组'],//联系人所有部门名称
jobTitle: '前端工程师', // 职位
signature: '123456' // 个性签名
}]
*/
}, function (code, msg) {
// -1:用户取消了选择
// -2:群不存在
console.log('从指定的群组选人失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.econtact.getUserInfo
该能力有三种调用方式:
- kk.econtact.getUserInfo(): 查询用户的简略信息,获取当前用户信息,返回的是当前用户简略的信息
- kk.econtact.getUserInfo(done, [fail]): 获取当前用户信息
- kk.econtact.getUserInfo([IDs], done, [fail])获取当前用户信息,接收可选数组或字符串
IDs
,这个数组或字符串描述所需查询用户组的ID集合,done
成功回调返回的是当前用户的详细信息,结果以数组形式通过回调函数的参数进行传递,fail
失败回调。
IDs
类型: string
或 array
,可选
可选参数,所查询人员在企业通讯录中的ID,可以是单个人的ID,也可以是多个ID组成的数组,如例:
字符串形式 '190293'或数组形式 '[190293, 190932]'。(ps:如果所传数组里面都是不存在的ID,则返回空数组;如果数组是包含存在的ID与不存在的ID,则返回以存在的ID组成的数组。)
done(contacts)
类型: function
成功回调,返回包含被选择的联系人信息对象的数组,联系人信息结构与contactInfo一致,如果所查人员不存在,则返回结果中无其对应信息。
信息含义 | 信息代码 |
---|---|
当前用户登录名 | loginName |
当前用户登录ID | userID |
当前用户姓名 | userName |
fail
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-9 | 参数错误 |
@section('当前用户信息(简略信息)')
//查询当前用户简略信息
var userInfo = kk.econtact.getUserInfo();
/*userInfo 值示例
{
userID:'139',//当前用户登录ID
userName:'Johnson Wu',//当前用户姓名
loginName:'Wugh'//当前用户登录名
}
*/
@endsection
@section('当前用户信息(详细信息)')
//查询当前用户详细信息
kk.econtact.getUserInfo(function (info) {
/*info 值示例
[{
userID:'139',//当前用户ID
name:'Johnson Wu',//当前用户姓名
depart:'研发组',//当前用户直属部门名称
mobile:'13800138000',//当前用户电话
loginName:'wugh'//当前用户登录名
email:'wugh@landray.com.cn',//当前用户邮箱
deptPath:['深圳蓝凌','KK事业部','研发组'],//当前用户所有部门名称
jobTitle: '前端工程师', // 职位
signature: '123456' // 个性签名
}]
*/
var currentUser = info[0];
}, function (code, msg) {
console.log('错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
@section('根据人员ID数组查询人员信息')
kk.econtact.getUserInfo([139, 359], function(info) {
/*info 值示例
[{
userID:'139',//用户ID
name:'Johnson Wu',//用户姓名
depart:'研发组',//用户直属部门名称
mobile:'13800138000',//用户电话
loginName:'wugh',//用户登录名
email:'wugh@landray.com.cn',//用户邮箱
deptPath:['深圳蓝凌','KK事业部','研发组'],//用户所有部门名称
jobTitle: '前端工程师', // 职位
signature: '123456' // 个性签名
},{
userID:'359',
name:'隔壁老王',
depart:'应用组',
mobile:'13800138000',
loginName:'laowang',
email:'wyg@landray.com.cn',
deptPath:['深圳蓝凌-47','KK产品中心-47','应用组'],
jobTitle: '前端工程师',
signature: '123456'
}]
*/
}, function (code, msg) {
console.log('错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
kk.econtact.getUserAvatar
该能力有三种调用方式:
- kk.econtact.getUserAvatar() 获取当前企业用户自身头像地址 ,获取当前用户(自身)头像url,返回url字符串。
- kk.econtact.getUserAvatar(loginName) 获取指定登陆名的用户头像,返回url字符串。
- kk.econtact.getUserAvatar(userID,
true
) 获取指定登陆ID的用户头像,接收两个参数,分别为字符型的useID
与布尔值true
。
loginName
类型: string
所查询人员在企业通讯录中的登录名
userID
类型: string
所查询人员在企业通讯录中的用户ID
isById
类型: boolean
默认为 false
,即默认通过登录名查询,若为 true
,则通过用户ID进行查询
@section('获取自身头像示例代码')
var selfAvatarUrl = kk.econtact.getUserAvatar();
console.log('自身头像url: ' + selfAvatarUrl);
@endsection
@section('通过登录名获取头像示例代码')
//根据企业用户登录名获取头像
var avatarUrl = kk.econtact.getUserAvatar('user1');
console.log('头像url: ' + avatarUrl);
@endsection
@section('通过用户ID获取头像示例代码')
//根据企业用户ID获取头像
var avatarUrl = kk.econtact.getUserAvatar(190293, true);
console.log('头像url: ' + avatarUrl);
@endsection
kk.econtact.startChat(options, [done], [fail])
发起与用户的会话,接收一个对象 options
,这个对象描述的是发起会话的配置参数, done
是成功回调函数, fail
是失败回调函数。
options
类型: object
配置参数
options.userID
类型:string
你想发起会话的对象的用户ID(userID),选填
options.loginName
类型:string
你想发起会话的对象的登录名(loginName),选填
注意:
userID
与loginName
都是选填,但是二者必须选一个去传值;- 当
userID
与loginName
都传时,客户端会优先使用userID
去发起会话;
options.words
类型:string
发送的内容,发起会话成功后内容显示在输入框(还没发送),选填
options.msgIndex
类型:string
要跳转到的消息的序号index(传递了该参数则忽略words参数),选填
done()
类型: function
,可选
成功回调, 此回调函数在成功发起会话后立即执行(并非是从会话页面返回后再执行)
fail(code,msg)
类型: function
,可选
失败回调,此回调函数在发起会话失败后立即执行;
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
991 | 参数不可用 |
-2 | 找不到对应的员工 |
@section('根据用户的userID去发起会话')
// 根据用户的userID去发起会话
kk.econtact.choose(function(selects) {
var userID = selects[0].userID;
kk.econtact.startChat({
userID: userID,
}, function () {
console.log('发起会话成功');
}, function (code, msg) {
console('发起会话失败:code:' + code + '错误信息:' + msg);
});
}, function( code, msg){
console.log('选择联系人失败回调 code: ' + code +' ,msg: ' + msg);
});
@endsection
@section('根据用户的userID去发起会话, 有内容')
//根据用户的userID去发起会话,有内容,内容为words里面的内容
kk.econtact.choose(function(selects) {
var userID = selects[0].userID;
kk.econtact.startChat({
userID: userID,
words: '请查看流程: xxxxx, 链接 http://www.xxx.xxx/xxxx'
}, function () {
console.log('发起会话成功');
}, function (code, msg) {
console('发起会话失败:code:' + code + '错误信息:' + msg);
});
}, function( code, msg){
console.log('选择联系人失败回调 code: ' + code +' ,msg: ' + msg);
});
@endsection
@section('根据用户的userID去发起会话, 并跳转到指定的消息')
//根据用户的userID去发起会话, 并跳转到指定的消息
kk.econtact.choose(function(selects) {
var userID = selects[0].userID;
kk.econtact.startChat({
userID: userID,
msgIndex: '12' //消息的序号index
}, function () {
console.log('发起会话成功');
}, function (code, msg) {
console('发起会话失败:code:' + code + '错误信息:' + msg);
});
}, function( code, msg){
console.log('选择联系人失败回调 code: ' + code +' ,msg: ' + msg);
});
@endsection
kk.econtact.showECard(options, [done], [fail])
显示联系人资料页面,接收一个对象 options
,这个对象描述的是显示资料页面的配置参数, done
是成功回调函数, fail
是失败回调函数。
options
类型: object
配置参数
options.uesrID
类型:string
显示联系人资料页面的联系人的用户ID(userID),选填
options.loginName
类型:string
显示联系人资料页面的联系人的登录名(loginName),选填
注意:
userID
与loginName
都是选填,但是二者必须选一个去传值;- 当
userID
与loginName
都传时,客户端会优先使用userID
去显示联系人资料页面;
options.words
类型:string
发送的消息内容,在联系人资料页面点击发起聊天,该内容会填充到输入框中
done()
类型: function
,可选
成功回调, 此回调函数在成功显示资料页面后立即执行(并非是从资料页面返回后再执行)
fail(code,msg)
类型: function
,可选
失败回调,此回调函数在显示资料页面失败后立即执行;
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
991 | 参数不可用 |
-2 | 找不到对应的员工 |
@section('根据用户的userID去显示资料页面')
// 根据用户的userID去显示资料页面
kk.econtact.choose(function(selects) {
var userID = selects[0].userID;
kk.econtact.showECard({
userID: userID,
words: '我是输入的内容'
}, function () {
console.log('显示资料页面成功');
}, function (code, msg) {
console('显示资料页面失败:code:' + code + '错误信息:' + msg);
});
}, function( code, msg){
console.log('选择联系人失败回调 code: ' + code +' ,msg: ' + msg);
});
@endsection
@section('根据用户的loginName去显示资料页面')
//根据用户的loginName去显示资料页面
kk.econtact.choose(function(selects) {
var loginName = selects[0].loginName;
kk.econtact.showECard({
loginName: loginName,
words: '我是输入的内容'
}, function () {
console.log('显示资料页面成功');
}, function (code, msg) {
console('显示资料页面失败:code:' + code + '错误信息:' + msg);
});
}, function( code, msg){
console.log('选择联系人失败回调 code: ' + code +' ,msg: ' + msg);
});
@endsection
kk.econtact.sendGroup(options, [done], [fail])
进入协作群会话(已存在的),接收一个对象 options
options
类型: object
配置参数
options.groupID
类型:string
群聊ID
options.words
类型:string
发送的消息内容,会被填到聊天窗口输入框中,选填
options.msgIndex
类型:string
要跳转到的消息的序号index(传递了该参数则忽略words参数),选填
done()
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 没有启用IM功能 |
-2 | 找不到对应的群 |
-3 | 网络不可用 |
-4 | 无法加入群 |
@section('进入群聊会话')
// 进入群聊会话
kk.econtact.sendGroup({
groupID: 'xxx', // 群聊ID
words: '我是输入的内容'
}, function () {
console.log('进入群聊会话成功');
}, function (code, msg) {
console('进入群聊会话失败:code:' + code + '错误信息:' + msg);
});
@endsection
@section('进入群聊会话,并跳转到指定的消息')
// 进入群聊会话,并跳转到指定的消息
kk.econtact.sendGroup({
groupID: 'xxx', // 群聊ID
msgIndex: '11' //消息的序号index
}, function () {
console.log('进入群聊会话成功');
}, function (code, msg) {
console('进入群聊会话失败:code:' + code + '错误信息:' + msg);
});
@endsection
kk.econtact.createBizGroup(options, [done], [fail])
创建协作群,接收一个对象 options
options
类型: object
配置参数
options.bizType
类型:string
业务类型
options.bizTypeName
类型:string
业务类型中文名称
options.bizTypeNameEn
类型:string
业务名称英文名称
options.bizID
类型:string
业务ID
options.bizURL
类型:string
业务URL
options.groupName
类型:string
群名称
options.creater
类型:string
群主loginName。可不填。默认为当前用户
options.users
类型:array
参与者loginName组成的数组
options.cardTemplate
类型:string
卡片模板,可选,可传0
,不传使用默认模板,目前只有默认模板
以下是默认模板的参数
options.title
类型:string
标题
options.user
类型:string
用户的loginName
options.time
类型:string
时间,格式为YYYY-MM-DD HH:MM:SS
options.attach
类型:string
附加消息
done(args)
类型: function
,
成功回调,接收包含群ID的对象作为参数
args.groupID
类型: string
创建的群的ID
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 没有启用IM功能 |
1 | 用户取消 |
-3 | 网络不可用 |
-4 | 无法加入群 |
@section('创建协作群')
// 创建协作群
kk.econtact.createBizGroup({
bizType: '', // 业务类型
bizTypeName: 'test', // 业务类型中文名称
bizTypeNameEn: 'test', // 业务名称英文名称
bizID: '', // 业务ID
bizURL: 'http://www.baidu.com', // 业务URL
groupName: 'test', // 群名称
creater: '', // 群主。可不填。默认为当前用户
users: ['abc', 'efg'], // 参与者loginName
// 模板配置项
title: '我是标题',
time: '2018-03-28 18:21:20',
attach: '我是附加信息',
user: 'abc'
}, function (res) {
// res示例:协作群的id
console.log('创建协作群成功,群id为' + res.groupID);
}, function (code, msg) {
console('创建协作群失败:code:' + code + '错误信息:' + msg);
});
@endsection
kk.econtact.isBizGroupExists(options, done, [fail])
判断协作群是否存在
options
类型: object
配置参数
options.bizType
类型:string
业务类型
options.bizID
类型:string
业务ID
done(args)
类型: function
成功回调,接收包含群ID和群组是否存在的对象作为参数
args.exists
类型: boolean
群组是否存在,true
为存在
args.groupID
类型: string
群ID(群存在才会有此参数)
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-3 | 网络不可用 |
-4 | 服务端出错了 |
@section('判断协作群是否存在')
// 判断协作群是否存在
kk.econtact.isBizGroupExists({
bizType: 'test',
bizID: 'test'
}, function (res) {
console.log('协作群存在,群id为' +res.groupID);
}, function (code, msg) {
console('判断协作群存在失败:code:' + code + '错误信息:' + msg);
});
@endsection
kk.econtact.genBizGroupChatMsgUrl(options, done, [fail])
获取群协作聊天记录链接
options
类型: object
配置参数
options.groupID
类型:string
群聊ID
options.endTime
类型:string
截止时间,时间格式YYYY-MM-DD HH:MM:SS
done(args)
类型: function
成功回调,接收包含群消息url的对象作为参数
args.url
类型: string
作群聊天消息查看url
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-3 | 网络不可用 |
-4 | 服务端出错了 |
@section('获取群协作聊天记录链接')
// 获取群协作聊天记录链接
kk.econtact.genBizGroupChatMsgUrl({
groupID: 'test',
endTime: '2018-03-28 18:21:20'
}, function (res) {
console.log('获取群协作聊天记录链接成功,url为' +res.url);
}, function (code, msg) {
console('获取群协作聊天记录链接失败:code:' + code + '错误信息:' + msg);
});
@endsection
kk.econtact.genSessionChatMsgUrl(options, done, [fail])
获取会话的聊天记录链接
options
类型: object
配置参数
options.sessionID
类型:string
会话ID
options.msgIndexs
类型:string
需要查看的消息序号,多个用逗号分隔
done(args)
类型: function
成功回调,接收包含会话消息url的对象作为参数
args.url
类型: string
会话聊天消息查看url
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-2 | 找不到对应的会话 |
-3 | 网络不可用 |
-4 | 服务端出错了 |
@section('获取会话的聊天记录链接')
// 获取会话的聊天记录链接
kk.econtact.genSessionChatMsgUrl({
sessionID: '22', //会话ID
msgIndexs: '1,2,3' //需要查看的消息序号,多个用逗号分隔
}, function (res) {
console.log('获取会话聊天记录链接成功,url为' +res.url);
}, function (code, msg) {
console('获取会话聊天记录链接失败:code:' + code + '错误信息:' + msg);
});
@endsection
kk.econtact.isSessionMemberByMsg(options, done, [fail])
已知某条聊天消息,判断当前用户是否为该消息所在聊天会话的成员
options
类型: object
配置参数
options.msgSenderID
类型:string
消息发送方的id
options.msgReceiverID
类型:string
消息接收方的id
options.sessionType
类型:number
会话类型
done(args)
类型: function
成功回调
args.chatID
类型: string
聊天对象。p2p会话为对方的ID,群为群ID
args.sessionType
类型: number
会话类型。0 p2p,1 群组,2 讨论组。
args.sessionName
类型: string
会话名称
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-2 | 不是聊天会话成员 |
@section('已知某条聊天消息,判断当前用户是否为该消息所在聊天会话的成员')
// 已知某条聊天消息,判断当前用户是否为该消息所在聊天会话的成员
kk.econtact.isSessionMemberByMsg({
msgSenderID: '22' //消息发送方的id
msgReceiverID: '33' //消息接收方的id
sessionType: 1 //消息类型
}, function (res) {
// res示例
// {
// chatID: 聊天对象。p2p会话为对方的ID,群为群ID。
// sessionType: 会话类型。0 p2p,1 群组,2 讨论组。
// sessionName: 会话名称。
// }
}, function (code, msg) {
// -2: 不是聊天会话成员
console.log('错误代码是:' + code + '错误信息是:' + msg);
});
@endsection
kk.econtact.getRelSession(done, [fail])
获取关联会话的信息,只有通过IM应用扩展进入的应用,才有关联会话
done(args)
类型: function
成功回调
args.sessionID
类型: string
会话ID
args.sessionType
类型: number
会话类型。0 p2p,1 群组,2 讨论组
args.sessionName
类型: string
会话名称
args.typeID
类型: string
p2p会话为对方的ID,群组/讨论组为组ID
args.members
类型: string
聊天会话的参与用户,值为用户登录名,多个之间用逗号分隔
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-7 | 无关联的当前会话 |
@section('获取关联会话的信息,只有通过IM应用扩展进入的应用,才有关联会话')
// 获取关联会话的信息,只有通过IM应用扩展进入的应用,才有关联会话
kk.econtact.getRelSession(function (res) {
// res 示例
// {
// sessionID:会话ID。
// sessionType:会话类型。0 p2p,1 群组,2 讨论组。
// sessionName:会话名称。
// typeID:p2p会话为对方的ID,群组/讨论组为组ID。
// members:聊天会话的参与用户,值为用户登录名,多个之间用逗号分隔。
// }
}, function (code, msg) {
//-7:无关联的当前会话
console.log('获取关联会话的信息失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
电话短信模块
电话短信模块,提供了拨打电话、发送短信能力
kk.phone.call(options, [done], [fail])
拨打电话
options
类型:object|number
拨打电话的信息,支持 对象形式
或者数字形式
options为数字时
类型:number
电话号码
options为对象时
options.number
类型:number
电话号码
options.needCallSessionInfo
类型:boolean
, 默认值 false
是否需要通话信息,true
表示需要通话信息,
done(args)
类型:function
,可选
成功回调,接收包含通话信息的对象args
作为参数。
args.callState
类型:string
通话状态:
1
: 未接通2
: 通话完成
注意:只有在 args.callState值是 2
时才会返回以下字段
args.startTime
类型:date
通话开始的时间
args.endTime
类型:date
通话结束的时间
args.sessionTime
类型:string
通话时长,单位是秒
args.startTimeString
类型:string
通话开始时间字符串,以yyyymmddhhmmss格式显示
args.endTimeString
类型:string
通话结束时间字符串,以yyyymmddhhmmss格式显示
fail
类型: function
失败回调, 仅当需要通话信息(即options.needCallSessionInfo
为true
),用户使用Android 系统,且用户未允许KK读取通话记录的权限时才会调用
@section('传数字')
//拨出号码
kk.phone.call(10086);
@endsection
@section('传对象')
//拨出号码并且需要通话信息
kk.phone.call({
number: 10086,
needCallSessionInfo: true
}, function (res) {
/*res 值示例
{
"callState":"2", // 通话状态:通话完成
// callState值为2时才会有以下字段
"startTime":Thu Jul 06 2017 16:17:53 GMT+0800 (CST),
sessionTime:"8", // 通话时长
startTimeString:"20170706161753",
endTime:Thu Jul 06 2017 16:18:01 GMT+0800 (CST),
endTimeString: "20170706161801"
}
*/
console.log('通话状态:' + res.callState);
});
@endsection
kk.phone.sms(phoneNumber, [content])
发送短信
phoneNumber
类型: string
电话号码
content
类型: string
,可选
短信内容
@section('发送短信示例代码')
//发送短信
kk.phone.sms('10086', '打造大连接,蓝凌全新企业移动互联解决方案');
@endsection
设备模块
设备模块可以设置设备屏幕显示方向及获取网络类型
kk.device.setOrientation(orientation)
设置设备屏幕的显示方向,接收一个参数 orientation
,用于描述屏幕方向的参数
orientation
类型: string
可选值:
portrait
(竖屏)landscape
(横屏)auto
(自动旋转)
@section('设置屏幕方向为竖屏')
// 将屏幕设置为竖屏
kk.device.setOrientation('portrait');
@endsection
@section('设置屏幕方向为横屏')
// 将屏幕设置为横屏
kk.device.setOrientation( 'landscape');
@endsection
@section('设置屏幕方向为自动旋转')
// 将屏幕设置为自动旋转
kk.device.setOrientation('auto');
@endsection
kk.device.getOrientation(done, [fail])
获取设备屏幕显示方向
done(args)
类型: function
成功回调,接收一个字符串作为参数
args
类型: string
可能值:
portrait
(竖屏)landscape
(横屏)auto
(自动旋转)
fail
类型: function
,可选
失败回调
@section('获取屏幕显示方向')
// 获取屏幕显示方向
kk.device.getOrientation(function(res){
/*res 值示例
res: 'portrait'
*/
console.log(res);
})
@endsection
kk.device.getNetType(done, [fail])
获取设备当前的网络类型,返回成功回调函数 done
或者失败回调函数 fail
。
done(args)
类型: function
成功回调,接收包含网络类型的对象作为参数
args.netType
类型: string
可能值2G/3G/4G/WIFI,空字符串代表无网络,iOS下2G/3G均返回3G
fail
类型: function
,可选
失败回调
@section('获取网络类型示例代码')
// 获取网络类型
kk.device.getNetType( function( res ){
/*res 值示例
{
netType:'WIFI'
}
*/
var netType = res.netType;
switch( netType ){
case '':
// 无网络,使用本地数据
break;
case '2G':
// 使用远程文本内容
break;
case '3G':
// 使用远程的图片
break;
case '4G':
// 使用远程的图片
break;
case 'WIFI':
// 使用远程的视频
break;
}
});
@endsection
kk.device.getWifiInfo(done, [fail])
获取当前wifi信息
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.ssid
类型:string
连接的热点的ssid
args.ap_mac
类型:string
所连接路由器的mac地址(小写,冒号分隔)
fail(code, msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | wifi未连接 |
@section('获取当前wifi信息')
// 获取当前wifi信息
kk.device.getWifiInfo(function (res) {
/* res 示例
{
ssid: 'Landray', //wifi ssid
ap_mac: 'ab:0e:6f:8f' // 所连接路由器的mac地址
}
*/
}, function (code, msg) {
console.log('获取wifi失败,错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
kk.device.setClipboard(text)
设置剪贴板内容,接收一个字符串 text
,描述要设置的内容。
text
类型: string
要拷贝的内容
@section('设置剪贴板内容示例代码')
// 设置剪贴板内容
kk.device.setClipboard( 'Welcome to kk' );
@endsection
kk.device.support(features, done)
检查当前设备是否支持某些特性,例如指纹等
features
类型:string
所要检查的特性,目前支持的特性:FingerPrint
(指纹)
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.FingerPrint
类型:number
设备是否支持该特性,1
为支持
@section('检查设备是否支持指纹示例代码')
// 检查设备是否支持指纹
kk.device.support('FingerPrint', function (res) {
/* res 示例
{
FingerPrint: '0' // 不支持指纹
}
*/
});
@endsection
kk.device.startScanBeacons(options, done, [fail])
开始扫描附近指定UUID的iBeacon蓝牙设备
options
类型: object
配置参数
options.UUID
类型:string
iBeacon蓝牙设备的UUID(一级标识)
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.iBeacons
类型:array
扫描到的iBeacons数组
iBeacon对象格式
iBeacon.major
类型:string
扫描到的iBeacons数组
蓝牙设备的二级标识
iBeacon.minor
类型:string
扫描到的iBeacons数组
蓝牙设备的三级标识
fail(code,msg)
类型: function
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 设备不支持区域检测 |
2 | 没有定位权限 |
3 | 蓝牙未打开 |
@section('开始扫描附近指定UUID的iBeacon蓝牙设备示例代码')
// 开始扫描附近指定UUID的iBeacon蓝牙设备
kk.device.startScanBeacons({
UUID:iBeacon蓝牙设备的UUID(一级标识)
}, function (res) {
/*
不间断回调,当前时间段扫描到多少就返回多少,直到调用停止扫描
iBeacons:[{
major:蓝牙设备的二级标识,
minor:蓝牙设备的三级标识
}, ...]
*/
}, function (code, msg) {
/*
1:设备不支持区域检测
2:没有定位权限
3:蓝牙未打开
*/
console.log('扫描失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.device.stopScanBeacons(done, [fail])
停止扫描
done(args)
类型: function
成功回调,无回参
fail(code,msg)
类型: function
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 还未开始扫描 |
@section('停止扫描示例代码')
// 停止扫描
kk.device.stopScanBeacons(function (res) {
//成功回调
}, function (code, msg) {
//1:还未开始扫描
console.log('停止扫描失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.device.getBluetoothStatus(done)
获取蓝牙状态
done(args)
类型: function
成功回调,返回一个对象
options.status
类型:number
蓝牙状态:0
关闭,1
开启。默认为0
@section('获取蓝牙状态')
// 获取蓝牙状态
kk.device.getBluetoothStatus(function (res) {
//res示例
//{status:0关闭,1开启。默认为0}
});
@endsection
媒体模块
媒体模块,封装了拍照、录音、录制视频、选择相册图片或视频、存储图片、播放音视频等能力
kk.media.getPicture([options,] done, [fail])
拍照(单张),从相册选取图片或者视频。
options
类型: object
,可选
配置参数
options.count
类型: number
,可选,默认值为 1
获取的图片张数,默认为1张。
options.sourceType
类型: string
,可选,默认值为 camera
(使用摄像头拍照)
数据来源即从何处获取图片,可选值有:
camera
摄像头拍照, 此为默认值album
从相册中选取sysCamera
系统相机
options.destinationType
类型: string
,可选,默认值为 file
(存为文件)
图片的数据存储类型。可选值有:
file
存储为文件,当获取多张图片时,此为默认值data
存为 base64 字符串,仅获取单张图片时,此类型合法,多张时能力将提示错误。
options.targetWidth
类型: number
,可选
期望的图片宽度,单位px
,不传则使用系统相机宽
options.targetHeight
类型: number
,可选
期望的图片宽度,单位px
,不传则使用系统相机高
options.chooseOrignPic
类型:boolean
,可选
使用相册时是否可以选原图,默认为false
options.encodingType
类型: string
,可选,默认值为 png
期望得到的图片的格式(jpeg/ png),缺省为png
options.quality
类型: number
,可选,默认值为 50
图片压缩比 0-100,缺省为50, encodingType
为png时,该参数无效。图片压缩比越大(数值越大),图片的质量越好,文件所占的存储空间越大。
options.savePath
类型: string
或者 array
文件的保存至手机的路径(string
类型),或图片保存路径组成的数组(array
类型)。获取单张时可以是string
,多张时则必须是 array
。 图片保存的路径格式可参考路径说明。 仅 destinationType
为 file
时该参数有意义。若没有传入,则系统自动生成一个路径;若 options.savePath
指定的文件存储路径比 options.count
少,则缺少的部分系统会自动产生其路径。
options.exifFlag
类型: boolean
,可选,默认是 false
是否在照片信息中保存GPS位置信息
options.showVideo
类型: boolean
,可选,默认是 false
展示相册图片的时候,是否还需要同时展示相册中的视频。只有sourceType==album时本参数才生效。
options.videoPath
类型: string
,可选
视频要保存的路径 (如果不指定,将使用sdcard://协议保存一个随机文件名)。
options.needCover
类型: boolean
,可选,默认是 false
是否要生成封面图片
options.coverPath
类型: string
,可选
封面图片的路径 (如果不指定,将使用sdcard://协议保存一个随机文件名)。
options.videoMaxDuration
类型: number
,可选
录像最大时长,单位秒,如果不指定则取系统配置项。
options.videoMaxSize
类型: number
,可选
视频文件大小限制,单位Mb,如果不指定则取系统配置项。
done(args)
类型: function
成功回调。当未设置 options.count
(即获取单张图片) 时, args 为一个图片信息对象,当设置之后(不论设置为 1 还是更多), args 为包含 options.count 个数的图片信息对象的数组。当用户选择的是视频时args 为视频信息对象的数组
object.mediaType
类型: string
每个信息对象都会有这个值,表示用户本次操作的媒体是图片还是视频。image图片;video视频。默认为image。不同的媒体会有不同的信息对象,详看下面对象格式定义
图片信息对象格式
imageInfo.imageData
类型: string
图片的base64编码,可以直接设置为 <img>
标签的 src
来使用 , destinationType = data时返回
imageInfo.imageFileOSPath
类型: string
图片在操作系统上的实际路径 ,destinationType = file 时返回, 可直接作为图片的src来显示
imageInfo.imageURI
类型: string
保存文件的协议路径(若没有传入,则系统自动生成一个路径) , destinationType = file 时返回
imageInfo.imageTime
类型: date
图片创建时间对象 , 当destinationType = file时 有该值
imageInfo.imageTimeString
类型: string
图片创建时间字符串,以yyyymmddhhmmss格式显示 , 当options.destinationType
为 file
时 有该值
视频信息对象格式
videoInfo.videoPath
类型: string
视频文件路径
videoInfo.coverPath
类型: string
封面图片文件路径
videoInfo.coverUri
类型: string
封面图片uri,可以直接设置为 <img>
标签的 src
来使用。
videoInfo.videoSize
类型: string
视频文件大小
videoInfo.duration
类型: string
视频时长
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-90 | 参数错误 |
-1 | 获取错误 |
@section('拍照(数据类型:file)')
//拍照(数据类型:file)
kk.media.getPicture({
sourceType: 'camera',
destinationType: 'file',
encodingType: 'png',
savePath: 'sdcard://media/photo/single.png'
}, function(res){
/*
* 因为未设置拍照张数(count) res 为一个图片信息对象, res 值示例如下
{
imageURI:'sdcard://media/photos/single.png',
imageFileOSPath:'kkapp://fi.o-1091-o.kk/storage/sdcard1/media/photo/single.png',
imageTime:'2017-02-28T05:28:08.000Z',
imgaeTimeString:'20170228132808'
}
*/
// res.imageFileOSPath, 可以直接设置为<img>标签的src来使用
// res.imageURI,可以作为kk.media.save2album()的filepath,将相片保存到相册
}, function(code, msg){
console.log('错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
@section('拍照(数据类型:data)')
// 从相册中选取(数据类型:data,仅获取单张图片时数据类型才可以是 data)
kk.media.getPicture({
sourceType: 'camera',
destinationType: 'data'
}, function(res){
/*res 值示例
{"imageData":"data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBA…oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z"} */
//res.imageData, 可以直接设置为<img>标签的src来使用
}, function(code, msg){
console.log('错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
@section('从相册中选取多张图片(数据类型:file)')
//从相册中选取(数据类型:file)
kk.media.getPicture({
sourceType: 'album',
destinationType: 'file',
encodingType: 'png',
count: 2,
chooseOrignPic: true // 选取原图
}, function(res){
/*设置了count值,res 是一个数组,值示例
[{
imageFileOSPath: "kkapp://fil.o-1213-o.kk/storage/sdcard1/easymi/1498118521731.png",
imageTime: Thu Jun 22 2017 16:02:01 GMT+0800 (CST),
imageTimeString: "20170622160201",
imageURI: "sdcard://easymi/1498118521731.png"
}, {
imageFileOSPath: "kkapp://fil.o-1213-o.kk/storage/sdcard1/easymi/1498118521882.png",
imageTime: Thu Jun 22 2017 16:02:01 GMT+0800 (CST),
imageTimeString: "20170622160201",
imageURI: "sdcard://easymi/1498118521882.png"
}]
*/
//res[0].imageFileOSPath,res[1].imageFileOSPath 可以直接设置为<img>标签的src来使用
//res[0].imageURI,res[1].imageURI可以作为kk.media.save2album()的filepath,将相片保存到相册
}, function(code, msg){
console.log('错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
@section('从相册中选取(数据类型:data)')
// 从相册中选取(数据类型:data,仅获取单张图片时数据类型才可以是 data)
kk.media.getPicture({
sourceType: 'album',
destinationType: 'data'
}, function(res){
/*res 值示例
{"imageData":"data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBA…oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z"} */
//res.imageData, 可以直接设置为<img>标签的src来使用
}, function(code, msg){
console.log('错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
@section('系统相机')
// 系统相机(数据类型:file)
kk.media.getPicture({
sourceType: 'sysCamera'
}, function(res){
/*res 值示例
{
imageURI:'sdcard://easymi/1498118521731.png',
imageFileOSPath:'kkapp://fi.o-1091-o.kk/storage/sdcard1/easymi/1498118521731.png',
imageTime:'2018-08-20T05:28:08.000Z',
imgaeTimeString:'20180820132808'
}
*/
}, function(code, msg){
console.log('错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
@section('从相册中选取相片或者视频')
//从相册中选取相片或者视频(数据类型:file)
kk.media.getPicture({
sourceType: 'album',
destinationType: 'file',
encodingType: 'png',
count: 2,
chooseOrignPic: true,
showVideo: true,
needCover: true,
videoMaxDuration: 60,
videoMaxSize: 10
}, function(res){
/* 当选择了图片时且设置了count值,res 是一个数组,值示例
[{
imageFileOSPath: "kkapp://fil.o-1213-o.kk/storage/sdcard1/easymi/1498118521731.png",
imageTime: Thu Jun 22 2017 16:02:01 GMT+0800 (CST),
imageTimeString: "20170622160201",
imageURI: "sdcard://easymi/1498118521731.png"
},...]
*/
//res[0].imageFileOSPath,res[1].imageFileOSPath 可以直接设置为<img>标签的src来使用
//res[0].imageURI,res[1].imageURI可以作为kk.media.save2album()的filepath,将相片保存到相册
/* 当选择了视频时(选了视频不能选图片,选了图片不能选视频,只能选一种。视频现只支持一次选择一个)
[{
videoPath: "sdcard://easymi/1498118521731.mp4",
coverPath: "sdcard://easymi/1498118521731.png",
coverUri: "kkapp://fil.o-1213-o.kk/storage/sdcard1/easymi/1498118521731.png",
videoSize: 10,
duration: 60
}]
*/
}, function(code, msg){
console.log('错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
kk.media.getSignImage([options], done, [fail])
获取签名的图片
options
类型: object
配置参数
options.penSize
类型: number
画笔的粗细:缺省为2
1
: 细2
: 中3
: 粗,
options.penColor
类型: string
画笔的颜色:缺省为black
black
: 黑色blue
: 蓝色red
: 红色green
: 绿色yellow
: 黄色
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.picUri
类型: string
输出图片文件的uri,可以放到img标签的src里面
args.picPath
类型: string
输出图片文件的路径
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-90 | 参数错误 |
-1 | 用户取消 |
@section('获取签名图片示例代码')
kk.media.getSignImage({
penSize: 3, // 粗笔
penColor: 'red' // 红色
}, function(res){
/*res值示例
{
picPath: 'sdcard://Pictures/1509447582093.png',
picUri:'kkapp://fil.o-0-o.kk/storage/emulated/0/Pictures/1509447582093.png' //可以直接设置为<img>标签的src来使用
}
*/
console.log('签名图片的全路径:' + res.picUri);
}, function(code, msg){
console.log('手写签名失败,错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.media.save2album(options, [done], [fail])
保存图片到相册
options
类型: object
配置选项
options.filepath
类型: string
要保存的照片路径。支持本地路径;支持http/https协议地址;支持base64图片数据(base64://[base64图片内容])
done
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
9 | 保存到相册失败 |
-90 | 参数错误 |
@section('保存本地图片到相册')
//保存本地图片到相册
kk.media.save2album({
// 填写正确的本地文件路径
uri: 'sdcard://media/photo/multi/101.jpeg'
}, function(){
console.log('照片保存成功');
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
@section('保存在线图片到相册')
//保存在线图片到相册
kk.media.save2album({
// 填写带协议的完整的路径
uri: 'http://www.baidu.com/icon.jpg'
}, function(){
console.log('照片保存成功');
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
@section('保存base64图片数据到相册')
//保存base64图片数据到相册
kk.media.save2album({
// 填写带协议的base64数据
uri: 'base64://[base64图片内容]'
}, function(){
console.log('照片保存成功');
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.media.previewImage(options, [fail])
预览图片,使用原生UI来浏览图片(可以是多张图片), 并支持图片的缩放操作
options
类型: object
配置参数
options.paths
类型: array
所要预览图片的地址列表,支持传入本地图片地址,即文件路径列出的几种地址,以及在线图片地址链接
options.startIndex
类型: int
当前图片的索引(在列表中的序号), 索引从1开始计数
options.operations
类型: boolean
是否提供图片操作菜单(转发到微信好友/保存到相册)
true
:提供,false
:不提供。默认为 false
。
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 | 路径参数为空 |
999 | 预览失败(地址没有按顺序填写,中间存在空值) |
@section('预览图片示例代码')
// 预览图片
kk.media.previewImage({
paths: [
'sdcard://1.jpg',
'sdcard://2.jpg',
'sdcard://3.jpg',
]
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.media.editImage(options, done, [fail])
图片编辑,最后输出一张和原图大小一样的png图片
options
类型:object
配置参数
options.sourcePath
要编辑的图片,只支持协议格式(sdcard://)
options.targetPath
编辑后保存的图片路径,只支持协议格式(sdcard://)。如果不填写此参数则覆盖原图片
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.picUri
类型: string
输出图片文件的uri,可以放到img标签的src里面
args.picPath
类型: string
输出图片文件的路径
fail
类型: function
, 可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 用户取消 |
-2 | 源文件打开失败 |
-3 | 输出图片文件出错 |
-90 | 参数错误 |
@section('编辑图片示例代码')
// 编辑图片,覆盖原图
kk.media.editImage({
sourcePath: 'sdcard://easymi/pic.png'
}, function(res){
/*res值示例
{
picPath: 'sdcard://easymi/pic.png',
picUri:'kkapp://fil.o-0-o.kk/storage/emulated/0/easymi/pic.png' //可以直接设置为<img>标签的src来使用
}
*/
}, function(code, msg){
console.log('编辑图片失败,错误信息:' + msg + ',错误代码:' + code);
})
@endsection
@section('编辑图片示例代码')
// 编辑图片,新生成一张图片
kk.media.editImage({
sourcePath: 'sdcard://easymi/old.png',
targetPath: 'sdcard://easymi/new.png'
}, function(res){
/*res值示例
{
picPath: 'sdcard://easymi/new.png',
picUri:'kkapp://fil.o-0-o.kk/storage/emulated/0/easymi/new.png' //可以直接设置为<img>标签的src来使用
}
*/
}, function(code, msg){
console.log('编辑图片失败,错误信息:' + msg + ',错误代码:' + code);
})
@endsection
kk.media.captureVideo([options], done, [fail])
录制视频,录制的格式取决于操作系统,下面有说明
视频录制格式:
设备 | 格式 |
---|---|
Android下 | 录制的格式为3gp |
iOS下 | 录制的格式为mov |
options
类型: object
,可选
配置参数
options.quality
类型: string
,可选值:LOW,MEDIUM,HIGH ,默认值是 LOW
质量参数
options.savePath
类型: string
要保存的路径 (如果不指定,将使用sdcard://协议保存一个随机文件名)
options.duration
类型: number
录像时长(单位:秒;如果不指定,则默认长度不做限制)
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.name
类型:string
不含路径信息的文件名
args.fullPath
类型: string
包含文件名的文件全路径
args.type
类型: string
MIME类型
args.lastModifiedDate
类型: string
文件最后修改的日期和时间,如20150629154714,表示最后修改时间是"2015年06月29日15时47分14秒"
args.size
类型: number
文件大小(单位为字节)
args.endingType
类型: number
录制结束方式,0:主动结束,1:来电或其他因素打断
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 用户取消 |
-2 | 创建录制文件失败 |
1 | 请求的视频规格不支持 |
@section('录制视频示例代码')
//录制视频
kk.media.captureVideo({
quality: 'MEDIUM',
savePath: 'sdcard://media/video/test.mov',
duration: 20
}, function(res){
/*
res值示例:
{
endingType:0,//录制结束方式
retCode:0,
name:'test.mov',//文件名
fullPath:'sdcard://media/vedio/test.mov',//文件全路径
type:'3gp',//MIME类型
lastModifiedData:'2017-02-28 13:51:21',//最后修改的时间
size:218488//文件大小
}
*/
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.media.captureAudio(done, [fail])
带native UI的录音能力
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.name
类型: string
文件名
args.fullPath
类型: string
文件在系统上的绝对路径
args.filePath
类型: string
协议路径
args.type
类型: string
文件类型
args.size
类型: number
文件大小(单位为字节)
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
±3 | 录音被取消了 |
-9 | 录音错误 |
@section('录音示例代码')
//带native UI的录音
kk.media.captureAudio(function(res){
/*res 值示例
{
name:'ekp_1488261335494.amr',//文件名
fullPath:'/data/data/com.landray.kkplus/files/ekp_1488261335494.amr',//文件全路径
filePath: 'abs:///files/ekp_1488261335494.amr'
type:'audio/amr',//文件类型
size:3654//文件大小
}
*/
}, function(code, msg){
if(code == -3){
console.log('录音被取消了');
}else if(code == -9){
console.log('录音错误');
}else{
console.log('录音失败');
}
});
@endsection
kk.media.playAudio(filePath, [fail])
带native UI的音频播放能力
filePath
类型: string
音频文件全路径(文件在系统上的绝对路径)
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-3 | 播放被取消了 |
-9 | 播放错误 |
@section('音频播放示例代码')
//带native UI的音频播放
kk.media.playAudio('data/media/audio/test.wav', function(code, msg){
console.log('音频播放失败,错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
智能AI模块
提供AI相关的能力
kk.ai.startVoiceRecognition(done, [fail])
开始语音识别
done(args)
类型: function
调用成功后即会执行,该函数接收包含语音识别相关信息的对象作为参数
args.state
类型: string
语音识别的状态,有三个状态:
identifying
识别中finish
识别完成fail
识别失败
args.volume
类型: string
音量(单位:分贝), 此值在 state ==='identifying'
返回
args.data
类型: string
识别到的文字, 此值在 state ==='finish'
返回
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
语音识别已经启动 |
2 |
启动语音识别失败 |
@section('开始语音识别')
// 开始语音识别
kk.ai.startVoiceRecognition(function (res) {
console.log('语音识别的状态是:' + res.state);
}, function (code, msg) {
console.log('语音识别失败,失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
kk.ai.stopVoiceRecognition([fail])
结束语音识别,此能力是终止startVoiceRecognition(开始语音识别)的调用的。
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
语音识别未开始 |
9 |
语音识别失败 |
@section('结束语音识别')
// 结束语音识别
kk.ai.stopVoiceRecognition(function (code, msg) {
console.log('结束语音识别失败,失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
kk.ai.setAudioMute(mute)
设置静音开关,接收一个参数mute
,用于描述静音开或者关,(设置静音开关,静音打开之后,调用playAudio不会有声音,暂时只针对调用playAudio能力生效)
mute
类型:string
可选值:
true
(开)false
(关)
@section('设置静音开关')
// 设置静音开
kk.ai.setAudioMute('true');
// 设置静音关
kk.ai.setAudioMute('false');
@endsection
kk.ai.getAudioMute(done)
获取静音开关
done(args)
类型:function
成功回调,接收一个字符串作为参数
args
类型:string
可能值:
true
(开)false
(关)
@section('获取静音开关')
// 获取静音开关
kk.ai.getAudioMute(function (done) {
/*res 值示例
res: 'true'
*/
console.log(res);
});
@endsection
加密/解密模块
加密模块提供文件、字符串的加密和解密能力
kk.crypto.encrypt(options, done, [fail])
加密字符串,接收一个对象 options
,这个对象描述了要加密的字符串的配置参数, done
成功回调,fail
失败回调。
options
类型: object
配置参数
options.text
类型: string
要加密的字符串
options.key
类型: string
密钥
done(arg)
类型: function
成功回调,返回一个参数 arg
,这个参数描述了加密后的字符串。
arg
类型: string
加密后的字符串
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 | 加密失败 |
@section('加密字符串示例代码')
//加密字符串
kk.crypto.encrypt({
text: '需要加密的字符串',
key: 'mykey'
}, function( res ){
/* res 值示例
{
retCode:'0',
text:'54vsRgkdgRk0bvBcPZYdx3jwYTevd8591lXSBBctp7k='
}
*/
console.log('加密后的字符串:' + res.text );
localStorage.encryptText = res.text;
},function( code, msg ){
console.log('错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
kk.crypto.decrypt(options, done, [fail])
解密字符串,接收一个对象 options
,这个对象描述要解密字符串的配置参数, done
成功回调,fail
失败回调。
options
类型:object
传入的配置参数对象
options.text
类型: string
被加密的字符串
options.key
类型: string
密钥
done(args)
类型: function
成功回调,返回一个对象 args
,描述解密后的字符串。
args.text
类型: string
解密后的字符串
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 | 解密失败 |
@section('解密字符串示例代码')
//解密字符串
var encryptText = localStorage.encryptText;
// encryptText 是一段加密后的字符串,类似 '7kxl8E55rJFm642Oelilew==';
kk.crypto.decrypt({
text: encryptText,
key: 'mykey'
}, function( res ){
/* res 值示例
{
retCode:'0',
text:'需求加密的字符串'
}
*/
console.log('解密后的字符串:' + res.text );
}, function( code, msg ){
console.log('错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
kk.crypto.obscureFile(options, [done], [fail])
加密文件,接收一个对象 options
,这个对象描述要加密文件的配置选项, done
成功回调,fail
失败回调。
options
类型: string
配置选项
options.obscure
类型: string
混淆因子(密钥)
options.sourceFile
类型: string
源文件路径
options.dealSourceFile
类型: boolean
是否直接处理源文件,为 true
时,忽略 outputFile
属性
options.outputFile
类型: string
文件输出路径,dealSourceFile
为 true
时,此属性无效
done
类型: function
,可选
成功回调,无回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 | 源文件不存在或源文件数据为空 |
@section('加密文件:保持加密文件路径不变')
// 混淆文件:保持加密文件路径不变
kk.crypto.obscureFile( {
obscure: 'mykey2',
sourceFile: 'sdcard://test/abc.mov',
dealSourceFile: true
}, function( ){
console.log('文件加密成功');
}, function( code, msg ){
console.log('文件加密失败,错误代码:' + code + ',错误信息:' + msg);
});
@endsection
@section('加密文件:文件加密后复制到其他路径')
// 混淆文件:文件加密后复制到其他路径
kk.crypto.obscureFile( {
obscure: 'mykey2',
sourceFile: 'sdcard://test/abc.mov',
outputFile: 'sdcard://output/123.mov'
}, function( ){
console.log('文件加密成功');
}, function( code, msg ){
console.log('文件加密失败,错误代码:' + code + ',错误信息:' + msg);
});
@endsection
kk.crypto.restoreFile(options, [done], [fail])
解密文件,接收一个对象 options
,这个对象描述要解密文件的配置选项, done
成功回调,fail
失败回调。
options
类型: object
传入配置选项对象
options.obscure
类型: string
混淆因子
options.sourceFile
类型: string
源文件路径
options.dealSourceFile
类型: boolean
是否直接处理源文件,为 true
时,忽略 outputFile
属性
options.outputFile
类型: string
文件输出路径,dealSourceFile
为 true
时,此属性无效
done
类型: function
,可选
成功回调,不接收参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 | 源文件不存在或源文件数据为空 |
@section('解密文件:删除加密的源文件')
//解密文件
kk.crypto.restoreFile( {
obscure: 'mykey2',
sourceFile: 'sdcard://output/123.mov',
dealSourceFile: true
}, function(){
console.log('文件解密成功,' );
}, function( code, msg ){
console.log('文件解密失败,错误代码:' + code + ',错误信息:' + msg);
});
@endsection
@section('解密文件:保留加密的源文件')
// 保留加密的源文件,解密密后生成新的文件
kk.crypto.restoreFile( {
obscure: 'mykey2',
sourceFile: 'sdcard://output/123.mov'
outputFile: 'sdcard://test/tmp.mov',
}, function( ){
console.log('文件解密成功');
}, function( code, msg ){
console.log('文件解密失败,错误代码:' + code + ',错误信息:' + msg);
});
@endsection
安全模块
涉及设备的一些安全检查
kk.security.verifyFingerprint(done, [fail])
发起指纹检查
done()
类型: function
调用成功后即会执行,该函数不接受参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
设备不支持指纹 |
2 |
密码未设置,无法使用 |
3 |
未录入指纹 |
4 |
用户取消 |
5 |
指纹验证不通过(iOS才有) |
9 |
未知错误 |
@section('发起指纹检查')
kk.security.verifyFingerprint(function () {
console.log('指纹检查通过');
}, function (code, msg) {
console.log('发起指纹检查失败,错误代码:' + code + '; 错误详情:' + msg);
})
@endsection
kk.security.checkFace(done, [fail])
发起人脸检查
done(args)
类型: function
调用成功后即会执行,回调参数是一个包含人脸识别成功的对象
args.isFirst
类型:boolean
是否是第一次注册人脸, true
为第一次注册人脸成功, false
为识别成功(已经注册过了)
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
网络错误 |
2 |
人脸匹配失败 |
3 |
认证失败 |
4 |
人脸注册失败 |
5 |
没有获取相机权限 |
@section('发起人脸检查')
kk.security.checkFace(function () {
console.log('人脸检查通过');
}, function (code, msg) {
console.log('发起人脸检查失败,错误代码:' + code + '; 错误详情:' + msg);
})
@endsection
kk.security.checkGesturePassword([done], [fail])
发起手势密码检查
done()
类型: function
调用成功后即会执行,该函数不接受参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
用户取消 |
2 |
认证失败手势密码错误 |
9 |
未知错误 |
@section('发起手势密码检查')
kk.security.checkGesturePassword(function () {
console.log('手势密码检查通过');
}, function (code, msg) {
console.log('发起手势密码检查失败,错误代码:' + code + '; 错误详情:' + msg);
})
@endsection
kk.security.getAvailableVerifyInfo([done])
获取当前用户所开启的全部认证方式
done()
类型: function
成功回调
args.info
类型:string
字符串表示。支持0或多个值,用逗号隔开,任何一个认证都没开的话,返回空字符串
0
表示开启了手势密码认证1
表示开启了指纹认证2
表示开启了扫脸认证
@section('获取当前用户所开启的全部认证方式')
kk.security.getAvailableVerifyInfo(function (args) {
/* args 值示例
{
info:'0, 1, 2'
}
*/
console.log('获取当前用户所开启的全部认证方式成功');
})
@endsection
代理模块
代理请求模块,封装了与服务器进行数据交互的能力。
Proxy.request调用方式类似于$.ajax,可以与服务器进行文本数据交互。
Proxy.Download和Proxy.Upload可以和服务器之间进行文件的下载和上传,支持断点续传。这两个能力被封装成了类,需要 new 创建实例来使用。
注意 使用 Download和Upload能力前,必须先在KK管理台应用管理中对应应用的设置中设置 资源上传下载地址,使用能力时的下载地址/上传地址(只能是相对地址) 均相对于该地址。
(附资源上传下载地址所在的kk管理台位置)
kk.proxy.request(options)
代理请求,支持类似于 jQuery.ajax 的 promise 写法。调用该能力后返回一个 promise 对象。
options
类型: object
请求参数设置。当有多个请求的请求参数有共同的设置时,可以尝试使用 kk.proxy.requestSetup
来设置默认值。
options.url
类型: string
请求的URL。实际URL是管理台配置的地址和相对地址拼接起来的地址
options.data
类型:object/string
请求的参数,以JSON形式的Object或者字符串
options.contentType
类型: string
, 默认值 form
发送参数时的编码格式,可自定义。能力预定义了两个简写格式:form
/ json
,含义如下:
form
: 以普通表单形式发送请求体,默认值, 为格式application/x-www-form-urlencoded; charset=UTF-8
的缩写json
: 以JSON字符串形式发送请求体, 为格式application/json; charset=UTF-8
的缩写
options.dataType
类型: string
,可选值有text
/json
返回数据格式,为json
时,返回的数据就是一个json对象
options.beforeSend(options)
类型: function
, 可选
在发送请求前执行该函数,在此函数中可对请求参数进行处理
options.headers
类型: object
额外的http头
options.success(args)
类型: function
成功回调,接收一个对象 args
作为参数。 亦可以使用 promise 写法来传递成功回调。
args:
类型: string/object
返回数据类型 form
时对应类型是 string
,返回数据类型 json
时对应的类型是 object
options.error(code,msg)
类型: function
失败回调, 亦可以使用 promise 写法来传递失败回调。
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
102 |
代理请求失败,常见原因:1. KK服务器无法访问到接口服务器 2. 接口地址错误 3. 接口服务器无法正常访问(比如服务器响应500、403等错误) |
返回值: promise 对象
返回的 promise 对象具有以下方法
var promise = kk.proxy.request(...);
promise.then(done, [fail])
设置请求执行完成后的成功回调(done) 及 失败回调(fail), 接收的相关参数与 options.success 及 options.error 一致。
promise.done(done)
设置请求执行完成后的成功回调(done), 接收的相关参数与 options.success 一致。
promise.fail(fail)
设置请求执行完成后的失败回调(fail), 接收的相关参数与 options.error 一致。
promise.always(finally)
设置回调函数,当请求执行完后即执行, 不论成功或失败,均会执行。
基础用法
@section('代理请求示例代码')
//代理请求
kk.proxy.request({
url: '/remote-api-server-url',//请求的URL
data: {//请求的参数,JSON Object
"username": "landray",
"password": "connect"
},
dataType: 'json',//返回数据格式
success: function( res ){//成功回调
console.log(JSON.stringify(res));
},
error: function( code, msg ){//失败回调
console.log('代理请求失败,错误代码:' + code + ' ,错误信息: ' + msg );
}
});
@endsection
使用 promise 方式调用
@section('使用promise方式调用')
kk.proxy.request({
url: '/remote-api-server-url'
contentType: 'json',//参数的编码格式
dataType: 'json',//返回数据格式
headers: {//额外的http头
'Accept-Language': 'zh',
'Date': 'HTTP-date'
},
data: { //请求的参数,JSON Object
"username": "landray",
"password": "connect"
}
}).done(function(res){
// 处理返回结果
}).fail(function(code, msg)) {
console.log('错误信息:' + msg + ', 错误代码:' + code);
}).always(function(){
console.log('请求执行结束')
});
@endsection
使用
kk.proxy.requestSetup
设置默认请求参数
@section('代理请求:预先设定默认参数')
//如果多个请求参数相同,可以设置默认参数以简化请求
var req = kk.proxy.requestSetup({
contentType: 'json',//参数的编码格式
dataType: 'json',//返回数据格式
headers: {//额外的http头
'Accept-Language': 'zh',
'Date': 'HTTP-date'
},
beforeSend: function( options ) {
// 可在此处修改请求相关参数,比如修改请求地址
// options.url = '/api' + options.url
console.log('接口URL: ' + options.url)
},
error: function(code, msg){//失败回调
console.log('错误信息:' + msg + ', 错误代码:' + code);
}
});
//简化后的请求
req.request({
url: '/remote-api-server-url'; //请求的URL
data: { //请求的参数,JSON Object
"username": "landray",
"password": "connect"
},
success: function( res ){
console.log(JSON.stringify(res));
}
});
@endsection
kk.proxy.requestSetup(options)
设置 kk.proxy.request
请求的默认参数,返回设置后参数集合对象。当应用中所有的请求都有一样的请求设置时,即可用该函数设置默认参数,设置后会影响所有 kk.proxy.request
发起的请求。调用 kk.proxy.request
时若不设置相关值则使用默认参数,若设置了则使用设置的值。
options
类型: object
配置参数, 支持的配置内容与 kk.proxy.request
的 options 一样
kk.proxy.Upload(options, done, fail)
文件上传能力的构造函数,使用时需使用 new
创建实例后使用。
options
类型: object
配置参数
options.url
类型: string
文件上传至服务器的地址
options.path
类型: string
文件在本地地址
options.isContinuous
类型: boolean
是否断点续传,true
表示断点续传,默认false
done(args)
类型: function
成功回调,接收一个对象作为参数args
,上传过程中会不停调用该回调, 直至上传完成
args.progress
类型: number
文件已上传进度,0~100,当上传至100时表示上传完成
args.path
类型: string
文件在本地的地址,上传完成时才会有该属性
fail
类型: function
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
未连接到服务器 |
-2 |
文件本地地址为空 |
-3 |
和服务器交互发生异常 |
404 |
上传的文件不存在 |
其他数字 |
透传服务端错误码 |
@section('文件上传构造函数示例代码')
// 创建一个代理实例
var proxy = new kk.proxy.Upload({
url: '/upload/test.txt', //文件上传至服务器的地址
path: 'sdcard://upload.txt', //文件在本地地址
isContinuous: false //是否断点续传,默认不支持断点续传
}, function(res){
if(res.progress != 100){
console.log('上传进度:' + res.progress);
}else{
console.log('上传完成,文件地址:' + res.path);
}
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
// 开始上传
proxy.start();
// 暂停上传,注意,暂停是异步的,会有一点延时
proxy.pause();
// 恢复上传
proxy.resume();
// 停止上传,也是异步的
proxy.stop();
@endsection
kk.proxy.Download(options, done, fail)
文件下载能力的构造函数,使用时需使用 new
创建实例后使用。
options
类型: object
配置参数
options.url
类型: string
文件在服务器的地址
options.path
类型: string
文件保存到本地的地址
options.isContinuous
类型: boolean
,默认false
是否断点续传,true
表示断点续传
options.appearInFileManager
类型: boolean
,默认false
下载的文件是否在KK的文件管理器中显示, 默认为false
(不显示)
done(args)
类型: function
成功回调,接收一个对象 args
作为参数,下载过程中会不停调用该回调, 直至下载完成
args.progress
类型: number
文件已下载进度,0-100,当下载至100时表示下载完成
args.path
类型: string
文件在本地的地址,下载完成时才会有该属性
fail(code, msg)
类型: function
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
未连接到服务器 |
-2 |
文件本地地址为空 |
-3 |
和服务器交互发生异常 |
210 |
下载内容变了 |
其他数字 |
透传服务端错误码 |
@section('文件下载构造函数示例代码')
// 创建一个代理实例
var proxy = new kk.proxy.Download({
url: '/download/test.txt',//文件在服务器的地址
path: 'sdcard://download.txt',//文件在本地地址
isContinuous: false, //是否断点续传,默认false,不支持断点续传
appearInFileManager: false //下载的文件是否在KK的文件管理器中显示
}, function(res){
/*
res 值示例
{
retCode: 0,
progress: 100,
path: "sdcard://easymi/download.txt"
}
*/
if(res.progress != 100){
console.log('下载进度:' + res.progress);
}else{
console.log('下载完成,文件地址:' + res.path);
}
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
// 开始下载
proxy.start();
// 暂停下载,注意,暂停是异步的,会有一点延时
proxy.pause();
// 恢复下载
proxy.resume();
// 停止下载,也是异步的
proxy.stop();
@endsection
kk.proxy.toDownloadRecordList()
跳转到客户端原生文件管理器下载记录列表界面
@section('跳转到客户端原生文件管理器下载记录列表界面')
//跳转到客户端原生文件管理器下载记录列表界面
kk.proxy.toDownloadRecordList();
@endsection
文件压缩解压缩模块
文件压缩解压缩模块,提供了文件压缩和解压缩能力
kk.zip.zip(options, [done], [fail])
压缩文件(解压压缩的文件请调用能力的解压缩模块去解压)
options
类型: object
配置选项
options.folderPath
类型: string
要压缩的文件(夹)路径
options.filePaths
类型: array
要被压缩的多个文件(夹)的路径,每一项为字符串,中间用逗号分隔。如果folderPath参数提供了,本参数会被忽略。
options.zipFilePath
类型: string
压缩生成的zip文件路径
done(args)
类型: function
,可选
成功回调,返回一个对象 args
作为参数
args.zipFilePath
类型:string
压缩后的zip文件路径
args.FolderPath
类型:string
源文件(夹)的路径,Android无此属性
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
FolderPath对于native为空或者不存在 |
8 |
参数非法 |
9 |
压缩失败 |
@section('压缩文件示例代码')
kk.zip.zip({
folderPath: 'sdcard://test/zipFolder',
zipFilePath: 'sdcard://test/zipFolder.zip'
}, function(res){
console.log('压缩后的zip文件路径:' + res.zipFilePath);
console.log('需要压缩的文件夹:' + res.FolderPath);
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.zip.unzip(options, [done], [fail])
解压文件
options
类型: object
配置选项
options.zipFilePath
类型: string
需要解压文件(夹)的路径
options.outPath
类型: string
解压后的输出目录
done(args)
类型: function
,可选
成功回调,返回一个对象 args
作为参数
args.zipFilePath
类型: string
源压缩文件的路径,Android无此属性
args.outPath
类型: string
解压后的输出目录
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
zipFilePath对于native为空或者不存在 |
9 |
解压缩失败 |
@section('解压文件示例代码')
kk.zip.unzip({
zipFilePath: 'sdcard://test/zipFolder.zip',
outPath: 'sdcard://test/unzipFolder'
}, function(res){
console.log('需要解压文件的路径:' + res.zipFilePath);
console.log('解压后的输出目录:' + res.outPath);
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
文件操作模块
文件操作模块,封装了获取文件信息、查看文件、删除文件等功能
kk.file.getOSPath(filepath, done, [fail])
获取文件在操作系统上的路径,接收一个字符串 filepath
, done
表示成功回调, fail
表示失败回调。
filepath
类型: string
文件路径
done(args)
类型: function
成功回调,返回一个 args
对象作为参数
args.OSPath
类型: string
文件在系统上的路径
fail
类型: function
失败回调
@section('获取文件路径示例代码')
//获取文件在操作系统中的实际路径
kk.file.getOSPath('sdcard://kktest/fileTest.txt', function(res){
/*
res值示例
{OSPath:'kkapp://fil.o-1091-o.kk/storage/sdcard1/kktest/fileTest.txt'}
*/
console.log('文件在系统上的路径: ' + res.OSPath);
});
@endsection
kk.file.getFileInfo(filepath, done, [fail])
获取文件的基础信息,接收一个描述文件路径的字符串 filepath
,done
表示成功回调, fail
表示失败回调。
filepath
类型: string
文件路径
done(args)
类型: function
成功回调,返回一个对象 agrs
作为参数
agrs.name
类型: string
文件名称
agrs.size
类型: string
文件大小,单位byte
agrs.lastModifyTime
类型: string
文件最后修改时间,如20150629154714,表示最后修改时间是"2015年06月29日15时47分14秒
agrs.path
类型: string
文件的相对存储路径
agrs.isDir
类型: boolean
路径是否指向的是一个文件夹
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
@section('获取文件信息示例代码')
//获取文件信息
kk.file.getFileInfo('sdcard://kktest/fileTest.txt', function (info) {
/*info 值示例
{
name:'1.png',//文件名称
size: '809',//文件大小
lastModifyTime:'20170227160048',//文件最后修改时间
path:'/var/mobile/Containers/Data/Application/0D96B6DE-AB92-4D50-A522-26D4E5DDF016/Documents/easymi/1.png',//文件相对存储路径 (ios)
isDir:false//是否是文件夹
}
*/
}, function (code, msg) {
console.log('错误信息: ' + msg + ',错误代码:' + code);
});
@endsection
kk.file.exists(filepath, done, [fail])
判断文件是否存在,接收一个描述文件路径的字符串 filepath
, done
表示成功回调, fail
表示失败回调。
filepath
类型: string
文件路径
done(args)
类型: function
成功回调,返回一个对象args
作为参数
args.exists
类型: boolean
true
表示文件存在,false
表示文件不存在
fail
类型: function
,可选
失败回调
@section('判断文件是否存在示例代码')
//判断文件是否存在
kk.file.exists('sdcard://kktest/fileTest.txt', function( res ){
if( res.exists ){
console.log('文件存在');
}else{
console.log('文件不存在');
}
});
@endsection
kk.file.remove(filepath, [done], [fail])
删除文件,接收一个描述文件路径的字符串 filepath
, done
表示成功回调,fail
表示失败回调。
filepath
类型: string
文件路径
done
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 不能访问指定的路径 |
2 | 文件不存在 |
9 | 删除失败 |
@section('删除文件示例代码')
//删除文件
kk.file.remove('sdcard://kktest/fileTest.txt', function(){
console.log('删除文件成功');
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.file.view
该能力有两种调用形式:
- kk.file.view(filepath, [done], [fail]) 查看文件(简写形式),只传递链接地址或文件路径,其他参数使用默认配置;
- kk.file.view(options, [done], [fail]) 查看文件(配置形式),不仅传递文件路径,还传递详细参数配置
filepath
类型: string
文件路径,或链接地址
options
类型: object
配置参数对象
options.filepath
类型: string
文件路径
options.via
类型: string
使用什么方式查看,可选值有四个,默认是 auto
auto
wps
pdf
webview
options.mode
类型: string
文件打开的方式,可选值有两个,默认是 readonly
readonly
(只读)edit
(编辑)
options.title
类型:string
页面上的标题,此参数仅在使用webview(KK客户端)打开时有效
options.mimeType
类型: string
文件的类型,如果不传,从文件名分析
done(args)
类型: function
,可选
成功回调
注: 用户使用 WPS/PDF 查看文档时, 对文档进行打开、保存及关闭操作均会触发成功回调。
args.filepath
类型: string
文件的相对路径
args.operation
类型: string
对文档的操作类型,仅在调用能力时传递了via参数并且值是 wps
或者pdf
,才会返回该值,并且只返回该值。
open
:打开文档;save
:保存文档;
注: 若文档在 WPS/PDF 中编辑时多次保存,则会多次触发成功回调,且 args.operation
均为 save
。
args.mimeType
类型: string
文件的类型(仅在调用能力时参数 filepath
是链接(url)或者配置形式传递了mimeType参数,才会返回该值)
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 文件不存在 |
-2 | 未安装wps |
-3 | 文档保存失败 |
-4 | 无效的license,需要在kk控制台配置license,请联系管理员 |
-6 | wps/pdf发生错误 |
-7 | wps正忙,请稍后重试 |
-8 | 用户没有使用权限 |
-9 | 没有打包 |
补充:
android设备:
在简写形式下,如果传的filepath是链接形式(例如:http://www.baidu.com),则一定是用webview方式打开;如果传的filepath是路径形式,则是用外部应用方式打开;
在配置形式下,如果没有传via参数,都是以外部应用方式打开
ios设备:参数如果没有传via参数, 则会根据路径kk控制台-系统管理-基础功能配置-IOS客户端文件打开配置-打开方式
去打开文件
二者(android设备&&ios设备):参数传via参数,都是会以via参数对应的方式去打开文件
(附ios配置方式在控制台的地址:)
@section('查看链接')
//查看链接(简写形式)
kk.file.view('http://kk5.landray.com.cn:6789/', function (res) {
console.log('查看链接');
}, function (code, msg) {
console.log('错误信息:' + msg + ',错误代码:' + code);
});
//等同于 =>
//查看链接(配置形式)
kk.file.view({
filepath: 'http://kk5.landray.com.cn:6789/',
via: 'webview' // 使用webview查看链接
}, function (res) {
console.log('查看链接');
}, function(code, msg) {
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
@section('根据路径查看文件')
//根据路径查看文件(简写形式)
kk.file.view('sdcard://kktest/fileTest.txt', function () {
console.log('在Andriod设备下直接使用外部应用打开文件,在IOS设备下则根据控制台配置的打开方式打开');
}, function (code, msg) {
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
@section('使用wps查看本地文件')
//查看文件(配置形式)
kk.file.view({
filepath: 'sdcard://kktest/fileTest.txt',
via: 'wps', // 使用wps方式查看
mode: 'readonly' // 只读模式
}, function (res) {
console.log(res.operation); // 使用wps方式查看文件,回调只返回operation字段
}, function(code, msg) {
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
@section('使用pdf查看本地pdf文件')
//查看文件(配置形式)
kk.file.view({
filepath: 'sdcard://easymi/fileTest.pdf',
via: 'pdf', // 使用pdf方式查看
}, function (res) {
console.log(res.operation); // 使用pdf方式查看文件,回调只返回operation字段
}, function(code, msg) {
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.file.readAsText
该能力有两种调用形式:
kk.file.readAsText(filepath, done, [fail]) 直接读取文件内容
kk.file.readAsText(options, done, [fail]) 配置相关参数读取文件内容
filepath
类型: string
文件路径
options
类型: object
包含文件路径以及编码方式的对象,默认'utf-8'方式编码
options.encoding
类型: string
编码方式
options.filepath
类型: string
文件路径
done(args)
类型: function
成功回调
args.content
类型: string
接收有 content
属性的对象作为参数,content
为文本内容
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
9 | 没有查看权限 |
@section('直接读取文件内容')
//直接读取文件内容
kk.file.readAsText('sdcard://kktest/fileTest.txt', function (res) {
console.log('文本内容:' + res.content);
}, function (code, msg) {
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
@section('配置参数读取文件内容')
//根据编码读取文件内容
kk.file.readAsText({
encoding: 'BIG5', // 选填,默认为utf-8
filepath: 'sdcard://kktest/fileTest.txt'
}, function (res) {
console.log('文本内容:' + res.content);
}, function (code, msg) {
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.file.readAsBase64(filepath, done, [fail])
读取文本文件内容,将文件转换base64字符串
filepath
类型: string
文件路径
done(args)
类型: function
成功回调
args.content
类型:string
接收有content属性的对象作为参数,content为base64字符串
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
-9 | 文件路径为目录(仅限android) |
@section('将文件转换base64字符串示例代码')
// 读取文件内容
kk.file.readAsBase64('sdcard://kktest/fileTest.jpg', function(res){
var imgData = 'data:image/jpeg;base64,' + res.content;
// 在此即可将图片的src设置为 imgData, 图片即可显示
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.file.copy(options, [done], [fail])
拷贝文件(IOS可以拷贝文件,文件夹;Android可以拷贝文件,但不能拷贝文件夹)
options
类型: object
包含源文件路径及目标路径的对象
options.source
类型:string
源文件路径,必填
options.target
类型:string
目标的路径,必填
done
类型: function
,可选
成功回调,没有回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
9 | 文件拷贝发生错误 |
@section('拷贝文件示例代码')
//拷贝文件
kk.file.copy({
source: 'sdcard://kktest/test.txt',
target: 'sdcard://kktest/file/test.txt'
}, function () {
console.log('拷贝文件成功');
}, function (code, msg) {
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.file.chooseFile(done, [fail])
从文件管理器选择一个文件
done(args)
类型: function
成功回调,回调参数是一个包含路径的对象
args.filePath
类型: string
选择的文件的路径
args.fileUri
类型: string
选择的文件的Uri
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 用户取消 |
@section('从文件管理器选择一个文件示例代码')
//从文件管理器选择一个文件
kk.file.chooseFile(function (res) {
console.log('选择的文件的路径' + res.filePath);
console.log('选择的文件的Uri' + res.fileUri);
}, function (code, msg) {
console.log('从文件管理器选择一个文件,错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.file.chooseFileMulti(done, [fail])
从文件管理器选择多个文件
done(args)
类型: function
成功回调,回调参数是一个文件对象数组
args.files
类型: array
选择的文件对象数组
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 用户取消 |
@section('从文件管理器选择多个文件示例代码')
//从文件管理器选择多个文件
kk.file.chooseFileMulti(function (res) {
/**
* res:[{
* filePath: '',
* fileUri: '',
* fileName: ''
* }]
*/
}, function (code, msg) {
console.log('从文件管理器选择多个文件,错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.file.canUseJinGe(done, [fail])
用户是否有使用金格的权限
done(args)
类型: function
成功回调,回调参数是一个包含权限信息的对象
args.pdf
类型: boolean
是否有使用金格pdf的权限, 有权限为true
args.office
类型: boolean
是否有使用金格office的权限, 有权限为true
args.ofd
类型: boolean
是否有使用金格ofd的权限, 有权限为true
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
暂无资料 | 暂无资料 |
@section('用户是否有使用金格的权限示例代码')
//用户是否有使用金格的权限
kk.file.canUseJinGe(function (res) {
console.log('用户是否有使用金格pdf的权限:' + res.pdf);
console.log('用户是否有使用金格office的权限:' + res.office);
console.log('用户是否有使用金格ofd的权限:' + res.ofd);
}, function (code, msg) {
console.log('用户是否有使用金格的权限出错,错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.file.saveFileContent(options, done, fail)
把一段内容保存到指定文件
options
类型: object
配置参数
options.filepath
类型: string
必填,文件路径
options.contentType
类型: number
选填,1,文本;2,二进制base 64。默认为1
options.content
类型: string
必填,内容。contentType为1,为文本内容字符串。contentType为2,Base64字符串
options.encode
类型: number
选填,编码方式,默认utf-8。contentType=1有效
options.override
类型: boolean
选填,如果指定文件路径的文件已经存在,是否覆盖。true/false。默认为false
done(args)
类型: function
成功回调,无回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 文件已存在(override为flase时才可能) |
2 | 参数非法 |
8 | 推送消息不存在 |
9 | 写文件出错 |
@section('把一段内容保存到指定文件')
// 把一段内容保存到指定文件
kk.file.saveFileContent({
filepath: 'sdcard://media/photo/multi/101.txt',
contentType: 1,
content: '1234',
encode: 'utf-8',
override: true
}, function() {
// 成功回调,无成功回调参数
}, function(code, msg) {
console.log('失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.file.onlineReadFile(options)
在线预览文件
options
类型: object
配置参数
options.url
类型: string
必填,文件地址
options.fileName
类型: string
必填,文件名称
@section('在线预览文件')
// 在线预览文件
kk.file.onlineReadFile({
url: 'https://media/photo/multi/101.txt',
fileName: '101.txt'
});
@endsection
kk.file.getOnlineReadUrl(options, done, fail)
获取转换后的url,可以直接加载该url进行文件预览。
options
类型: object
配置参数
options.fileName
类型: string
必填,文件名称
options.uri
类型: string
必填,文件uri(dfs相对路径 或 http/https协议的绝对url)
done(args)
类型: function
args.resultUrl
类型: string
在线预览服务转换好的url,问号参数的值经过UrlEncode使用utf-8字符集进行编码
fail(code,msg)
类型: function
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 | 参数不合法(两个参数都必须填) |
-2 | 转换失败 |
-3 | 其他错误,具体错误的描述信息通过errMsg返回 |
@section('获取转换后的url,可以直接加载该url进行文件预览')
// 获取转换后的url,可以直接加载该url进行文件预览
kk.file.getOnlineReadUrl({
fileName: '101.txt',
uri: '文件uri(dfs相对路径 或 http/https协议的绝对url)'
}, function(res) {
console.log('在线预览url:', res.resultUrl);
}, function(code, msg) {
console.log('失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
定位模块
封装了地理定位的能力
kk.location.getLocation(options, done, [fail])
获取当前位置的坐标信息,包括经度、纬度、海拔
options
类型: object
,可选
配置参数
options.type
类型: string
,可选
type: GPS/Cell。定位方式,通过GPS/百度定位。默认为百度定位。
options.subType
类型: string
,可选
subType: baidu/gaode。仅作用于type=Cell的定位方式。不填情况下,缺省使用百度进行定位, 如果subType的值不是以上两种之一,返回3参数非法; 使用百度定位的结果为百度坐标系,使用高德定位结果使用高德坐标系(kk客服端7060新增)
done(args)
类型: function
成功回调,接收一个对象 args
作为参数
args.longitude
类型: string
经度
args.latitude
类型: string
纬度
args.altitude
类型: string
海拔
args.virtualLocationSuspect
类型: boolean
标识是否有虚拟定位的嫌疑,true
表示有, false
或undefined
表示没有。默认为undefined
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
3 | 参数非法 |
9 | 没有开启定位功能 |
@section('获取当前位置示例代码')
//获取当前位置
kk.location.getLocation({
type: 'cell'
}, function( res ){
/* res 值示例
{
longitude:'113.946687',//经度
latitude:'22.546562',//纬度
altitude:'4.9E-324'//altitude
}
*/
}, function (code, msg) {
console.log('获取当前位置失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.location.navigate(option, [done], [fail])
使用第三方应用开启导航
option
导航配置参数
option.fromAddress
类型: string
,可选
出发地地址(建筑物名称)
option.targetLongitude
类型: number
,必填
目的地经度
option.targetLatitude
类型: number
,必填
目的地纬度
option.targetAddress
类型: string
,必填
目的地地址(建筑物名称)
option.coordinateType
类型: number
可选,默认值是2
(百度坐标)
坐标类型, 可选值有
1
(火星坐标)2
(百度坐标)3
(手机系统坐标)
done()
类型: function
,可选
成功回调,无回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 用户取消 |
2 | 无可用的导航应用 |
@section('使用第三方应用开启导航示例代码')
// 使用第三方应用开启导航
kk.location.navigate({
fromAddress: '中钢大厦',
targetLongitude: 113.9410519639,
targetLatitude: 22.5461478801,
targetAddress: '腾讯大厦',
coordinateType: 2 // 百度坐标
}, function() {
console.log('导航成功');
}, function (code, msg) {
console.log('导航失败, code: ' + code +' ,msg: ' + msg );
});
@endsection
kk.location.navigateDirectly(option, [done], [fail])
可自定义出发地使用第三方应用开启导航
option
导航配置参数
option.fromLongitude
类型: string
,必填
出发地经度
option.fromLatitude
类型: string
,必填
出发地纬度
option.fromAddress
类型: string
,可选
出发地地址(建筑物名称)
option.targetLongitude
类型: number
,必填
目的地经度
option.targetLatitude
类型: number
,必填
目的地纬度
option.targetAddress
类型: string
,可选
目的地地址(建筑物名称)
option.coordinateType
类型: number
可选,默认值是2
(百度坐标)
坐标类型, 可选值有
1
(火星坐标)2
(百度坐标)3
(手机系统坐标)
option.mapType
类型: number
可选,默认值是1
(高德)
导航地图类型, 可选值有
1
(高德)2
(百度)3
(腾讯)
done()
类型: function
,可选
成功回调,无回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 用户取消 |
2 | 无可用的导航应用 |
3 | GPS/定位功能未打开 |
4 | 参数非法 |
@section('使用可自定义出发地使用第三方应用开启导航示例代码')
// 使用可自定义出发地使用第三方应用开启导航
kk.location.navigateDirectly({
fromLongitude: 110.9410519639,
fromLatitude: 20.5461478801,
fromAddress: '中钢大厦',
targetLongitude: 113.9410519639,
targetLatitude: 22.5461478801,
targetAddress: '腾讯大厦',
coordinateType: 2, // 百度坐标
mapType: 1 //高德地图
}, function() {
console.log('导航成功');
}, function (code, msg) {
console.log('导航失败, code: ' + code +' ,msg: ' + msg );
});
@endsection
kk.location.startSubmitLocation(option, [done], [fail])
开始上报位置
option
配置参数
option.service_id
类型: string
,必填
百度鹰眼服务ID
option.interval
类型: number
,必填(单位秒)
上报时间间隔
done()
类型: function
,可选
成功回调,无回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 | 找不到百度鹰眼SDK |
2 | 启动百度鹰眼SDK失败 |
4 | 参数非法 |
@section('开始上报位置示例代码')
// 开始上报位置
kk.location.startSubmitLocation({
service_id: '110',
interval: 30
}, function() {
console.log('上报位置成功');
}, function (code, msg) {
console.log('上报位置, code: ' + code +' ,msg: ' + msg );
});
@endsection
kk.location.stopSubmitLocation(option, [done], [fail])
结束上报位置
option
无配置参数
done()
类型: function
,可选
成功回调,无回调参数
fail(code,msg)
类型: function
,可选
失败回调,无回调参数
code
类型: number
错误代码
msg
类型: string
错误信息
@section('结束上报位置示例代码')
// 结束上报位置
kk.location.stopSubmitLocation(function() {
console.log('结束上报位置成功');
}, function (code, msg) {
console.log('结束上报位置, code: ' + code +' ,msg: ' + msg );
});
@endsection
历史记录模块
历史记录模块,提供操作webview历史记录的能力(前进、后退等)
kk.history.canGo(done)
获取当前页面是否可以进行前进及后退操作
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.canGoBack
类型: boolean
是否能够后退
args.canGoForward
类型: boolean
是否能能够前进
@section('判断是否可以前进及后退示例代码')
//判断是否可以前进及后退
kk.history.canGo(function( res ){
if( res.canGoBack ){
console.log('页面可后退')
}else{
console.log('页面不可后退')
}
if( res.canGoForward ){
console.log('页面可前进');
}else{
console.log('页面不可前进');
}
});
@endsection
kk.history.hasPrev(done)
判断当前页面是否有上一页
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.hasPrev
类型: boolean
是否有上一页,true 为有上一页
@section('判断是否有上一页示例代码')
//判断是否有上一页
kk.history.hasPrev(function(res){
if(res.hasPrev){
console.log('页面有上一页');
}else{
console.log('页面没有上一页');
}
});
@endsection
kk.history.back([fail])
返回到上一页
fail
类型: function
,可选
失败回调,如果没有上一页,则会调用该函数,该函数不接受参数
@section('返回上一页示例代码')
//返回上一页
kk.history.back( function(){
console.log('当前页不能做返回操作');
});
@endsection
kk.history.forward([fail])
前进到下一页
fail
类型: function
,可选
失败回调,如果没有下一页,则会调用该函数,该函数不接受参数
@section('前往下一页示例代码')
//前进下一页
kk.history.forward( function(){
console.log('当前页不能做跳转下一页操作');
});
@endsection
扫描器模块
扫描器模块提供扫描二维码、条形码及生成二维码的能力
kk.scaner.scanBarCode(done, [fail])
扫描条形码
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.code
类型: string
条形码的内容
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
用户取消 |
-10000 |
设备没有权限(仅限android, IOS没有提示) |
1 |
设备不支持 |
@section('扫描条形码示例代码')
//扫描条形码
kk.scaner.scanBarCode(function(res){
/*res 值示例
{
retCode:0,
code:'http://baike.baidu.com'//条形码内容
}
*/
});
@endsection
kk.scaner.scanTDCode(done, [fail])
扫描二维码
done(args)
类型: function
成功回调,返回一个对象 args
作为参数
args.code
类型: string
二维码的内容
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
用户取消 |
-10000 |
设备没有权限(仅限android, IOS没有提示) |
1 |
设备不支持 |
@section('扫描二维码示例代码')
//扫描二维码
kk.scaner.scanTDCode(function(res){
console.log('二维码内容:' + res.code);
});
@endsection
kk.scaner.getQRCode(options, [done], [fail])
生成二维码图片,图片格式为png
options
类型: object
生成二维码的配置项
options.content
类型: string
二维码内容
options.targetSize
类型: number
输出的正方形图片的边长,范围:50-800
options.destinationType
类型: string
,可选值:file/data
文件输出形式
options.savePath
类型: string
输出类型为file时有效,不指定则随机文件名保存至 sdcard://easymi/
目录下
done(args)
类型: function
,可选
成功回调,返回一个对象 args
作为参数
args.imageURI
类型: string
处理后的文件保存路径(当destinationType为file时,返回此属性)
args.imageFileOSPath
类型: string
处理后的文件的操作系统路径(当destinationType为file时,返回此属性)
args.imageData
类型: string
图片内容的base编码(当destinationType为data时,返回此属性)
fail
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
9 |
生成失败 |
999 |
参数错误 |
@section('生成二维码示例代码')
//生成二维码
kk.scaner.getQRCode({
content: '蓝凌软件股份有限公司',
targetSize: 100,
destinationType: 'file',
savePath: 'sdcard://easymi/1.png'
}, function(res){
/* res 值示例
{
imageURI:'sdcard://easymi/1.png',//二维码处理后的文件保存路径
imageFileOSPath:'kkapp://fil.o-1091-o.kk/storage/sdcard1/easymi/1.png'//二维码处理后的文件的操作系统路径
}
*/
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
kk.scaner.scanIDCard([options], done, [fail])
身份证扫描识别
注意: 只有当你使用的客户端在打包时有选择 OCR
能力时才能成功调用, 若不确定, 请联系项目经理确认.
options
类型: object
,可选
提示信息的配置项
options.hint
类型: string
扫描界面上的提示信息
done(args)
类型: function
成功回调,返回一个对象 args 作为参数(如果扫描的是身份证的正面,反面信息也会返回,但是是以空字符串形式返回;如果扫描的是身份证的反面,正面信息也会返回,同样也是以空字符串返回)
args.isFront
类型: boolean
当前扫描的是否为身份证正面,true
即为正面
args.name
类型: string
姓名(仅扫描正面时该字段有值)
args.sex
类型: string
性别(仅扫描正面时该字段有值)
args.national
类型: string
民族(仅扫描正面时该字段有值)
args.birthday
类型: string
生日, 格式和身份证上面的一样 (仅扫描正面时该字段有值)
args.address
类型: string
住址(仅扫描正面时该字段有值)
args.idcard
类型: string
身份证号码(仅扫描正面时该字段有值)
args.issue
类型: string
签发机构(仅扫描反面时该字段有值)
args.validity
类型: string
身份证有效期(仅扫描反面时该字段有值)
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
能力未获得授权,无法使用。若提示该错误信息,请联系蓝凌客户端研发部 |
-2 |
用户取消 |
-8 |
没有相机权限 |
-9 |
OCR程序出错 |
@section('扫描身份证示例代码')
// 扫描身份证
kk.scaner.scanIDCard({
hint: '请扫描身份证'
}, function(res){
/*res值示例
* 扫描正面时的示例
{
"isFront": true, // 正面
"name":"庞xx", // 姓名
"sex":"女", //性别
"national":"汉", //民族
"birthday":"1989年9月20日", //生日
"address":"安徽省蒙城县乐生镇杨桥村武庄xx号", // 住址
"idcard":"3412341989092041xx", //身份证号码
"issue":"", //签发机构
"validity":"" //身份证有效期
}
* 扫描反面时的示例
{
"isFront": false,
"name": "",
"sex": "",
"national": "",
"birthday": "",
"address": "",
"idcard": "",
"issue": "町县公安局",
"validity": "2009.12.21-2029.12.21"
}
*/
console.log(res);
}, function(code, msg){
console.log('扫描身份证错误信息:' + msg + ', 错误代码:' + code);
})
@endsection
kk.scaner.scanVLCard([options], done, [fail])
车辆行驶证扫描识别
注意: 只有当你使用的客户端在打包时有选择 OCR
能力时才能成功调用, 若不确定, 请联系项目经理确认.
options
类型: object
,可选
提示信息的配置项
options.hint
类型: string
扫描界面上的提示信息
done(args)
类型: function
成功回调,返回一个对象 args 作为参数
args.plateNo
类型: string
车辆号牌号码
args.type
类型: string
车辆类型
args.owner
类型: string
车辆所有人
args.address
类型: string
住址
args.useCharacter
类型: string
车辆使用性质
args.model
类型: string
车辆品牌型号
args.vin
类型: string
车辆识别代号
args.engineNo
类型: string
车辆发动机号码
args.registerDate
类型: string
行驶证注册日期。格式和证件上一样。
args.issueDate
类型: string
行驶证发证日期。格式和证件上一样。
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
能力未获得授权,无法使用。若提示该错误信息,请联系蓝凌客户端研发部 |
-2 |
用户取消 |
-8 |
没有相机权限 |
-9 |
OCR程序出错 |
@section('扫描车辆行驶证示例代码')
// 扫描车辆行驶证
kk.scaner.scanVLCard({
hint: '请扫描车辆行驶证'
}, function(res){
/*res值示例
{
plateNo: "京BU89xx", //车辆号牌号码
type: "小型轿车", //车辆类型
owner: "焦xx", //车辆所有人
address: "河南省腾山市丰风区右家坞镇石嘉窝村塘五区xx籍xx号", // 住址
useCharacter: "非营运", // 车辆使用性质
model: "大众牌PV7126VOMUxx", //车辆品牌型号
vin: "PV2B1107F873694xx", // 车辆识别代号
engineNo: "Y265xx", //车辆发动机号码
registerDate: "2016-01-08", //行驶证注册日期
issueDate: "2016-01-08" //行驶证发证日期
}
*/
console.log(res);
}, function(code, msg){
console.log('扫描车辆行驶证错误信息:' + msg + ', 错误代码:' + code);
})
@endsection
kk.scaner.scanDLCard([options], done, [fail])
驾驶证扫描识别
注意: 只有当你使用的客户端在打包时有选择 OCR
能力时才能成功调用, 若不确定, 请联系项目经理确认.
options
类型: object
,可选
提示信息的配置项
options.hint
类型: string
扫描界面上的提示信息
done(args)
类型: function
成功回调,返回一个对象 args 作为参数
args.id
类型: string
驾驶证号
args.name
类型: string
姓名
args.sex
类型: string
性别
args.national
类型: string
国籍
args.address
类型: string
住址
args.birthday
类型: string
出生日期,格式和证件上一样。
args.issuedate
类型: string
驾驶证初次领证日期,格式和证件上一样。
args.drivetype
类型: string
驾驶证准驾车型
args.validfrom
类型: string
驾驶证有效起始日期,格式和证件上一样。
args.validfor
类型: string
驾驶证有效结束日期,格式和证件上一样。
args.validity
类型: string
驾驶证有效期限
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
能力未获得授权,无法使用。若提示该错误信息,请联系蓝凌客户端研发部 |
-2 |
用户取消 |
-8 |
没有相机权限 |
-9 |
OCR程序出错 |
@section('扫描驾驶证示例代码')
// 扫描车辆行驶证
kk.scaner.scanDLCard({
hint: '请扫描驾驶证'
}, function(res){
/*res值示例
{
id: "3310811992122700xx", //驾驶证号
birthday: "1992-12-27", //出生日期
sex: "男", //性别
address: "浙江省温岭市太平街道香底胡路49冀物岭新村xx号", // 住址
validity: "6年", // 驾驶证有效期限
issuedate: "2012-10-08", //驾驶证初次领证日期
national: "中国", //国籍
validfor: null, //驾驶证有效结束日期
name: "院xx", //姓名
validfrom: "2012-10-08" //驾驶证有效起始日期
drivetype: "C1" //驾驶证准驾车型
}
*/
console.log(res);
}, function(code, msg){
console.log('扫描驾驶证错误信息:' + msg + ', 错误代码:' + code);
})
@endsection
kk.scaner.scanBankCard([options], done, [fail])
银行卡扫描识别
注意: 只有当你使用的客户端在打包时有选择 OCR
能力时才能成功调用, 若不确定, 请联系项目经理确认.
注意: 只有当你使用的客户端在打包时有选择 OCR
能力时才能成功调用, 若不确定, 请联系项目经理确认.
options
类型: object
,可选
提示信息的配置项
options.hint
类型: string
扫描界面上的提示信息
done(args)
类型: function
成功回调,返回一个对象 args 作为参数
args.bankCardType
类型: string
银行卡类型,有以下类型:
0
: 未知1
: 贷记卡2
: 借记卡3
: 准贷记卡
args.creditCardType
类型: string
信用卡类型,有以下类型:
0
: 未知1
: Visa2
: MasterCard3
: Maestro4
: AmericanExpress5
: DinersClub6
: Discover7
: JCB8
: 银联
args.cardNumber
类型: string
卡号
args.expiryDate
类型: string
过期时间
args.holderName
类型: string
持卡人
args.bankName
类型: string
银行名
args.bankID
类型: string
发卡银行ID
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
能力未获得授权,无法使用。若提示该错误信息,请联系蓝凌客户端研发部 |
-2 |
用户取消 |
-8 |
没有相机权限 |
-9 |
OCR程序出错 |
@section('扫描银行卡示例代码')
// 扫描银行卡
kk.scaner.scanBankCard({
hint: '请扫描银行卡'
}, function(res){
/*res值示例
{
bankName: "中国银行", //银行名
bankID: "01040000", //发卡机构ID
expiryDate: "07/17", //过期时间
creditCardType: "2", // MasterCard,信用卡类型
bankCardType: "3", //准贷记卡,银行卡类型
holderName: "LIGOIZHENxx", //持卡人
cardNumber: "5257 4631 5873 xxxx", // 卡号
}
*/
console.log(res);
}, function(code, msg){
console.log('扫描银行卡错误信息:' + msg + ', 错误代码:' + code);
})
@endsection
kk.scaner.scanText([options], done, [fail])
识别文字(只支持ascii字符)
注意: 只有当你使用的客户端在打包时有选择 OCR
能力时才能成功调用, 若不确定, 请联系项目经理确认.
options
类型: object
,可选
识别文字的配置项
options.targetWidth
类型: number
,可选
扫描框宽度,默认值是屏幕宽度-20
options.targetHeight
类型: number
,可选
扫描框高度,默认值是50
options.regular
类型: string
,可选
扫描结果检查正则表达式
done(args)
类型: function
成功回调,返回一个对象 args 作为参数
args.resultText
类型: string
扫描出来的文字
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
能力没有提供 |
-2 |
用户取消 |
-8 |
没有相机权限 |
@section('识别文字示例代码')
// 识别文字
kk.scaner.scanText({
targetHeight: 50,
regular: '[0-9A-Za-z]+'
}, function(res){
/*res值示例
{
resultText: '123abc'
}
*/
console.log(res);
}, function(code, msg){
console.log('识别文字错误信息:' + msg + ', 错误代码:' + code);
})
@endsection
分享模块
封装了分享消息至指定客户端(如微信好友, kk等)的功能
kk.share.to
该能力有三种调用方式:
kk.share.to(dest, [done], [fail])
分享到客户端当前链接。
若当前应用为在线应用,则分享当前页面链接;
若当前应用为混合应用,则会调用内部getAppShareLink
方法获取当前应用的链接kk.share.to(dest, url, [done], [fail])
分享指定的链接kk.share.to(dest, options, [done], [fail])
根据配置进行分享,若分享文本消息至kk
时, options可简写成文本消息字符串
dest
类型: string
指定的客户端,目前可选值有 weixin
(微信), kk
(同事)
url
类型: string
,可选
指定要分享的链接
options()
类型: object
相关参数,分享至weixin
与kk
参数不同
options(weixin)
options.shareTo
类型: string
,可选
分享到哪儿,值为friends
(微信好友)或者moments
(朋友圈),不填默认微信好友
options.url
类型: string
,可选
卡片式消息的链接, 不填写则默认分享当前页面
options.title
类型: string
,可选
卡片式消息的标题
options.content
类型: string
, 选填
卡片式消息的摘要
options.imageUri
类型: string
, 选填
分享缩略图。支持http(s)协议,以及KK协议路径。如果不填则分享链接里面获取, 微信缩略图大小限制为32KB。
options(kk)
options.recieverType
类型: string
当recieverList有值时必填,指定接收方类型,可选值有
user
(同事)group
(群组)session
(当前会话)discuss
(讨论组)
options.type
类型: string
,可选
指定消息类型,默认值为 text
,可选值有
text
(文本消息)card
(卡片消息)biz
(业务消息)file
(业务消息)
options.recieverList
类型: string|array
,选填
recieverType为 user
时,列表内容为接收方的userID
recieverType为 group
或discuss
时,列表内容为接收方的groupID
recieverType为session
时,列表内容为接收方的sessionID
options.showChooseView
类型: boolean
选填,是否手动选择接收者。若该值为 true
,则会拉起选人界面; 若该值为 false
,且在recieverList指定了接收者,则会直接发送消息。默认为 true
options.content
类型: string
type为 text
时表示文本消息正文,必填
type为 card
时表示卡片消息的摘要,必填
type为 biz
时表示消息内容,必填
options.imageUri
类型: string
type为 card
时表示消息图标,选填,不填则认为是应用图标
options.url
类型: string
type为 card
|biz
时表示消息的链接,必填
options.title
类型: string
type为 card
|biz
时表示消息的标题,必填
options.bizType
类型: number
type为biz
时表示业务类型,必填,可选值有
1
(任务)2
(日程)
options.summary
类型: string
type为 card
时表示消息的摘要,必填
type为 biz
时表示消息的摘要,必填
options.attachmentType
类型: number
type为 biz
时表示附件类型,选填,可选值有
1
(图片)2
(文件)
options.attachmentName
类型: string
type为 biz
时表示附件名称,选填
options.attachmentUrl
类型: string
type为 biz
时表示附件http地址,选填
options.attachmentSize
类型: string
type为 biz
时表示附件大小,单位为byte,选填
done
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
页面不能分享 |
2 |
分享被外部系统拒绝 |
9 |
发生其他错误 |
-1 |
用户取消 |
-2 |
网络连接不可用 |
-6 |
参数错误 |
@section('分享当前链接至微信')
// 方法内部会自动判断当前应用类型,
// 若应用类型为混合应用,则会调用内部getAppShareLink方法获取应用的链接地址
// 若应用类型为在线应用,则分享的链接为当前页面的链接地址,即location.href
kk.share.to('weixin', function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
@section('分享到朋友圈')
kk.share.to('weixin', {
shareTo: 'moments',
url: 'http://kk5.landray.com.cn:6789/'
}, function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
@section('分享链接至微信好友')
//分享链接至微信好友
kk.share.to('weixin', 'http://kk5.landray.com.cn:6789/', function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
//等同于 =>
kk.share.to('weixin', {
url: 'http://kk5.landray.com.cn:6789/'
}, function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
@section('分享当前链接至KK')
// 方法内部会自动判断当前应用类型,
// 若应用类型为混合应用,则会调用内部getAppShareLink方法获取应用的链接地址
// 若应用类型为在线应用,则分享的链接为当前页面的链接地址,即location.href
kk.share.to('kk', function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
@section('分享链接至KK')
//分享链接至KK
kk.share.to('kk', 'http://kk5.landray.com.cn:6789/', function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
//等同于 =>
kk.share.to('kk', {
url: 'http://kk5.landray.com.cn:6789/',
type: 'card'
}, function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
@section('分享文本消息至KK')
//分享文本消息至KK
kk.share.to('kk', '一条文本消息', function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
//等同于 =>
kk.share.to('kk', {
content: '一条文本消息',
type: 'text'
}, function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
@section('分享文本消息至指定的KK同事')
//分享至KK时,默认的流程是需要进行选择接收的人员,可通过以下配置直接发送
//该示例演示的是直接发送文本消息,应用消息类同
kk.share.to('kk', {
content: '一条文本消息',
type: 'text',
showChooseView: false,
recieverType: 'user',
recieverList: [200000, 200003]
}, function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
@section('分享业务消息至KK')
//分享业务消息至KK
kk.share.to('kk', {
recieverType: 'user',
type: 'biz',
bizType: 1,//1:任务,2:日程
title: '消息标题'
content: '消息内容',
url: '点击消息打开的url',
summary: '摘要信息',
attachmentType: 1, //1:图片,2:文件
attachmentName: '附件名称',
attachmentUrl: '附件http地址',
attachmentSize: '附件大小'
}, function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
@section('分享文件消息至KK')
// 分享文件消息至KK
// 注意:uri和localPath至少传递一个
// 注意文件消息暂时只支持分享到KK
kk.share.to('kk', {
type: 'file',
showChooseView: false,
recieverType: 'user',
recieverList: [200000, 200003],
uri: '资源uri (http/https/dfs_uri)',
localPath: '资源本地路径(协议路径)',
size: '文件大小',
fileName: '文件名称'
}, function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
kk.share.appMessage(options, [done], [fail])
分享应用至KK
options
类型: object
相关参数
options.data
类型: object
选填,附带参数。通过分享的应用消息进入应用后,可在 kk.ready
的参数中获取data的内容
options.title
类型: string
必填,消息标题
options.content
类型: string
必填,消息摘要
options.targetPlatform
类型: string
选填,可打开该应用的目标平台,可选值有 ios
(iOS系统), android
(安卓系统), mobile
(移动端), desktop
(PC端), universal
(所有平台),默认值为 mobile
options.targetType
类型: string
选填,目标平台类型,可选值有 pad
(平板类), phone
(手机类), universal
(通用类),默认值为 universal
options.recieverType
类型: string
当recieverList有值时必填,指定接收方类型,可选值有 user
(同事), session
(当前会话)
options.recieverList
类型: string|array
选填,接收方列表,列表内容为接收方的ID,即如果recieverType为 user
时,列表各项内容为相应的userID
options.showChooseView
类型: boolean
选填,是否手动选择接收者。若该值为 true
,则会拉起选人界面; 若该值为 false
,且在recieverList指定了接收者,则会直接发送消息。默认为 true
done
类型: function
,可选
成功回调
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
页面不能分享 |
2 |
分享被外部系统拒绝 |
9 |
发生其他错误 |
-1 |
用户取消 |
-2 |
网络连接不可用 |
-6 |
参数错误 |
@section('分享应用至KK示例代码')
//分享应用至KK,该方法分享的消息固定为卡片消息
//调用此方法时,会自动通过内部方法getAppShareLink获取应用的链接,然后通过to方法发送卡片消息
kk.share.appMessage({
data: {
x: 'data的内容可通过分享的应用消息进入应用后,在kk.ready的参数中获取'
},
title: '分享的标题',
content: '分享的内容'
}, function () {
console.log('分享成功');
}, function (code, msg) {
console.log('错误代码:' + code + '; 错误详情:' + msg);
});
@endsection
kk.share.getAppShareLink([options])
获取分享链接
options:
类型: object
,可选
相关参数
options.data
类型: object
选填,附带参数。通过分享的应用消息进入应用后,可在 kk.ready
的参数中获取data的内容
options.targetPlatform
类型: string
,可选,可选值有ios
,android
,mobile
,desktop
,universal
,默认值 mobile
选填,可打开该应用的目标平台,可选值有 ios
(iOS系统), android
(安卓系统), mobile
(移动端), desktop
(PC端), universal
(所有平台)
options.targetType
类型: string
,可选,可选值有pad
,phone
,universal
,默认值为 universal
选填,目标平台类型,可选值有 pad
(平板类), phone
(手机类), universal
(通用类)
@section('获取分享链接示例代码')
//获取当前应用的链接
var link = kk.share.getAppShareLink({
data: {
msg: 'data的内容可通过分享的应用消息进入应用后,在kk.ready的参数中获取'
}
});
console.log('链接为:' + link);
@endsection
kk.share.shareImage(options, done, fail)
分享图片到微信好友或者朋友圈
options:
类型: object
相关参数
options.shareTo
类型: string
必填,分享到哪儿。目前支持。weixin_msg。分享到微信好友。weixin_friends。分享到微信朋友圈。
options.imageUri
类型: string
必填,分享的图片。支持http、https协议,KK协议路径,base64图片数据(base64://[base64图片内容])
done
类型: function
成功回调,无回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
图片不能分享 |
2 |
分享被外部系统拒绝 |
3 |
用户取消 |
9 |
发生其他错误 |
@section('分享图片到微信好友或者朋友圈示例代码')
//分享图片到微信好友或者朋友圈
kk.share.shareImage({
shareTo: 'weixin_msg',
imageUri: 'http://www.baidu.com/icon.jpg'
}, function () {
// 成功回调,无成功回调参数
}, function (code, msg) {
console.log('失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
kk.share.systemShareUrl(options, done, fail)
调用系统分享,进行分享url
options:
类型: object
相关参数
options.url
类型: string
分享的url链接地址。如果不填则认为分享应用当前页面。
done
类型: function
成功回调,无回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
1 |
图片不能分享 |
2 |
分享被外部系统拒绝 |
3 |
用户取消 |
9 |
发生其他错误 |
@section('调用系统分享,进行分享url示例代码')
//调用系统分享,进行分享url
kk.share.systemShareUrl({
url: 'http://www.baidu.com/icon.jpg'
}, function () {
// 成功回调,无成功回调参数
}, function (code, msg) {
console.log('失败,错误代码是' + code + ',错误信息是' + msg);
});
@endsection
菜单模块
menu模块,提供了对webview右上角的菜单项的相关能力,如显示或隐藏菜单项、分享等等
kk.menu.showMenuItems()
显示应用容器(webview)右上角的菜单项
@section('显示右上角菜单项示例代码')
kk.menu.showMenuItems();
@endsection
kk.menu.hideMenuItems()
隐藏应用容器(webview)右上角的菜单项
@section('隐藏右上角菜单项示例代码')
kk.menu.hideMenuItems();
@endsection
支付模块
支付能力模块 提供了向第三方支付的能力
kk.pay.weixin(options, done, [fail])
微信支付API
options
类型: object
配置项
options.appid
类型: string
微信开放平台审核通过的应用APPID。必填
options.partnerid
类型: string
微信支付分配的商户号。必填。
options.prepayid
类型: string
微信返回的支付交易会话ID。必填。
options.package
类型: string
,固定值Sign=WXPay
暂填写固定值Sign=WXPay。必填。
options.noncestr
类型: string
随机字符串,不长于32位。必填。
options.timestamp
类型: string
时间戳,标准北京时间,自1970年1月1日 0点0分0秒以来的秒数。必填。
options.sign
类型: string
签名,详见微信支付官网上的签名算法
微信支付签名算法
done
类型: function
成功回调 ,没有回调参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-1 |
微信拒绝发起支付(一般是由于接入信息不正确、签名不正确等) |
-2 |
用户取消 |
-3 |
设备上未安装微信 |
@section('发起微信app支付示例代码')
kk.pay.weixin({
appid: 'wx0aee55eb7d35b42b', // 你的appid,需要自己申请
partnerid: '1229457302', // 商户号id
prepayid: '12294573232', // 交易会话id
package: 'Sign=WXPay',//固定值Sign=WXPay
noncestr: 'Wm3WZYTPz0wzccnW',
timestamp: '1477460765018',
sign: '0f9de62fce790f9a083d5c99e95740ceb90c27ed'
}, function(){
}, function( code, msg){
console.log('微信app支付失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
日程模块
日程模块,提供移动设备日程管理的相关功能
kk.calendar.addEvent(options, done, [fail])
向移动设备添加日程
options
类型: object
日程配置项
options.title
类型: string
, 必填
日程标题
options.loc
类型: string
地点
options.url
类型: string
链接,安卓没有链接选项 ,设置此值会和备注拼在一起
options.notes
类型: string
备注
options.startT
类型: string
,必填
开始时间,格式是
YYYY-MM-DD
(全天)YYYY-MM-DD hh:mm:ss
(非全天,hh:mm:ss可以不提供,表示当天的0点)
options.endT
类型: string
,必填
结束时间,格式是
YYYY-MM-DD
(全天)YYYY-MM-DD hh:mm:ss
(非全天,hh:mm:ss可以不提供,表示当天的0点)
options.allDay
类型:boolean
是否是全天日程,默认是false
options.alarms
类型:array
提醒的提前分钟数,单位是分钟
Android系统只支持5个提醒,iOS系统只支持2个提醒,剩余的会被忽略
options.repeat
类型:string
日程重复类型,可选值有
day
: 按日重复week
: 按周重复month
: 按月重复year
: 按年重复
options.interval
类型:number
重复的间隔数, 如果repeat传day
,interval传2
,代表隔2天重复
options.daysOfWeek
类型:array
按周重复需要传此值,代表一周中的星期几需要重复,范围是1-7
。
options.monthRepeatType
类型:string
按月重复需要传此值,一月中的重复类型,默认是day
,可选值有
day
: 以日程的开始时间的那一天去重复week
: 以日程开始时间所在的那个星期去重复
options.repeatEndType
类型:string
重复的终止类型,可选值有
times
: 按次数终止until
: 某个时间点终止
options.repeatEndValue
类型:string
重复终止的结束标志。根据repeatEndType
来填写。
- 按次数终止的,这里填写次数
- 按时间点终止的,这里填写失效时间(格式如
YYYY-MM-DD
)
done
类型: function
调用成功后即会执行,该函数不接受参数
fail(code,msg)
类型: function
,可选
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
错误代码 | 错误信息 |
---|---|
-8 |
没有写入日程权限 |
991 |
参数错误 |
@section('创建日程示例代码')
// 创建一个简单的日程
kk.calendar.addEvent({
title: '我是日程',
startT: '2017-10-24 11:00:00',
endT: '2017-10-25 11:00:00'
}, function () {
console.log('日程创建成功');
}, function (code, msg) {
console.log('创建日程失败,失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
@section('创建日程示例代码')
// 创建一个有提醒的日程
kk.calendar.addEvent({
title: '我是日程',
loc: '深圳南山',
notes: '今天天气不错',
url: 'http://www.baidu.com',
startT: '2017-10-24 11:00:00',
endT: '2017-10-25 11:00:00',
allDay: false,
alarms: [5, 10] // 单位是分钟
}, function () {
console.log('日程创建成功');
}, function (code, msg) {
console.log('创建日程失败,失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
@section('创建日程示例代码')
// 创建一个重复的的日程
kk.calendar.addEvent({
title: '我是日程',
loc: '深圳南山',
notes: '今天天气不错',
url: 'http://www.baidu.com',
startT: '2017-10-24 11:00:00',
endT: '2017-10-25 11:00:00',
allDay: false, // 非全天日程
repeat: 'day', // 按天重复
interval: 2, // 2天频率重复
repeatEndType: 'utils', // 截止重复类型
repeatEndValue: '2017-12-01' // 截止重复时间
}, function () {
console.log('日程创建成功');
}, function (code, msg) {
console.log('创建日程失败,失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
发票模块
invoice模块,提供电子发票的相关功能。如从微信和支付宝选择电子发票。
kk.invoice.chooseByWeixin([done], [fail])
通过微信选择发票
done(args)
类型: function
调用成功后即会执行,接收对象作为参数。
args.user_id
类型: string
发票用户id,后续调用更改发票状态接口的时候需要用到,请业务系统保存起来。
args.item_code_list
类型: array
选择发票的code信息,后续调用更改发票状态接口的时候需要用到,请业务系统保存起来。具体定义,请参见接口[6 批量查询报销发票信息],请求消息中item_list节点的描述。地址:[https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/E_Invoice/Reimburser_API_List.html#6]
args.item_list
类型: array
选择的发票的详细信息,微信的发票信息请查看微信开发者文档,接口[6 批量查询报销发票信息],item_list节点的描述。地址:https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/E_Invoice/Reimburser_API_List.html#6
fail(code,msg)
类型: function
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
@section('通过微信选择发票示例代码')
// 通过微信选择发票
kk.invoice.chooseByWeixin(function (args) {
/** 值示例
* {
* user_id: 发票用户id
* item_list: 发票的详细信息array
* }
*/
}, function (code, msg) {
console.log('通过微信选择发票失败,失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
kk.invoice.chooseByAlipay([done], [fail])
通过微信选择发票
done(args)
类型: function
调用成功后即会执行,接收对象作为参数。
args.user_id
类型: string
发票用户id,后续调用更改发票状态接口的时候需要用到,请业务系统保存起来。
args.item_list
类型: array
选择的发票的详细信息,支付宝的发票信息请查看支付宝开发者文档,接口[根据查询令牌获取发票要素列表],invoice_element_list节点的描述。地址:https://docs.alipay.com/pre-open/api_pre/alipay.ebpp.invoice.token.batchquery
fail(code,msg)
类型: function
失败回调
code
类型: number
错误代码
msg
类型: string
错误信息
@section('通过支付宝选择发票示例代码')
// 通过支付宝选择发票
kk.invoice.chooseByAlipay(function (args) {
/** 值示例
* {
* user_id: 发票用户id
* invoice_element_list: 发票的详细信息array
* }
*/
}, function (code, msg) {
console.log('通过支付宝选择发票失败,失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
工具模块
工具模块提供了一些常用的工具函数。
kk.untils.type
该能力有两种调用形式:
kk.utils.type(obj) 判断参数类型,传递一个参数obj,返回obj的数据类型
kk.utils.type(obj, type) 判断参数类型。传递两个参数
obj
、type
,判断obj的数据类型是否等于type,如果等于返回true
,否则返回false
。
特殊情况:
kk.utils.type() => 返回undefined
kk.utils.type(null) => 返回null
kk.utils.type(undefined) => 返回undefined
kk.utils.type(NaN) => 返回Number
@section('判断参数类型:不传type')
//不传递type:获取参数的数据类型
kk.utils.type(123);//=> Number
@endsection
@section('判断参数类型:传type')
//传递type:判断参数类型是否正确
kk.utils.type('obj', 'String');//=> true
@endsection
kk.utils.isArray(arr)
判断变量是否为数组
arr
类型: Any
(string,boolean,object,array,function,number)
要判断的变量,若是数组返回 true
,否则返回 false
@section('判断变量是否为数组示例代码')
//判断变量是否为数组
kk.utils.isArray([1,2,3]);//=> true
kk.utils.isArray('[1,2,3]');//=> false
@endsection
kk.utils.isWindow(obj)
判断变量是否为window对象
obj
类型: Any
(string,boolean,object,array,function,number)
要判断的变量,若是window对象返回 true
,否则返回 false
@section('判断变量是否为window对象示例代码')
//判断变量是否为window对象
kk.utils.isWindow(window);//=> true
@endsection
kk.utils.isObject(obj)
判断参数是否为对象
obj
类型: Any
(string,boolean,object,array,function,number)
要判断的变量,若是对象返回 true
,否则返回 false
@section('判断参数是否为对象示例代码')
//判断参数是否为对象
kk.utils.isObject('obj');//=> false
kk.utils.isObject({});//=> true
@endsection
kk.utils.isPlainObject(obj)
判断变量是否为简单对象(即JSON格式对象)
obj
类型: Any
(string,boolean,object,array,function,number)
要判断的变量,若是JSON格式对象返回 true
,否则返回 false
。
@section('判断变量是否为简单对象示例代码')
//判断变量是否为简单对象
kk.utils.isPlainObject({"obj": "KK sdk 参考手册"});//=> true
@endsection
kk.utils.isEmpty(obj)
判断参数是否为空,为空则返回 true
, null
,undefined
, []
(空数组)及 ''
(空字符串)被判断为空
obj
类型: Any
(string,boolean,object,array,function,number)
要判断的变量,若是空返回 true
,否则返回 false
@section('判断参数是否为空示例代码')
//判断参数是否为空
kk.utils.isEmpty(null);//=> true
kk.utils.isEmpty('');//=> true
kk.utils.isEmpty([]);//=> true
kk.utils.isEmpty(0);//=> false
@endsection
kk.utils.isFunction(fn)
判断变量是否为函数
fn
类型: Any
(string,boolean,object,array,function,number)
要判断的变量,若是函数返回 true
,否则返回 false
@section('判断变量是否为函数示例代码')
var bar = '';
function foo(){};
//判断变量是否为函数
kk.utils.isFunction(bar);//=>false
kk.utils.isFunction(foo);//=>true
@endsection
kk.utils.extend([deep], [dest], source, [source...], [ride])
扩展对象
deep
类型: boolean
,可选,默认 false
是否深度拷贝
dest
类型: object
,可选
要扩展的对象,如果省略则扩展调用环境(context)
source
类型: object
,可选
要扩展的属性来源,可支持多个source
ride
类型: boolean
,默认 true
是否覆盖已有属性
return(args):
args
:返回扩展之后得到的对象
@section('扩展对象示例代码')
var dest = {a: 1};
var source1 = {
a: 11,
b: 22,
};
var source2 = {
a: 111,
b: 222,
c: 333
};
//默认扩展
kk.utils.extend(dest, source1);
//dest = {a: 11, b: 22}
//不覆盖已有属性
kk.utils.extend(dest, source1, false);
//dest = {a: 1, b: 22}
//扩展多个属性来源,且不覆盖已有属性
kk.utils.extend(false, dest, source1, source2, false);
//dest = {a: 1, b: 22, c: 333}
@endsection
kk.utils.toQueryString(obj)
将对象转换为queryString。将对象中的key和value作为URI组件进行编码,返回转换后的queryString。
obj
类型: object
需要转换的对象
return(arg):
返回由key=value
组成的string
字符串,每个键值对由&
分隔
@section('转换对象示例代码')
var obj = {version: 'kk sdk 5.0', anthor: 'landray'};
//将对象转换为queryString
kk.utils.toQueryString(obj);
//返回字符串。=> 'version=kk%20sdk%205.0&anthor=landray'
@endsection
kk.utils.splitURI(str)
快速解析出URI的各个部分,包括 scheme
(比如 http, ftp, mailto), authority
(比如 localhost, www.baidu.com, kk5.landray.com.cn:6789), path
(比如 /search), query
(查询字符串,比如 keyword=kk&pageNo=1&pageSize=10), fragment
(锚点,比如 install),调用该函数会返回一个数组,数组下标的 1~5 分别代表上述信息(URI部分信息缺失时,缺失的部分为空字符串或undefined
)。使用该函数前需保证 str
是一个合法的 URI
(可用 kk.utils.isURI
或 kk.utils.isURL
判断), 否则解析得到的信息无效。
str
类型: string
需要解析的字符串
@section('解析URL')
var url = 'https://www.google.com.hk/search?q=kk#newwindow=1&safe=strict';
var urlParts = []
if(kk.utils.isURL(url)) {
urlParts = kk.utils.splitURI(url);
// urlParts[1] 为 https (表示 scheme)
// urlParts[2] 为 www.google.com.hk (表示 authority)
// urlParts[3] 为 /search (表示 path)
// urlParts[4] 为 q=kk (表示 query)
// urlParts[5] 为 newwindow=1&safe=strict (表示 fragment)
}
@endsection
kk.utils.isURI(str)
判断 str
是否为一个合法的URI(详见URI规范),若为合法的URI则返回 true
,否则 false
. URI的例子可参见rfc3986
str
类型: string
需要判断的字符串
@section('判断字符串是否为URI')
kk.utils.isURI('ftp://ftp.is.co.za/rfc/rfc1808.txt');
// 返回 true
kk.utils.isURI('tel:+1-816-555-1212');
// 返回 true
kk.utils.isURI('call-weixin');
// 返回false
@endsection
kk.utils.isURL(str)
判断 str
是否为一个合法的浏览器网址,若为合法的网址则返回 true
,否则 false
。URL 是 URI的子集, 即若字符串是URL则一定是URI。
str
类型: string
需要判断的字符串
@section('判断字符串是否为URL')
kk.utils.isURL('http://www.google.com');
// 返回 true
kk.utils.isURL('abc');
// 返回 false
@endsection
兼容微信的能力模块
兼容微信JS_SDK能力的模块,目前仅兼容微信和kk共有的能力,能力调用方式和微信一致
kk.wx.ready(fn)
wx的ready,兼容微信,区别在于回调函数多了参数
fn
类型: function
成功回调
@section('准备调用微信API示例代码')
//wx的ready
wx.ready(function(){
console.log('准备调用微信API');
});
@endsection
kk.wx.checkJsApi(options)
检查是否支持该能力,完全兼容
options
类型: object
配置选项,详见options
options.jsApiList
类型: array
要检查是否支持的能力名称
options.success(args)
类型: function
成功回调,返回一个对象作为参数,详见args
args.checkResult
类型: object
以键值对的形式返回json形式的object,可用的api值 true
,不可用为 false
args.errMsg
类型: string
错误信息
3/23/2017 10:40:59 AM 3/23/2017 10:41:00 AM
@section('能力支持检查示例代码')
//能力支持检查
kk.wx.checkJsApi({
jsApiList: ['chooseImage'],
success: function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
console.log(JSON.stringify(res));
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
}
})
@endsection
kk.wx.previewImage(options)
预览图片,目前仅支持预览本地图片
options
类型: object
调用参数,详见options
options.current
类型: string
当前显示图片的地址
options.urls
类型: array
需要预览的图片地址列表
@section('预览图片示例代码')
// 预览图片
kk.wx.previewImage({
current: 'sdcard://1.jpg',
urls: [ 'sdcard://1.jpg', 'sdcard://2.jpg', 'sdcard://3.jpg']
});
@endsection
kk.wx.startRecord()
开始录音,完全兼容
@section('微信录音示例代码')
//录音
kk.wx.startRecord();
@endsection
kk.wx.stopRecord(options)
停止录音,兼容微信,但是参数不一致。
options
类型: object
调用参数
options.success
类型: function
用户停止录音后的回调函数,返回的参数与captureAudio一致
@section('停止微信录音示例代码')
//停止录音
kk.wx.stopRecord({
success: function(res){
/*res 值示例
{
name:'ekp_1488265458521',
fullPath:'/data/data/com.landray.kkplus/files/ekp_1488265458521.amr',
type:'audio/amr',
size:13478
}
*/
//用户停止录音后执行的回调函数
console.log(JSON.stringify(res));
console.log('录音文件路径:' + res.fullPath);
}
});
@endsection
kk.wx.onVoiceRecordEnd(obj)
录音自动结束事件,微信有录音1分钟的限制,kk没有,提供此函数仅为兼容,没有实际作用
@section('微信录音示例代码')
//录音
kk.wx.onVoiceRecordEnd();
@endsection
kk.wx.playVoice(options)
播放语音
options
类型: object
调用参数
options.localId
类型: string
语音地址。此处得传kk约定的音频文件路径
@section('播放语音示例代码')
//播放语音
kk.wx.playVoice({
localId: '' // 此处得传kk约定的音频文件路径
});
@endsection
kk.wx.getNetworkType(options)
获取当前网络类型,完全兼容微信
options
类型: object
调用参数
options.success(args)
类型: function
回调函数,返回一个对象 args
作为参数
args.networkType
类型: string
返回网络类型:空字符串,2G,3G(iOS下2G/3G均返回3G),4G,WIFI
@section('获取当前网络类型示例代码')
//获取当前网络类型
kk.wx.getNetworkType({
success: function(res){
var networkType = res.networkType;
// 返回网络类型:空字符串,2G,3G(iOS下2G/3G均返回3G),WIFI
console.log('获取当前网络类型:' + networkType);
}
});
@endsection
kk.wx.getLocation(options)
wx获取当前位置,兼容微信,缺少部分数据。返回参数与kk.location.getLocation一致
options
类型: object
调用参数
options.success(args)
类型: function
回调函数,返回一个对象 args
作为参数
args.latitude
类型: string
纬度
args.longitude
类型: string
经度
args.altitude
类型: string
海拔
@section('微信获取当前位置示例代码')
//获取当前位置
kk.wx.getLocation({
success: function(res){
console.log( '纬度:' + res.latitude );
console.log( '经度:' + res.longitude );
console.log( '海拔:' + res.altitude );
}
});
@endsection
kk.wx.closeWindow()
关闭窗口(退出应用),完全兼容微信
@section('退出应用示例代码')
//退出应用
kk.wx.closeWindow();
@endsection
kk.wx.scanQRCode(options)
扫描二维码,部分兼容
options
类型: object
配置选项
options.needResult
类型: number
只支持 needResult 为1,直接返回扫描结果
options.scanType
类型: string
可以指定扫二维码还是一维码,默认二者都有
options.success(args)
类型: function
回调函数,返回一个对象 args
作为参数
args.resultStr
类型: object
二维码的内容
@section('扫描二维码示例代码')
//扫描二维码
kk.wx.scanQRCode({
needResult: 1,//只支持 needResult 为1
scanType: 'barCode',
success: function(res){
console.log('扫描结果:' + res.resultStr);
//=>{"resultStr": "http://baidu.com"}
}
})
@endsection
友情链接: 微信JS-SDK说明文档
对应代码 | 接口 |
---|---|
chooseImage | 拍照或从手机相册中选图接口 |
previewImage | 预览图片接口 |
uploadImage | 上传图片接口 |
downloadImage | 下载图片接口 |
JS SDK版本变更记录
v1.3.19@2022-0824.适用于客户端版本8.0.5.0
kk.file.canUseJinGe
能力增加ofd判断- 增加获取用户工作台上的全部应用能力
kk.workspace.getUserAllApps
v1.3.18@2021-12-29.适用客户端版本8.0.2.0
- 增加调用系统分享,进行分享url
kk.share.systemShareUrl
v1.3.17@2021-7-19.适用客户端版本8.0.0.0
kk.share.to
增加分享文件消息到KK- 增加获取可以进行预览的url能力
kk.file.getOnlineReadUrl
v1.3.13@2020-1-14.适用客户端版本7.0.7.0
- 增加分享图片到微信好友或者朋友圈能力
kk.share.shareImage
kk.media.save2album
能力支持base64图片数据- 增加把一段内容保存到指定文件能力
kk.file.saveFileContent
- 增加在线预览文件能力
kk.file.onlineReadFile
v1.3.12@2020-1-14.适用客户端版本7.0.6.0
- 从文件管理器选择多个文件
kk.file.chooseFileMulti
- 跳转到客户端原生文件管理器下载记录列表界面
kk.proxy.toDownloadRecordList
v1.3.11@2020-11-12.适用客户端版本7.0.5.0
- 增加获取蓝牙状态能力
kk.device.getBluetoothStatus
- 通过微信选择发票能力
kk.invoice.chooseByWeixin
增加了item_code_list
回参 - 获取当前位置的坐标信息能力
kk.location.getLocation
增加了virtualLocationSuspect
回参 - 针对js sdk被放到iframe里面拿不到was对象的适配方案(不支持跨域的情况)
v1.3.10@2020-7-14.适用客户端版本7.0.4.0
- 修订带native UI的录音能力,成功回调参数增加协议路径
kk.media.captureAudio
- 增加启动微信小程序能力
kk.app.launchWXMicroApp
v1.3.9@2020-4-22.适用客户端版本7.0.3.0
- 修订获取照片,支持获取视频
kk.media.getPicture
- 增加扫描附近指定UUID的iBeacon蓝牙设备能力
kk.device.startScanBeacons
- 增加停止扫描能力
kk.device.stopScanBeacons
v1.3.8@2020-2-20.适用客户端版本7.0.2.0
- 修订获取当前位置接口,支持入参
kk.location.getLocation
- 新增发票模块,可通过支付微信获取发票信息
Invoice
v1.3.7@2019-12-9.适用的客户端版本7.0.1.0
- 更新进入视频会议说明文档,api在1.3.5就已经支持
kk.app.enterMeeting
- 获取位置api支持入参
kk.location.getLocation
注意:调用说明文档不会更新,因为只有Android客户用到入参的值,这里只是tag一下
v1.3.6@2019-10-9.适用的客户端版本7.0.1.0
- 修订百度鹰眼上报位置接口
kk.location.startSubmitLocation
- 增加发起手势密码检查能力
kk.security.checkGesturePassword
- 增加获取当前用户所开启的全部认证方式能力
kk.security.getAvailableVerifyInfo
v1.3.5@2019-04-15.适用的客户端版本7.0.0.0
- 增加从指定的群组选人能力
kk.econtact.chooseGroupPerson
- 增加获取会话的聊天记录链接
kk.econtact.genSessionChatMsgUrl
- 增加获取关联会话的信息能力
kk.econtact.getRelSession
- 增加已知某条聊天消息,判断当前用户是否为该消息所在聊天会话的成员
kk.econtact.isSessionMemberByMsg
- 分享到KK增加入参msgIndex
kk.share.to
v1.3.3@2019-04-15.适用的客户端版本6.0.4
- 对发送消息能力recieverType参数进行调整,删除group、增加session(当前会话)
v1.3.2@2019-01-23.适用的客户端版本6.0.4
- kk移动端对window.close()方法进行兼容,当在kk移动端应用中调用window.close(),kk移动端会关闭webview窗口
v1.3.1@2018-11-06.适用的客户端版本6.0.4
- 增加使用可自定义出发地使用第三方应用开启导航
kk.location.navigateDirectly
- 增加开始上报位置
kk.location.startSubmitLocation
- 增加结束上报位置
kk.location.stopSubmitLocation
v1.2.88@2018-11-05.适用的客户端版本6.0.4
- 增加设置静音能力
kk.ai.setAudioMute
- 增加获取静音开关能力
kk.ai.getAudioMute
v1.2.84@2018-09-04.适用的客户端版本6.0.2
- 增加打开客户端原生页面的功能
kk.app.showNativePage
v1.2.75@2018-07-09.适用的客户端版本6.0.4
- 客户端信息中增加字体信息
- 扫描增加识别文字
- 拍照增加系统拍照,方便调用前置摄像头
- 增加人脸识别
v1.2.75@2018-07-09.适用的客户端版本6.0.2
- 增加AI模块能力,智能语音识别
- 增加金格PDF批注能力
v1.2.72@2018-03-28.适用的客户端版本6.0.2
- 增加协作群相关能力(进入协作群,创建协作群,查询协作群是否存在,生成协作群的聊天记录url)
v1.2.68@2018-03-06.适用的客户端版本6.0.2
- 增加appCallBackData事件和setAppCallBackData方法,数据传输
- 增加sSOTokenReady事件和tokenReady属性 是否已经取到了SSO Token
v1.2.67@2018-02-08.适用的客户端版本6.0.2
- 增加 file.chooseFile 可从文件管理器中选择文件
- 优化 App模块的exit,pause,resume应用事件
- 增加 页签打开子页面时有返回按钮
v1.2.59@2017-11-01.适用的客户端版本6.0.2
- 增加 calendar.addEvent 可添加手机系统日程
- 增加 media.editImage 可对图片进行编辑操作
- 优化 media.getSignImage 可以生成签名图片
- 优化 media.getPicture 增加原图选项
- 增加 scaner.scanDLCard 可以扫描并识别驾驶证信息,客户端打包时需提供正确的 合合OCR SDK 密钥, 否则将无法调用该能力
- 增加 scaner.scanBankCard 可以扫描并识别银行卡信息,客户端打包时需提供正确的 合合OCR SDK 密钥, 否则将无法调用该能力
v1.2.45@2017-08-17.适用的客户端版本6.0.1
- 增加 device.support 检查当前设备是否支持某些特性,例如指纹等
- 增加 security.verifyFingerprint, 可发起手机的指纹检查功能
v1.2.41@2017-07-5.适用的客户端版本6.0
- 修改 proxy.vueInterceptor, 默认将返回的数据当作 JSON 处理,优化对vue-resouce中 params 参数的处理(作为URL的query string处理)
v1.2.39@2017-07-3.适用的客户端版本6.0
- 增加 app.setScreenMode, 允许设置应用显示为全屏模式
- 修改 phone.call 可通过传递参数
needCallSessionInfo
来记录会话相关信息
v1.2.35@2017-06-1.适用的客户端版本6.0
- 增加 kk.defy, 可以将KK能力 promise 化
v1.2.30@2017-05-19.适用的客户端版本6.0
- 增加
kk.scaner.scanIDCard
可以扫描并识别身份证信息,客户端打包时需提供正确的 合合OCR SDK 密钥, 否则将无法调用该能力 - 增加
kk.scaner.scanVLCard
可以扫描并识别车辆行驶证信息,客户端打包时需提供正确的 合合OCR SDK 密钥, 否则将无法调用该能力 - 增加
kk.device.getOrientation
可获取屏幕旋转方向的配置策略 - 优化
kk.device.setOrientation
支持设置屏幕自动旋转 - 优化
kk.file.view
支持使用WSP查看并编辑文档 - 优化
kk.econtact.choose
和kk.econtact.getUserInfo
获取到的用户信中增加jobTitle
(职位名称) 及signature
(个性签名) - 优化
kk.media.previewImage
在预览图片时支持分额外操作:保存到相册, 分享到微信
v1.2.22@2017-04-25.适用的客户端版本5.2.6.3
- 调整: 调用
kk.app.on
对同一个应用事件绑定多个处理函数时,只要其中任一函数返回了false
则立即停止执行后续的回调函数
v1.2.17@2017-04-20.适用的客户端版本5.2.6.3
- 能力
kk.app.on
支持同一个应用事件绑定多个处理函数 - 增加
kk.app.off(eventName, cb)
取消某函数对应用事件的监听
v1.2.13@2017-04-07.适用的客户端版本5.2.6.2
- 增加
kk.utils.renameKeys
可用于重命名对象键名 - 增加
kk.econtact.showECard
可用于显示联系人资料卡片 - 使用
kk.utils.renameKeys
调整kk.econtact.startChat
参数命名为{userID: 'xxx', loginName: 'xxxx'}
,,统一能力参数.kk.app.callApp
及kk.app.getDeviceInfo
也使用改函数重新调整 kk.media.getPicture
支持拍摄选取多张图片,通过新增参数count
来设置数量,多张不支持Base64
v1.2.6@2017-04-01.适用的客户端版本5.2.6.2
kk.app.getClientInfo
返回的信息增加lang
(客户端语言),webServer
(KK Web Server地址)
v1.2.5@2017-03-30.适用的客户端版本5.2.6.2
- 增加
kk.econtact.startChat
,可用于发起和某用户的会话,并可以携带相关聊天文字(文字在输入框中,并不会直接发送出去)
v1.2.4@2017-03-24.适用的客户端版本5.2.6.1
- 修正
kk.utils.isURL
不能正确判断 URL的问题,修改后支持 规范rfc3986 定义的URL 格式 - 增加
kk.utils.isURI
, 可用于判断字符串是否为合法 URI - 增加
kk.utils.splitURI
, 可用于快速解析 URI的scheme
(如协议 http, ftp),authority
(比如 host, ip 等),path
,query
(查询字符串),fragment
(锚点) - 修正 promise 库中的 deferred.always 的拼写错误
v1.2.1@2017-03-22.适用的客户端版本5.2.6.1
- 修正
kk.app.callApp
的第二个参数为null
时(如 kk.app.callApp('kk-mail', null, function(){})), 将 null 当作args
处理的问题。修正后,第二个参数为空时当作不传 成功回调(即当作参数 done 处理)。
v1.1.99@2017-03-20.适用的客户端版本5.2.6.1
- 修正旧版本的KK客户端(v1.1.34@2016-09-20,适用的客户端版本5.2.5) 使用 kk.kkcontact.choose 报错的问题, 因为旧版KK返回的数据无 deptPath 导致。
v1.1.98@2017-03-07.适用的客户端版本5.2.6.1
- 修正 kk.utils.isURL 判断问题,所有以 https? 打头的才判定为URL
- 所有要判断URL的地方,均使用 kk.utils.isURL 判断,包括
file.view
,media.save2album
,share.to
,app.callApp
- kk.app.getClientInfo 增加
semver
字段,返回客户端的语义化版本号
v1.1.94@2017-02-28.适用的客户端版本5.2.6.1
- 增加 kk.utils.isURL, 可用于判断参数是否为URL
- 修改 kk.app.callApp, 支持在新窗口打开URL,打开的URL支持客户端的各种能力(代理请求,上传下载需要传入code). 同时修正 kk.app.callApp 实现不严谨的问题。
v1.1.93@2017-02-28.适用的客户端版本5.2.6
- 增加 kk.app.onUpdate,可用该函数实现用户打开应用新版本时执行回调的功能
- 修正 iOS 上由于 kk.ready 过快,导致调用 App.getClientConfig(此时app模块未定义) 获取 KK_WEBSERVER_HTTP_URL 报错的的问题
v1.1.89@2017-01-10.适用的客户端版本5.2.6
- kk.app.getClientInfo 中加入企业相关信息
- 修复kk.file.view不传成功回调时出错的bug
- 更改kk.utils.extend实现方式,当dest为非对象时,不会报错
v1.1.85@2016-12-13.适用的客户端版本5.2.6
- 移动kk.isOfflineApp至kk.app.isOfflineApp
- 修复旧File模块view方法不传配置时会导致没有路径的bug
v1.1.84@2016-12-12.适用的客户端版本5.2.6
- 扩展kk.share.to方法,使之更通用,目前该方法有三个原型
- 扫描模块扫描二维码方法改名为scanQRCode,原方法名scanTDCode仍兼容
v1.1.80@2016-12-7.适用的客户端版本5.2.6
- 修复因修改file模块的info方法名字而导致的旧方法调用出错的Bug
- fixReadyArgs: 修复当通过callApp传复杂对象至app时,客户端无法解析复杂对象的bug
- 修改share模块代码,将toWeixin与toKK结合成to方法
- 删除kk.menu.share方法,该方法可使用kk.share.to('weixin', ...)实现
v1.1.77@2016-12-5.适用的客户端版本5.2.6
- 修改原有file模块,使之能以kk.file.方法名的方式调用,原来的调用方式也兼容
- 修复获取客户端web服务地址失败的bug
- 修改share模块代码
v1.1.68@2016-12-2.适用的客户端版本5.2.6
- kk.app.getUserInfo 修改实现方式,但功能不变。
- kk.app.getAppInfo 增加查询应用信息
- kk.app.getClientInfo 增加查询客户端信息
- kk.app.getAppIcon(appCode) 增加根据app代码查询应用图标功能
- 在kk.ready中获取kk服务的url
- kk.econtact.getUserAvatar(loginName, isById) 根据登录名或ID查询用户头像
- kk.econtact.getUserInfo 统一原有的kk.app.getUserInfo和kk.econtact.getUserInfoById
- 新增share模块,用于分享消息至微信,或分享消息至KK,如kk.share.toWeixin和kk.share.appMessage
v1.1.55@2016-11-9.适用的客户端版本5.2.6
- kk.app.getDeviceInfo 增加设备物理唯一ID。
v1.1.54@2016-11-8,适用的客户端版本5.2.6
- 增加 deferred 模块,可为模块增加 promise 写法, 并暴露出为 kk.Deferred
- kk.proxy.request 使用 deferred 重写,支持类 $.ajax 的写法。如 kk.proxy.request(...).done(...).fail(...).always(...)
v1.1.52@2016-11-1,适用的客户端版本5.2.6
- kk.media.save2album 能力,客户端新增fileURI参数,支持保存在线图片到相册。
- 修改 kk.media.save2album, 兼容、简化,用户只需输入uri就能调用能力。
v1.1.50@2016-10-26,适用的客户端版本5.2.5
- 新增 Pay 支付模块
- 新增 kk.pay.weixin 微信App支付能力
v1.1.34@2016-09-20,适用的客户端版本5.2.5
- 去除 kk.econtact.getUserDepartById
- 在kk.econtact.choose、kk.econtact.getUserInfoById 返回的结果新增 deptPath 字段,得到查询人员所在的所有部门
v1.1.33@2016-08-29,适用的客户端版本 5.2.5
- 新增 kk.econtact.getUserDepartById 获取员工所在所有部门
v1.1.32@2016-08-03,适用的客户端版本 5.2.4
- 将 kk.app.showMenuItems 及 kk.app.hideMenuItems 从app插件移动到 kk.menu
- 新增 kk.menu.share 分享能力
v1.1.31@2016-08-01,适用的客户端版本 5.2.4
- 新增 kk.app.showMenuItems 及 kk.app.hideMenuItems 能力,当前只默认支持全显示/全隐藏
v1.1.29@2016-07-13,适用的客户端版本 5.2.4
- 在 kk.media.getPicture 能力新增imageTime和imageTimeString两个字段
v1.1.27@2016-07-12,适用的客户端版本 5.2.4
- 修正 wasWrapper.exec 中的控制台调试
- 新增 kk.media.getSignImage 获取签名图片的能力
v1.1.20@2016-05-31,适用的客户端版本 5.2.4
- 修正 wasWrapper.exec 拼写错误导致native能力未准备好时调用能力JS SDK直接报错的问题
v1.1.19@2016-05-25,适用的客户端版本 5.2.4
- 新增 kk.device.setClipboard 设置系统剪片版
- 新增 kk.contact.choose 从系统通讯录选人
- 修正 kk.contact.find 成功回调接受的参数为数组,之前为 对象
v1.1.11@2015-10-21
- 新增 kk.media.previewImage 使用原生UI预览图片的能力
v1.1.10@2015-10-16
- 新增 kk.app.setTitle 设置native导航栏标题的能力