概述
KK JS-SDK是基于移动KK平台的Web应用开发工具包。
Web应用开发人员使用KK JS-SDK,可以调用拍照、拨号、定位等的移动设备能力,可以访问移动KK自身通讯录,可以对文件进行查看、删除、压缩/解压、加密/解密等操作。
此外,KK JS-SDK还能部分兼容基于微信平台开发的Web应用。
整体说明
关于文档
此文档有下面几条约定:
1.函数原型中,被方括号包裹的参数为可选参数
如:
kk.app.callApp(cmd, [args], [done], [fail])
这里的args、done、fail都是可选参数
2.参数说明中,optional代表可选参数,接在后面括号里的值为默认值
如:
object,optionl({})
这里默认参数为一个空对象
3.除kk.config
外,参数(callbacks)和返回值(return)都为一个对象,callbacks 和 return 的描述为返回对象各属性的含义
如:
var userInfo = kk.app.getUserInfo()
这里的userInfo为一个对象
4.utils中的Any
表示参数的类型可以是javascript支持的任意数据类型
5.文档中所有涉及分辨率、尺寸或者宽高的单位都是像素(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 文件 |
调用说明
所有API通过kk对象来调用 (若有命名冲突,使用kk.noConflict来解决命名冲突)。
异步调用的API都有可以传入成功回调和失败回调两个参数,其中,成功回调可能会接收一个对象作为参数(返回值/callbacks),失败回调通常接收两个参数fail(code,msg)
,code为错误代码,msg为错误说明。
失败回调:
错误代码 | 错误信息 |
---|
使用步骤
步骤1. 获取JS-SDK文件,点次获取JS-SDK文件。
步骤2. 引入JS-SDK文件,通过 <script>
标签或者使用 AMD/CMD 标准模块加载方法加载。
@section('加载JS-SDK文件')
//步骤1:加载JS-SDK文件
<!--Script标签加载:-->
<script src='kk-1.0.0.js'></script>
//CMD加载:
seajs.config({
base: "../sea-modules/",
alias: {
'kk': 'app/kk-1.0.0.js'
}
});
//AMD加载:
requirejs(['jquery', 'app/kk-1.0.0'],function($,kk){
//监听ready事件,即可在回调中使用kk的API,详见步骤3
});
@endsection
步骤3. 配置JS-SDK(可选)
@section('配置JS-SDK')
//步骤2:配置JS-SDK(可选)
//配置应用,输出能力调用的详细日志
kk.config('detailLog', true);
@endsection
步骤3. 监听ready事件,回调后即可使用kk的API
@section('监听ready事件,回调后即可使用kk的API')
//步骤3:监听ready事件,回调后即可使用kk的API
//应用运行入口:
kk.ready(function(){
//调用kk的API
});
@endsection
核心入口模块 kk
kk入口模块,整个库的核心入口模块,定义的库的命名空间kk(以及别名 Easymi,为兼容旧有项目),并暴露给全局使用。
提供了 kk.ready,kk.noConflict 两个核心方法。
Ready
示例代码:
@section('监听ready事件示例代码')
//监听ready事件
kk.ready(function( args ){
var type = args.startType;
if(type === 1){//用户请求使用应用
//相应操作
}else if(type === 2){//被推送消息拉起
//相应操作
}else if(type === 3){//被其他应用拉起
//相应操作
}
});
@endsection
将函数添加到 native 初始化后的回调函数队列,可以多次调用。
若调用 ready
时,native 已完成初始化,则立即执行传入的函数。
kk.ready(fn)
params:
名称 | 描述 |
---|---|
fn function | 回调函数,接收一个对象作为参数,参数详见callbacks |
callbacks:
名称 | 描述 |
---|---|
netState number | 网络状态 0:离线,1:在线 |
startType number | 应用的启动类型。1:用户请求使用应用,2:被推送消息拉起,3:被其他应用拉起 |
callArgs object | 调用参数,startType等于2时,为推送消息的数据,等于3时,为调用参数 |
命名冲突 noConflict
示例代码:
@section('解决命名冲突示例代码')
// 假如 kk 加载之前已经存在一个 kk 变量
var kk = {
name:'kk'
};
// 更改kk的命名,将 kk 命名交还给原来的 kk
var newkk = kk.noConflict();
newkk.ready( function(){
//使用newkk来调用kk的API
});
console.log( kk.name ); //=> 'kk'
@endsection
解决命名冲突,将全局命名空间下的 kk
改回 KK-SDK
执行之前的值
kk.noConflict()
kk运行环境判断 isKK
示例代码:
@section('判断运行环境是否为KK')
if( kk.isKK() ) {
alert('Welcome kk user!');
}
@endsection
判断当前代码是否在kk移动客户端中之行,若为kk移动客户端,则返回 true
。通过检测浏览器的userAgent
中是否有 kk5
来判断。
kk.isKK()
应用配置模块 Config
设置和获取应用配置 config
示例代码:
@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
@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,
detailLog: false
});
console.log( JSON.stringify( appConfig ) );
//=>'{"debug": false, "detailLog": false}'
@endsection
支持的配置项
名称 | 描述 |
---|---|
debug boolean(true) | 是否打印日志,日志会输出到日志文件中 |
detailLog boolean(false) | 是否在日志中打印出成功回调接收的所有参数, 只有 debug 为true是,detailLog 的设置才有效 |
日志文件在手机上的位置
在 KK管理台->应用管理->移动端应用
上添加手机移动web应用之后,会得到一个应用ID,在手机上日志文件的名称即以该ID命名。
Android和iOS的日志在手机上路径是不一样的。
Android日志文件位置
[Andorid内部存储空间]/Andorid/data/com.landray.kkplus/files/log/applog/
目录下以 应用ID命名(无文件后缀)的文件,该文件为纯文本文件,可用任何能打开纯文本文件的软件查看
iOS日志文件位置
查看iOS的日志必须借助iTunes。在电脑上安装iTunes后,使用数据线连接iOS设备,在iTunes中点击已连接的iOS设备,管理其中的应用,在 文件共享
下找到 KK 5.0
并选中它,在右侧 KK 5.0的文稿
列表中即可找到 以应用ID命名(文件后缀为 .log)的文件,该文件为纯文本文件,将其拖拽至电脑上,即可使用文本编辑器查看。
此方法有有4种调用形式:
1.不传参数
返回包含所有配置的对象
config()
return:
名称 | 描述 |
---|---|
debug boolean | 是否打印日志,默认true |
detailLog boolean | 是否在日志中打印出成功回调接收的所有参数,默认false |
2.传入一个配置键名字符串
返回配置项 key 对应的value值
config(key)
return:
名称 | 描述 |
---|---|
value string | 键名对应的值 |
3.传入两个参数(key,value)
将配置项 key 的值设置为value,并返回value
config(key, value)
return:
名称 | 描述 |
---|---|
value string | 设置的值 |
4.传入一个对象
如果options中的属性名在配置项中存在,则修改 options 中的值,完成后返回全部配置项
config( options )
options:
名称 | 描述 |
---|---|
debug boolean,optional(true) | 是否打印日志 |
detailLog boolean,optional(false) | 是否在日志中打印出成功回调接收的所有参数 |
return:
返回值结构与config()一样
应用模块 App
app模块,提供了控制app的基础能力,如应用退出、拉起引用、监听应用事件、应用徽章控制等等
退出应用 exit
示例代码:
@section('退出应用示例代码')
//退出应用
kk.app.exit();
@endsection
退出Web应用
kk.app.exit()
拉起Web应用 callApp
示例代码:
@section('拉起Web应用示例代码')
// 在App1中
// 拉起Web应用
kk.app.callApp( 'testApp2_entry1', {
p1: 'p1',
p2: 'p2',
p3: 'p3'
}, function(){
// 拉起其他应用后,本应用退出。
kk.app.exit();
}, function( code, msg ){
console.log('kk.app.callApp 错误代码:' + code + ' , 错误信息:' + msg );
});
@endsection
调用客户端内置的其他Web应用
kk.app.callApp(cmd, [args], [done], [fail])
params:
名称 | 描述 |
---|---|
cmd string | 应用命令字符串 |
args object, optional({}) | 调用的参数 |
done function, optional | 成功回调 |
fail function, optional | 失败回调 |
fail:
错误代码 | 错误信息 |
---|
拉起原生应用 callNativeApp
示例代码:
@section('拉起原生发短信应用:Android示例')
// 拉起原生发短信应用:Android示例
kk.app.callNativeApp({
__action:"android.intent.action.SENDTO",
__category:"android.intent.category.DEFAULT",
__url:"smsto:13823794432",
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
启动第三方native应用
kk.app.callNativeApp(options, [done], [fail])
params:
名称 | 描述 |
---|---|
options object | 调用应用的参数,iOS和Android的参数不一致,详见options |
done function, optional | 成功回调 |
fail function, optional | 失败回调 |
options(iOS)
名称 | 描述 |
---|---|
__url string | Native应用注册处理的url |
options(Android)
名称 | 描述 |
---|---|
__url string | Intent Data url |
__type string | Intent MimeType |
__action string | Intent Action |
__category string | Intent category,暂不支持多个 |
__package string | Intent package |
__class string | Intent class |
__otherParam string | 作为extra放到启动Intent中 key为extra的name,value为char(3)+char(type)+extra_value 下面有type取值说明 |
type对应value的类型:
值 | 描述 |
---|---|
1 | value可以直接为extra_value |
2 | value为整型 |
3 | value为浮点型 |
4 | value为字符串数组,数组元素用char(4)分隔 |
5 | value为整型数组,数组元素用char(4)分隔 |
6 | value为浮点型数组,数组元素用char(4)分隔 |
7 | |
8 | value为HTML内容,需要执行HTML.parse操作 |
9 | value为url |
fail:
错误代码 | 错误信息 |
---|---|
9 | 没有对应的Native应用 |
监听应用事务 on
示例代码:
@section('监听应用事务')
//监听应用事务
kk.app.on('resume', function( args ){
if( args.netState == 0 ){//离线
console.log('未连接网络,请检查网络');
}else{//在线
console.log('连接网络,可以执行请求');
}
});
@endsection
@section('监听网络变化')
//监听应用事务
kk.app.on('netStateChange', function( res ){
if( res.netState == 1 ){
console.log('网络重新连接上');
//更改网络标志为在线
}else{
console.log('网络断开' );
//更改网络标志为离线
}
});
@endsection
添加应用事件监听
kk.app.on(eventName, eventCB)
params:
名称 | 描述 |
---|---|
eventName string | 事件名称,详见 eventName |
eventCB function | 事件回调,eventCB(args),args为一个对象,不同的事件返回的args不同,详见各事件的callbacks |
eventName:
事件名称 | 描述 |
---|---|
pause | 当应用被切换到后台运行时(可能是打开了其他应用或者按Home返回桌面),关闭时也会触发此事件 |
resume | 当应用被切换到前台运行时执行,回调接收参数 |
exit | 应用退出时,没有回调参数 |
pushMessage | 推送消息到达时,回调接收参数 |
netStateChange | 客户端容器的网络状态变动时,回调接收参数 |
backKeyPressed | 后退键事件(Android Only),没有回调参数 |
phoneStateChange | 电话状态改变事件(Android Only),回调接收参数 |
resume`s callbacks:
名称 | 描述 |
---|---|
netState number | 网络状态,0:离线,1:在线 |
startType number | 触发类型,1:用户请求使用应用,2:被推送消息拉起,3:被其它应用调用拉起 |
callArgs object | 调于用参数,startType等2时,为推送消息的数据,等于3时,为调用参数 |
netStateChange`s callbacks:
名称 | 描述 |
---|---|
netState number | 网络状态,0:离线,1:在线 |
phoneStateChange(Android Only)`s callbacks:
名称 | 描述 |
---|---|
phoneState number | 电话状态,1:RING(响铃),2:OFFHOOK(摘机),3:IDLE(空闲) |
param number | phoneState=1时,表示来电号码,其他无意义 |
fail:
错误代码 | 错误信息 |
---|
设置徽章 setBadge
示例代码:
@section('设置徽章示例代码')
//设置徽章为"3"
kk.app.setBadge( {num: 3} );
@endsection
设置应用徽章,在应用的入口图标的右上角显示一个数字。
kk.app.setBadge(options)
params:
名称 | 描述 |
---|---|
option object | 包含徽章值的对象,详见options |
options:
名称 | 描述 |
---|---|
num number | 要设置的徽章值,设置为0表示去除徽章 |
获取徽章 getBadge
示例代码:
@section('获取徽章示例代码')
//获取应用徽章
kk.app.getBadge( function( res ){
console.log( 'getBadge value: ' + res.num );
} );
@endsection
获取应用徽章
kk.app.getBadge(done)
params:
名称 | 描述 |
---|---|
done function | 成功回调,接收键名为num的对象作为参数,详见callbacks |
callbacks:
名称 | 描述 |
---|---|
num number | 应用徽章的值 |
获取网络状态 getNetState
示例代码:
@section('获取网络状态示例代码')
//获取网络状态
var state = kk.app.getNetState();
if(state.netState == 1){
console.log('网络在线');
}else{
console.log('网络离线');
}
@endsection
获取网络状态
kk.app.getNetState()
return:
名称 | 描述 |
---|---|
netState number | 网络状态值,1:在线,0:离线 |
获取设备信息 getDeviceInfo
示例代码:
@section('获取设备信息示例代码')
//获取设备信息
var deviceInfo = kk.app.getDeviceInfo();
console.log('设备操作系统: ' + deviceInfo.os);
console.log('设备类型: ' + deviceInfo.type);
console.log('分辨率:' + deviceInfo.pixel);
console.log('分辨率中大的一边:' + deviceInfo.largerPixel);
console.log('分辨率中小的一边:' + deviceInfo.smallerPixel);
@endsection
获取设备信息,如操作系统、设备类型、分辨率等。
kk.app.getDeviceInfo()
return:
名称 | 描述 |
---|---|
os string | 操作系统,iOS/Android/windows(模拟器) |
type string | 类型,phone/pad |
pixel string | 分辨率,形如:1024x767(值较大的在前) |
largerPixel number | pixel属性中较大的一边 |
smallerPixel number | pixel属性中的较小的一边 |
获取用户信息 getUserInfo
示例代码:
@section('获取用户信息示例代码')
//获取用户信息
var userInfo = kk.app.getUserInfo();
console.log('用户id: ' + userInfo.userID);
console.log('用户登录名: ' + userInfo.loginName);
console.log('用户显示名称: ' + userInfo.userName);
@endsection
获取用户信息,即登陆客户端的用户的账号信息
kk.app.getUserInfo()
return:
名称 | 描述 |
---|---|
userID string | 用户id |
loginName string | 用户登录名 |
userName string | 用户显示名称 |
设置cookie setCookie
示例代码:
@section('设置cookie示例代码')
//设置cookie
kk.app.setCookie({
url: "http://192.168.1.187:7080/",
cookie: "JSESSIONID=DD24DC2A1174E096DD9FD912C98D775A; Path=/; HttpOnly"
},function(){
console.log('setCookie 成功');
});
@endsection
给某个网址设置cookie,一般用于离线页面跳转至在线页面时设置用户身份验证信息
kk.app.setCookie(options, [done], [fail])
params:
名称 | 描述 |
---|---|
options object | 包含url和cookie属性的对象,详见options |
done function,optional | 成功回调,没有回调参数 |
fail function,optional | 失败回调 |
options:
名称 | 描述 |
---|---|
url string | cookie生效的域 |
cookie string | cookie字符串 |
fail:
错误代码 | 错误信息 |
---|---|
999 | cookie生效的域为空 |
获取cookie getCookie
示例代码:
@section('获取cookie示例代码')
//获取cookie
kk.app.getCookie({
url: "http://192.168.1.187:7080/"
},function( res ){
console.log('getCookie coolieStr: ' + res.cookie );
});
@endsection
获取某个网址中的cookie
kk.app.getCookie(options, done, [fail])
params:
名称 | 描述 |
---|---|
options object | 包含url属性的对象,详见options |
done function | 成功回调,接收有cookie字符串属性的对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
options:
名称 | 描述 |
---|---|
url string | 要获取cookie的url |
callbacks:
名称 | 描述 |
---|---|
cookie string | 获取到的cookie字符串 |
fail:
错误代码 | 错误信息 |
---|---|
999 | 参数url为空 |
截屏 captureScreen
示例代码:
@section('截屏:以文件形式输出')
//截屏:以文件形式输出
kk.app.captureScreen({
encodingType: 'jpeg',
quality: 80,
destinationType: 'file',
savePath: 'sdcard://capturescreen/' + new Date().getTime() + '.jpeg'
}, function( res ){
//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.captureScreen([options,] done, [fail])
params:
名称 | 描述 |
---|---|
options string,optional | 配置参数,不传则全部使用默认参数,详见options |
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
options:
名称 | 描述 |
---|---|
targetWidth number,optional(100) | 输出图片宽 |
targetHeight number,optional(100) | 输出图片高,需和targetHeight配合使用 |
encodingType string,optional(‘png’) | 输出格式,可选值:jpeg/png |
quality number,optional(50) | 输出图片质量,范围:0-100 |
destinationType string,optional('data’) | 输出形式,可选值:file/data |
savePath number,optional | 保存路径,destinationType=file时有效,不指定时,以随机文件名保存到'sdcard://easymi/'文件夹 |
callbacks:
名称 | 描述 |
---|---|
imageURI string | 截屏后的文件保存路径(当destinationType为file时返回) |
imageFileOSPath string | 截屏后的文件的操作系统路径(当destinationType为file时返回) |
imageData string | 图片的base64编码(当destinationType为data时返回),可用作<img> 标签的src属性 |
fail:
错误代码 | 错误信息 |
---|---|
-2 | 参数错误 |
显示标题栏 showTitleBar
示例代码:
@section('显示标题栏示例代码')
//显示标题栏
kk.app.showTitleBar();
@endsection
显示应用容器(webview)的标题栏/导航栏
kk.app.showTitleBar()
隐藏标题栏 hideTitleBar
示例代码:
@section('隐藏标题栏示例代码')
//隐藏标题栏
kk.app.hideTitleBar();
@endsection
隐藏应用容器(webview)的标题栏/导航栏
kk.app.hideTitleBar()
设置标题栏标题 setTitle
示例代码:
@section('修改标题栏标题示例代码')
// 修改标题栏标题
kk.app.setTitle('个人信息');
@endsection
设置应用容器(webview)的标题栏/导航栏的标题
kk.app.setTitle(title)
params:
名称 | 描述 |
---|---|
title string | 标题文字 |
原生通讯录模块 Contact
设备通讯录模块 提供了操作客户端设别系统自带通讯录的能力
ContactInfo 联系人信息结构
名称 | 描述 |
---|---|
id string | 一个全局的唯一标识,可通过 find 方法获取到 |
name string | 名字 |
namePY string | 名字拼音/音标 |
cname string | 姓氏 |
cnamePY string | 姓氏拼音 |
company string | 公司 |
phones string | 联系人的电话号码列表,多个值之间用逗号分隔,其中每个位置的含义见下表 |
emails string | 联系人的邮件地址列表,多个值之间用逗号分隔,其中每个位置的含义见下表 |
addresses string | 联系人的地址列表,多个值之间用逗号分隔,其中每个位置的含义见下表 |
firstLetter string | 名字的首字母 |
prefix string | 前缀 |
middleName string | 中间名 |
suffix string | 后缀 |
nickname string | 昵称 |
jobTitle string | 职务 |
department string | 部门 |
birthday string | 生日 |
notes string | 备注 |
phones多个值时,每个位置的含义
位置 | 描述 |
---|---|
0 | 移动电话 |
1 | 住宅电话 |
2 | 工作电话 |
3 | 主要电话 |
4 | 住宅传真 |
5 | 工作传真 |
6 | 传呼 |
7 | 其他电话 |
email多个值时,每个位置的含义
位置 | 描述 |
---|---|
0 | 电子邮件 |
1 | 工作邮件 |
2 | 个人邮件 |
3 | 主要邮件 |
4及以后 | 其他邮件 |
address多个值时,每个位置的含义
位置 | 描述 |
---|---|
0 | 主要地址 |
1及以后 | 其他地址 |
添加联系人 add
示例代码:
@section('添加联系人示例代码')
//增加联系人
kk.contact.add({
'name':'Joyce',
'phones':'13499997777'
}, function(){
console.log('新增成功');
}, function(){
console.log('新增失败');
});
@endsection
添加联系人
kk.contact.add(contactInfo, [done], [fail])
params:
名称 | 描述 |
---|---|
contactInfo object | 联系人信息,无需指定id信息,详见上面 ContactInfo |
done function, optional | 成功回调,没有回调参数 |
fail function, optional | 失败回调 |
fail:
错误代码 | 错误信息 |
---|---|
9 | 操作失败 |
删除联系人 remove
示例代码:
@section('删除联系人示例代码')
//移除联系人
kk.contact.find({
'name':'Joyce.He',
'phones':'13499997777',
}, function( res ){
kk.contact.remove( res[0].id, function(){
console.log('删除成功');
}, function(){
console.log('删除失败');
});
}, function(){
console.log( '需要删除的联系人不存在' );
});
@endsection
删除联系人
kk.contact.remove(contactId, [done], [fail])
params:
名称 | 描述 |
---|---|
contactId string | 联系人Id |
done function, optional | 成功回调,没有回调参数 |
fail function, optional | 失败回调 |
fail:
错误代码 | 错误信息 |
---|---|
9 | 操作失败 |
修改联系人信息 update
示例代码:
@section('修改联系人信息示例代码')
//修改联系人信息
kk.contact.find({
'name':'Joyce.He',
'phones':'13499997777',
}, function( res ){
kk.contact.update({
id: res[0].id, // 必填
name: 'Joyce.He',
number: '13499998888'
}, function(){
console.log('修改成功');
}, function(){
console.log('修改失败');
});
}, function(){
console.log( '需要删除的联系人不存在' );
});
@endsection
修改联系人信息
kk.contact.update(contactInfo, [done], [fail])
params:
名称 | 描述 |
---|---|
contactInfo object | 联系人信息,参考add中contactInfo,id必填 |
done function, optional | 成功回调,没有回调参数 |
fail function, optional | 失败回调 |
fail:
错误代码 | 错误信息 |
---|---|
9 | 操作失败(id不存在) |
999 | id为空 |
查找联系人 find
示例代码:
@section('查找联系人示例代码')
//查找联系人
kk.contact.find({
name: 'Joyce.He',
number: '13499997777'
}, function( res ){
// 如果通讯录有重复的记录,则会返回多条
for( var i=0; i<res.length; i++ ){
console.log('联系人姓名:' + res[i].name + ',联系人电话:' + res[i].phone);
}
}, function(code, msg){
console.log('查找失败,code:' + code + ',msg:' + msg);
});
@endsection
查找联系人
kk.contact.find(options, done, [fail])
params:
名称 | 描述 |
---|---|
options object | 查找条件,详见options |
done function | 成功回调,接收数组为参数,数组元素为联系人信息对象,参考add中contactInfo |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
name string,optional | 联系人姓名 |
phone string,optional | 联系人手机号码 |
选择联系人 choose
示例代码:
@section('选择联系人示例代码')
//查找联系人
kk.contact.choose({
mode: 2
}, function( contacts ){
// 如果通讯录有重复的记录,则会返回多条
for( var i=0; i<res.length; i++ ){
console.log('联系人姓名:' + res[i].name + ',联系人电话:' + res[i].mobile);
}
}, function(code, msg){
console.log('查找失败,code:' + code + ',msg:' + msg);
});
@endsection
选择联系人
kk.contact.choose([options], done, [fail])
params:
名称 | 描述 |
---|---|
options object | 选择的条件,详见options |
done function | 成功回调,接收数组为参数,数组元素为精简的联系人信息对象,详见contact |
fail function, optional | 失败回调, |
options:
名称 | 描述 |
---|---|
mode number,optional(1) | 1选择人;2选择电话号码;3选择邮件地址。如果不指定则认为是1 |
contact:
名称 | 描述 |
---|---|
id string | 一个全局的唯一标识 |
name string | 名字 |
mobile string/array | 电话号码,mode为2,是字符串,其它情况下是数组,即多个电话号码 |
email string/array | 邮件地址,mode为3,是字符串,其它情况下是数组,即多个邮件地址 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 用户取消了选择 |
-3 | kk无通讯录权限 |
-6 | 参数错误 |
企业通讯录模块 Econtact
门户通讯录模块 提供了访问门户(客户端)自身通讯录的能力
contactInfo:
名称 | 描述 |
---|---|
userID string | 员工ID |
loginName string | 联系人登录名称 |
name string | 联系人姓名 |
depart string | 联系人直属部门名称 |
mobile string | 手机号码 |
email string | 邮箱地址 |
deptPath array | 员工所在所有部门名称,由顶层部门到底层部门依次排列 |
选择联系人 choose
示例代码:
@section('选择企业通讯录人员示例代码')
kk.econtact.choose({
'initList': ['loginName1','loginName2'],
'isSticky': false
}, function( selects ){
// selects是一个对象数组,这里获取第一个用户信息
console.log('第一个联系人登录名称:' + selects[0].loginName);
console.log('第一个联系人姓名:' + selects[0].userName);
console.log('第一个联系人直属部门名称:' + selects[0].depart);
// selects[0].deptPath 返回字符串数组
console.log('第一个联系人所有部门名称' + selects[0].deptPath);
console.log('第一个联系人所有部门的顶层部门名称' + selects[0].deptPath[0]);
}, function( code, msg){
console.log('选择联系人失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
联系人选择API
kk.econtact.choose([options], done, [fail])
params:
名称 | 描述 |
---|---|
options object, optional | 配置项,详见下面 options |
done function | 成功回调,返回包含被选择的联系人信息对象的数组,联系人信息结构请见 顶部 contactInfo 描述 |
fail function, optional | 失败回调,可选 |
options:
名称 | 描述 |
---|---|
initList array,optional([]) | 初始选中的联系人ID集合,为数组,可选 |
isSticky boolean,optional( false ) | 被选中的联系人是否被取消选中(可否编辑),true为不可取消,false为可以被编辑,可选 |
stickyList array, optional([]) | 初始化联系人中不可被移除的联系人ID,isSticky 为true时该参数无效 |
maxCount number, optional(0) | 最多可选择的人数(包含initList里面的人),0 表示不限制人数 |
isSelfSticky boolean, optional(false) | 是否默认带上自己并且不可移除 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 用户取消选择 |
根据人员ID查询人员信息 getUserInfoById
示例代码:
@section('根据人员ID查询人员信息示例代码')
kk.econtact.getUserInfoById([190293, 190932], function( selects ){
// selects是一个对象数组,这里获取第一个用户信息
console.log('第一个联系人登录名称:' + selects[0].loginName);
console.log('第一个联系人姓名:' + selects[0].userName);
console.log('第一个联系人直属部门名称:' + selects[0].depart);
// selects[0].deptPath 返回字符串数组
console.log('第一个联系人所有部门名称' + selects[0].deptPath);
console.log('第一个联系人所有部门的顶层部门名称' + selects[0].deptPath[0]);
}, function( code, msg){
console.log('查询联系人信息失败 code: ' + code +' ,msg: ' + msg );
});
@endsection
联系人选择API
kk.econtact.getUserInfoById(IDs, done, [fail])
params:
名称 | 描述 |
---|---|
IDs string/array | 所查询人员在企业通讯录中的ID,可以是单个人的ID,也可以是多个ID组成的数组 |
done function | 成功回调,返回包含被选择的联系人信息对象的数组,联系人信息结构请见 顶部 contactInfo 描述。如果所查人员不存在,则返回结果中无其对应信息 |
fail function, optional | 失败回调,可选 |
fail:
错误代码 | 错误信息 |
---|---|
-9 | 参数错误 |
电话短信模块 Phone
电话短信模块,提供了拨打电话、发送短信能力
电话 call
示例代码
@section('拨打电话:无需确认')
//直接拨出号码,无需确认
kk.phone.call('10086', false);
@endsection
@section('拨打电话:需确认')
//在用户确认后拨出号码
kk.phone.call('10086');
@endsection
拨打电话
kk.phone.call(phoneNumber, [needConfirm])
params:
名称 | 描述 |
---|---|
phoneNumber number | 电话号码 |
needConfirm boolean, optional(true) | 是否由用户确认拨号,true为需要确认后才拨号,iOS只支持false |
短信 sms
示例代码
@section('发送短信示例代码')
//发送短信
kk.phone.sms('10086', '打造大连接,蓝凌全新企业移动互联解决方案');
@endsection
发送短信
kk.phone.sms(phoneNumber, [content])
params:
名称 | 描述 |
---|---|
phoneNumber string | 电话号码 |
content string, optional(“) | 短信内容 |
设备模块 Device
设备模块可以设置设备屏幕显示方向及获取网络类型
设置屏幕方向 setOrientation
示例代码:
@section('设置屏幕方向为竖屏')
// 将屏幕设置为竖屏
kk.device.setOrientation( 1 );
@endsection
@section('设置屏幕方向为横屏')
// 将屏幕设置为横屏
kk.device.setOrientation( 2 );
@endsection
设置设备屏幕的显示方向
kk.device.setOrientation(orientation)
params:
名称 | 描述 |
---|---|
orientation number | 可选值 1/2,1:竖屏,2:横屏 |
获取网络类型 getNetType
示例代码:
@section('获取网络类型示例代码')
// 获取网络类型
kk.device.getNetType( function( res ){
var netType = res.netType;
switch( netType ){
case '':
// 无网络,使用本地数据
break;
case '2G':
// 使用远程文本内容
break;
case '3G':
// 使用远程的图片
break;
case '4G':
// 使用远程的图片
break;
case 'WIFI':
// 使用远程的视频
break;
}
});
@endsection
获取设备当前的网络类型
kk.device.getNetType(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调,接收包含网络类型的对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
netType string | 2G/3G/4G/WIFI,空字符串代表无网络,iOS下2G/3G均返回3G |
设置剪贴板内容 setClipboard
示例代码:
@section('设置剪贴板内容示例代码')
// 设置剪贴板内容
kk.device.setClipboard( 'Welcome to kk' );
@endsection
设置剪贴板内容
kk.device.setClipboard(text)
params:
名称 | 描述 |
---|---|
text string | 要拷贝的内容 |
媒体模块 Media
媒体模块,封装了拍照、录音、录制视频、选择相册图片、存储图片、播放音视频等能力
拍照(单张) getPicture
示例代码
@section('拍照(数据类型:file)')
//拍照(数据类型:file)
kk.media.getPicture({
sourceType: 'camera',
destinationType: 'file',
encodingType: 'png',
savePath: 'sdcard://media/photo/single.png'
}, function(res){
//res.imageFileOSPath, 可以直接设置为<img>标签的src来使用
//res.imageURI,可以作为kk.media.save2album()的filepath,将相片保存到相册
console.log('参数传入的保存路径:' + res.imageURI + ', 实际路径:' + res.imageFileOSPath);
$('#my-img').attr('src', res.imageFileOSPath);
}, function(code, msg){
console.log('错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
@section('拍照(数据类型:data)')
//拍照(数据类型:data),不需指定文件格式和储存路径
kk.media.getPicture({
sourceType: 'camera',
destinationType: 'data'
}, function(res){
//res.imageData, 可以直接设置为<img>标签的src来使用
console.log('照片的base64编码:' + res.imageData);
$('#my-img').attr('src', res.imageData);
}, function(code, msg){
console.log('错误信息:' + msg + ', 错误代码:' + code);
});
@endsection
获取单张照片
kk.media.getPicture([options,] done, [fail])
params:
名称 | 描述 |
---|---|
options object, optional | 配置参数,详见options |
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
sourceType string(camera) | 数据来源(album/camera),缺省为camera |
destinationType string(data) | 期望的数据类型(file/data),缺省为data |
targetWidth number(100) | 期望的图片宽度,缺省为100,单位px |
targetHeight number(100) | 期望的图片高度(和targetWidth配合,同时使用),缺省为100,单位px |
encodingType string(png) | 期望得到的图片的格式(jpeg/ png),缺省为png |
quality number(50) | 图片压缩率 0-100,缺省为50, encodingType 为png时,该参数无效 |
savePath string | 文件的保存路径,前提是destinationType = file,若没有传入,则系统自动生成一个路径 |
exifFlag boolean | 是否在照片信息中保存GPS位置信息 |
callbacks:
名称 | 描述 | 条件 |
---|---|---|
imageData string | 图片的base64编码,可以直接设置为 |
destinationType = data时返回 |
imageFileOSPath string | 图片在操作系统上的实际路径 | destinationType = file 时返回, 可直接作为图片的src来显示 |
imageURI string | 保存文件的协议路径(若没有传入,则系统自动生成一个路径) | destinationType = file 时返回 |
imageTime Date | 图片创建时间对象 | 当destinationType = file时,多张以逗号进行分割 |
imageTimeString String | 图片创建时间字符串,以yyyymmddhhmmss格式显示 | 当destinationType = file时,多张以逗号进行分割 |
fail:
错误代码 | 错误信息 |
---|---|
-90 | 参数错误 |
-1 | 获取错误 |
获取签名图片 getSignImage
示例代码
@section('获取签名图片示例代码')
kk.media.getSignImage({
width: 100,
height: 100,
penSize: 3,
penColor: 2
}, function(res){
console.log('签名图片的路径:' + res.resultPath);
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
获取签名的图片
kk.media.getSignImage(options, done, [fail])
params:
名称 | 描述 |
---|---|
options object | 配置参数,详见options |
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
width number | 输出的图片宽度,单位px |
height number | 输出的图片高度(和width配合,同时使用),单位px |
penSize number(2), optional | 画笔的粗细:1.细,2.一般,3.粗,缺省为2 |
penColor number(1), optional | 画笔的颜色:1.黑,2.蓝,3.红,缺省为1 |
callbacks:
名称 | 描述 |
---|---|
resultPath string | 保存签名图片的路径 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 用户取消 |
-3 | 处理图片错误 |
-90 | 参数错误 |
保存图片到相册 save2album
示例代码
@section('保存本地图片到相册')
//保存本地图片到相册
kk.media.save2album({
filepath: 'sdcard://media/photo/multi/101.jpeg'
}, function(){
console.log('照片保存成功');
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
@section('保存在线图片到相册')
//保存在线图片到相册
kk.media.save2album({
filepath: 'http://www.baidu.com/icon.jpg'
}, function(){
console.log('照片保存成功');
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
保存图片到相册
kk.media.save2album(options, [done], [fail])
params:
名称 | 描述 |
---|---|
options object | 配置选项,详见options |
done function, optional | 成功回调 |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
filepath string | 要保存的照片路径,可以是在线图片 |
fail:
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
9 | 保存到相册失败 |
预览图片 previewImage
示例代码
@section('预览图片示例代码')
// 预览图片
kk.media.previewImage({
paths: [
'sdcard://1.jpg',
'sdcard://2.jpg',
'sdcard://3.jpg',
]
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
使用原生UI来浏览图片(可以是多张图片), 并支持图片的缩放操作
kk.media.previewImage(options, [fail])
params:
名称 | 描述 |
---|---|
options object | 配置参数,详见options |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
paths array | 所要预览图片的地址列表,暂时仅支持传入本地图片地址, 即文件路径列出的几种地址 |
current int, optional(0) | 当前图片的索引(在列表中的序号), 索引从0开始计数 |
fail:
错误代码 | 错误信息 |
---|---|
-9 | 路径参数为空 |
999 | 预览失败(地址没有按顺序填写,中间存在空值) |
录制视频 captureVideo
示例代码
@section('录制视频示例代码')
//录制视频
kk.media.captureVideo({
quality: 'MEDIUM',
savePath: 'sdcard://media/video/test.mov',
duration: 20
}, function(res){
console.log('文件名:' + res.name);
console.log('文件全路径:' + res.fullPath);
console.log('MIME类型:' + res.type);
console.log('最后修改的时间:' + res.lastModifiedDate);
console.log('文件大小:' + res.size);
console.log('录制结束方式:' + res.endingType);
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
录制视频,录制的格式取决于操作系统,下面有说明
kk.media.captureVideo([options], done, [fail])
视频录制格式:
名称 | 描述 |
---|---|
Android下 | 录制的格式为3gp |
iOS下 | 录制的格式为mov |
params:
名称 | 描述 |
---|---|
options object, optional | 配置参数,详见options |
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
quality string,optional(‘LOW’) | 质量参数,可选值:LOW,MEDIUM,HIGH |
savePath string | 要保存的路径 (如果不指定,将使用sdcard://协议保存一个随机文件名) |
duration number,optional | 录像时长(单位:秒;如果不指定,则默认长度不做限制) |
callbacks:
名称 | 描述 |
---|---|
name string | 不含路径信息的文件名 |
fullPath string | 包含文件名的文件全路径 |
type string | MIME类型 |
lastModifiedDate string | 文件最后修改的日期和时间,如20150629154714,表示最后修改时间是“2015年06月29日15时47分14秒” |
size number | 文件大小(单位为字节) |
endingType number | 录制结束方式,0:主动结束,1:来电或其他因素打断 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 用户取消 |
-2 | 创建录制文件失败 |
带native UI的录音 captureAudio
示例代码
@section('录音示例代码')
//带native UI的录音
kk.media.captureAudio(function(res){
console.log('文件名:' + res.name);
console.log('文件全路径:' + res.fullPath);
console.log('文件类型:' + res.type);
console.log('文件大小:' + res.size);
}, function(code, msg){
if(code == -3){
console.log('录音被取消了');
}else if(code == -9){
console.log('录音错误');
}else{
console.log('录音失败');
}
});
@endsection
带native UI的录音能力
kk.media.captureAudio(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
name string | 文件名 |
fullPath string | 文件在系统上的绝对路径 |
type string | 文件类型 |
size number | 文件大小(单位为字节) |
fail:
错误代码 | 错误信息 |
---|---|
±3 | 录音被取消了 |
-9 | 录音错误 |
带native UI的音频播放 playAudio
示例代码
@section('音频播放示例代码')
//带native UI的音频播放
kk.media.playAudio('sdcard://media/audio/test.wav', function(code, msg){
console.log('音频播放失败,错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
带native UI的音频播放能力
kk.media.playAudio(filePath, [fail])
params:
名称 | 描述 |
---|---|
filePath string | 音频文件路径 |
fail function, optional | 失败回调 |
fail:
错误代码 | 错误信息 |
---|---|
-3 | 播放被取消了 |
-9 | 播放错误 |
加密/解密模块 Crypto
加密模块提供文件、字符串的加密和解密能力
加密字符串 encrypt
示例代码:
@section('加密字符串示例代码')
//加密字符串
kk.crypto.encrypt({
text: '需要加密的字符串',
key: 'mykey'
}, function( res ){
console.log('加密后的字符串:' + res.text );
localStorage.encryptText = res.text;
},function( code, msg ){
console.log('错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
加密字符串
kk.crypto.encrypt(options, done, [fail])
params:
名称 | 描述 |
---|---|
options object | 配置参数,详见options |
done function | 成功回调,接收包含加密后的字符串的对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
options:
名称 | 描述 |
---|---|
text string | 要加密的字符串 |
key string | 密钥 |
callbacks:
名称 | 描述 |
---|---|
text string | 加密后的字符串 |
fail:
错误代码 | 错误信息 |
---|---|
9 | 加密失败 |
解密字符串 decrypt
示例代码:
@section('解密字符串示例代码')
//解密字符串
var encryptText = localStorage.encryptText;
// encryptText 是一段加密后的字符串,类似 '7kxl8E55rJFm642Oelilew==';
kk.crypto.decrypt({
text: encryptText,
key: 'mykey'
}, function( res ){
console.log('解密后的字符串:' + res.text );
}, function( code, msg ){
console.log('错误代码:' + code + ' ,错误信息:' + msg );
});
@endsection
解密字符串
kk.crypto.decrypt(options, done, [fail])
params:
名称 | 描述 |
---|---|
options object | 配置参数,详见options |
done function | 成功回调,接收包含解密后的字符串的对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
options:
名称 | 描述 |
---|---|
text string | 被加密的字符串 |
key string | 密钥 |
callbacks:
名称 | 描述 |
---|---|
text string | 解密后的字符串 |
fail:
错误代码 | 错误信息 |
---|---|
9 | 解密失败 |
混淆文件(加密文件) obscureFile
示例代码:
@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.obscureFile(options, [done], [fail])
params:
名称 | 描述 |
---|---|
options string | 配置选项,详见options |
done function,optional | 成功回调,不接收参数 |
fail function,optional | 失败回调 |
options:
名称 | 描述 |
---|---|
obscure string | 混淆因子(密钥) |
sourceFile string | 源文件路径 |
dealSourceFile boolean,optional(false) | 是否直接处理源文件,为true时,忽略outputFile属性 |
outputFile string | 文件输出路径,dealSourceFile为true时,此属性无效 |
fail:
错误代码 | 错误信息 |
---|---|
9 | 源文件不存在或源文件数据为空 |
恢复文件(解密文件) restoreFile
示例代码:
@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.crypto.restoreFile(options, [done], [fail])
params:
名称 | 描述 |
---|---|
options string | 配置选项,详见options |
done function,optional | 成功回调,不接收参数 |
fail function,optional | 失败回调 |
options:
名称 | 描述 |
---|---|
obscure string | 混淆因子(密钥) |
sourceFile string | 源文件路径 |
dealSourceFile boolean,optional(false) | 是否直接处理源文件,为true时,忽略outputFile属性 |
outputFile string | 文件输出路径,dealSourceFile为true时,此属性无效 |
fail:
错误代码 | 错误信息 |
---|---|
9 | 源文件不存在或源文件数据为空 |
代理模块 Proxy
代理请求模块,封装了与服务器进行数据交互的能力。
Proxy.request调用方式类似于$.ajax,可以与服务器进行文本数据交互。
Proxy.Download和Proxy.Upload可以和服务器之间进行文件的下载和上传,支持断点续传。这两个能力被封装成了类,需要 new 创建实例来使用。
设置请求的默认参数 requestSetup
示例代码
@section('设置请求的默认参数示例代码')
//设置请求的默认参数
kk.proxy.requestSetup({
url: '/request.do',//请求的URL
data: {//请求的参数,JSON Object或字符串
"username": "landray",
"password": "connect"
},
contentType: 'application/json',//参数的编码格式
dataType: 'json',//返回数据格式
headers: {//额外的http头
'Accept-Language': 'zh',
'Date': 'HTTP-date'
},
success: function(res){//成功回调
console.log(JSON.stringify(res));
},
error: function(code, msg){//失败回调
console.log('错误信息:' + msg + ', 错误代码:' + code);
}
})
@endsection
设置请求的默认参数,返回设置后参数集合对象
kk.proxy.requestSetup(options)
params:
名称 | 描述 |
---|---|
options object | 配置参数,详见options |
options:
名称 | 描述 |
---|---|
url string | 请求的URL。实际URL是管理台配置的地址和相对地址拼接起来的地址 |
data object/string | 请求的参数,JSON Object或者字符串 |
contentType string,optional(‘form’) | 发送参数时的编码格式,预定义了两个简写模式:form/json,也可以自定,详见contentType |
dataType string,optional('text’) | 返回数据格式,可选值有text/json,为json时,返回的数据就是一个json对象 |
headers object,optional | 额外的http头 |
success function,optional | 成功回调,接收一个对象作为参数,详见callbacks |
error function,optional | 失败回调 |
示例代码
@section('')
// ContentType使用示例
contentType:'application/json;charset=UTF-8'
@endsection
contentType:
名称 | 描述 |
---|---|
application/x-www-form-urlencoded | 以表单形式发送请求体,默认值 |
application/json | 以JSON形式发送请求体 |
callbacks:
结构与 opitons 一致
代理请求 request
示例代码
@section('代理请求示例代码')
//代理请求
kk.proxy.request({
url: '/request.do',//请求的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
@section('代理请求:预先设定默认参数')
//如果多个请求参数相同,可以设置默认参数以简化请求
var req = kk.proxy.requestSetup({
contentType: 'application/json',//参数的编码格式
dataType: 'json',//返回数据格式
headers: {//额外的http头
'Accept-Language': 'zh',
'Date': 'HTTP-date'
},
error: function(code, msg){//失败回调
console.log('错误信息:' + msg + ', 错误代码:' + code);
}
});
//简化后的请求
req.request({
url: '/request.do'; //请求的URL
data: { //请求的参数,JSON Object
"username": "landray",
"password": "connect"
},
success: function( res ){
console.log(JSON.stringify(res));
}
});
@endsection
代理请求
kk.proxy.request(options)
params:
名称 | 描述 |
---|---|
options object | 配置参数,与requestSetup的参数一致,详见requestSetup(options) |
callbacks:
名称 | 描述 |
---|---|
content string/object | 返回数据类型form 时对应类型是string ,json 时对应的类型是object |
fail:
错误代码 | 错误信息 |
---|---|
102 | 代理请求失败 |
文件上传构造函数 Upload
示例代码
@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
上传的构造函数
new kk.proxy.Upload(options, done, fail)
params:
名称 | 描述 |
---|---|
options object | 配置参数,详见options |
done function | 成功回调,接收一个对象作为参数,详见callbacks. 上传过程中会不停调用该回调, 直至上传完成 |
fail function | 失败回调 |
options:
名称 | 描述 |
---|---|
url string | 文件上传至服务器的地址 |
path string | 文件在本地地址 |
isContinuous boolean,optional(false) | 是否断点续传,true 表示断点续传 |
callbacks:
名称 | 描述 |
---|---|
progress number | 文件已上传进度,0~100,当上传至100时表示上传完成 |
path string | 文件在本地的地址,上传完成时才会有该属性 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 未连接到服务器 |
-2 | 文件本地地址为空 |
-3 | 和服务器交互发生异常 |
404 | 上传的文件不存在 |
其它 number | 透传服务端错误码 |
文件下载构造函数 Download
示例代码
@section('文件下载构造函数示例代码')
// 创建一个代理实例
var proxy = new kk.proxy.Download({
url: '/download/test.txt',//文件下载至服务器的地址
path: 'sdcard://download.txt',//文件在本地地址
isContinuous: false//是否断点续传,默认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
下载的构造函数
new kk.proxy.Download(options, done, fail)
params:
名称 | 描述 |
---|---|
options object | 配置参数,详见options |
done function | 成功回调,接收一个对象作为参数,详见callbacks. 下载过程中会不停调用该回调, 直至下载完成 |
fail function | 失败回调 |
options:
名称 | 描述 |
---|---|
url string | 文件在服务器的地址 |
path string | 文件保存到本地的地址 |
isContinuous boolean,optional(false) | 是否断点续传,true 表示断点续传 |
callbacks:
名称 | 描述 |
---|---|
progress number | 文件已下载进度,0-100,当下载至100时表示下载完成 |
path string | 文件在本地的地址,下载完成时才会有该属性 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 未连接到服务器 |
-2 | 保存到本地文件失败 |
-3 | 和服务器交互发生异常 |
-4 | 下载内容变了 |
其他 number | 透传服务器错误码 |
文件压缩解压缩模块 Zip
文件压缩解压缩模块,提供了文件压缩和解压缩能力
压缩文件 zip
示例代码
@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.zip(options, [done], [fail])
params:
名称 | 描述 |
---|---|
options object | 配置选项,详见options |
done function, optional | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
folderPath string | 要压缩的文件(夹)路径 |
filePaths array | 要被压缩的多个文件(夹)的路径,中间用逗号分隔。如果folderPath参数提供了,本参数会被忽略。 |
zipFilePath string | 压缩生成的zip文件路径 |
callbacks:
名称 | 描述 |
---|---|
zipFilePath string | 压缩后的zip文件路径 |
FolderPath string | 源文件(夹)的路径,Android无此属性 |
fail:
错误代码 | 错误信息 |
---|---|
1 | FolderPath对于native为空或者不存在 |
8 | 参数非法 |
9 | 压缩失败 |
解压文件 unzip
示例代码
@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.zip.unzip(options, [done], [fail])
params:
名称 | 描述 |
---|---|
options object | 配置选项,详见options |
done function,optional | 成功回调,返回一个对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
options:
名称 | 描述 |
---|---|
zipFilePath string | 需要解压文件(夹)的路径 |
outPath string | 解压后的输出目录 |
callbacks:
名称 | 描述 |
---|---|
zipFilePath string | 源压缩文件的路径,Android无此属性 |
outPath string | 解压后的输出目录 |
fail:
错误代码 | 错误信息 |
---|---|
1 | zipFilePath对于native为空或者不存在 |
9 | 解压缩失败 |
文件操作模块 File
该模块为一个类,使用时需要new 一个实例
可以获取文件信息、查看文件、删除文件等
文档中 kk.File::method
表示使用file的实例来调用原型方法
构造函数 File
示例代码:
@section('创建file实例')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.txt');
// 用file来调用实例的方法
@endsection
需要new 一个实例,才能调用File的其他API能力。
File 类的构造函数
kk.File(filePath)
params:
名称 | 描述 |
---|---|
filePath String | 文件路径 |
获取文件路径 getOSPath
示例代码:
@section('获取文件路径示例代码')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.txt');
//获取文件路径
file.getOSPath(function(res){
console.log('文件在系统上的路径:' + res.OSPath);
});
@endsection
获取文件在操作系统上的路径
kk.File::getOSPath(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
OSPath string | 文件在系统上的路径 |
fail:
错误代码 | 错误信息 |
---|
获取文件信息 info
示例代码:
@section('获取文件信息示例代码')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.txt');
//获取文件信息
file.info(function(res){
console.log('文件名称: ' + res.name);
console.log('文件大小:' + res.size);
console.log('文件最后修改时间:' + res.lastModifiedTime);
console.log('文件相对存储路径:' + res.path);
console.log('是否是文件夹:' + res.isDir);
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
获取文件信息
kk.File::info(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
name string | 文件名称 |
size string | 文件大小,单位byte |
lastModifiedTime string | 文件最后修改时间,如20150629154714,表示最后修改时间是“2015年06月29日15时47分14秒” |
path string | 文件的相对存储路径 |
isDir boolean | 路径是否指向的是一个文件夹 |
fail:
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
判断文件是否存在 exists
示例代码
@section('判断文件是否存在示例代码')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.txt');
//判断文件是否存在
file.exists(function( res ){
if( res.exists ){
console.log('文件存在');
}else{
console.log('文件不存在');
}
});
@endsection
判断文件是否存在
kk.File::exists(done)
params
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
callbacks
名称 | 描述 |
---|---|
exists boolean | true 表示文件存在,false 表示文件不存在 |
删除文件 remove
示例代码
@section('删除文件示例代码')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.txt');
//删除文件
file.remove(function( ){
console.log('删除文件成功 ');
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
删除文件
kk.File::remove(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调 |
fail function, optional | 失败回调 |
fail:
错误代码 | 错误信息 |
---|---|
1 | 不能访问指定的路径 |
2 | 文件不存在 |
9 | 删除失败 |
查看文件 view
示例代码
@section('查看文件示例代码')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.txt');
//查看文件
file.view({
useWebview: true,
otherButton: '1',
mimeType: 'text/txt'
}, function(res){
console.log('文件信息:' + JSON.stringify(res));
if( res.buttonIndex == 1 ){
console.log('自定义 按钮1 被触发');
}
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
查看文件
kk.File::view([options,] done, [fail])
params:
名称 | 描述 |
---|---|
options string, optional | 配置参数,详见options |
done function | 成功回调,options默认和自定义时返回对象的属性不同,详见callbacks |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
useWebview boolean,optional(true) | 是否使用webview打开,Android才能设置为false |
otherButton string,optional | 可以定义其他的按钮文字(缺省带返回按钮),如果多个用逗号分隔,useWebview为true时生效 |
mimeType string,optional | 文件的类型,如果不传,从文件名分析 |
callbacks(默认配置):
名称 | 描述 |
---|---|
filepath string | 文件的相对路径 |
buttonIndex number | 接收按钮顺序号作为参数,一般值为1~N,0表示按了返回 |
useWebview boolean | 是否使用webview打开 |
callbacks(自定义配置):
名称 | 描述 |
---|---|
useWebview boolean | 是否使用webview打开 |
buttonIndex number | 接收按钮顺序号作为参数,一般值为1~N,0表示按了返回 |
otherButton string | 返回时点击的按钮的value属性值,默认‘返回'键值为0 |
mimeType string | 文件的类型 |
filepath string | 文件的相对路径 |
fail:
错误代码 | 错误信息 |
---|
读取文件内容 readAsText
示例代码
@section('读取文件内容示例代码')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.txt');
//读取文件内容
file.readAsText('utf-8', function(res){
console.log('文本内容:' + res.content);
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
读取文本文件内容
kk.File::readAsText([encoding,] done, [fail])
params:
名称 | 描述 |
---|---|
encoding encoding, optional | 编码方式,默认'utf-8'方式编码 |
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
content string | 接收有content属性的对象作为参数,content为文本内容 |
fail:
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
9 | 没有查看权限 |
将文件转换base64字符串 readAsBase64
示例代码
@section('将文件转换base64字符串示例代码')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.jpg');
// 读取文件内容
file.readAsBase64(function(res){
var imgData = 'data:image/jpeg;base64,' + res.content;
// 在此即可将图片的src设置为 imgData, 图片即可显示
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
读取文本文件内容
kk.File::readAsBase64(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
content string | 接收有content属性的对象作为参数,content为base64字符串 |
fail:
错误代码 | 错误信息 |
---|---|
1 | 文件不存在 |
拷贝文件 copyTo
示例代码
@section('拷贝文件示例代码')
// 创建一个File实例
var file = new kk.File('sdcard://kktest/fileTest.txt');
//拷贝文件
file.copyTo('sdcard://kktest/test.txt', function(){
console.log('拷贝文件成功');
},
function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
拷贝文件
kk.File::copyTo(targetPath, done, [fail])
params:
名称 | 描述 |
---|---|
targetPath string | 目标文件的路径 |
done function | 成功回调,没有回调参数 |
fail function, optional | 失败回调 |
fail:
错误代码 | 错误信息 |
---|---|
1 | 源文件不存在 |
9 | 文件拷贝发生错误 |
定位模块 Location
封装了地理定位的能力
获取当前位置 getLocation
示例代码:
@section('获取当前位置示例代码')
//获取当前位置
kk.location.getLocation( function( res ){
console.log( '经度:' + res.longitude );
console.log( '纬度:' + res.latitude );
console.log( '海拔:' + res.altitude );
});
@endsection
获取当前位置的坐标信息,包括经度、纬度、海拔
kk.location.getLocation(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调,接收一个对象作为参数,详见callbacks |
fail function,optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
longitude string | 经度 |
latitude string | 纬度 |
altitude string | 海拔 |
fail:
错误代码 | 错误信息 |
---|---|
3 | 参数非法 |
9 | 没有定位功能 |
历史记录模块 History
历史记录模块,提供操作webview历史记录的能力(前进、后退等)
是否可以前进及后退 canGo
示例代码:
@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.canGo(done)
params:
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
callbacks:
名称 | 描述 |
---|---|
canGoBack boolean | 是否能够后退 |
canGoForward boolean | 是否能能够前进 |
判断是否有上一页 hasPrev
示例代码:
@section('判断是否有上一页示例代码')
//判断是否有上一页
kk.history.hasPrev(function(res){
if(res.hasPrev){
console.log('页面有上一页');
}else{
console.log('页面没有上一页');
}
});
@endsection
判断当前页面是否有上一页
kk.history.hasPrev(done)
params:
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
callbacks:
名称 | 描述 |
---|---|
hasPrev boolean | 是否有上一页,true 为有上一页 |
上一页 back
示例代码:
@section('返回上一页示例代码')
//返回上一页
kk.history.back( function(){
console.log('当前页不能做返回操作');
});
@endsection
返回到上一页
kk.history.back([fail])
params:
名称 | 描述 |
---|---|
fail function,optional | 失败回调,如果没有上一页,则会调用该函数,该函数不接受参数 |
下一页 forward
示例代码:
@section('前往下一页示例代码')
//前进下一页
kk.history.forward( function(){
console.log('当前页不能做跳转下一页操作');
});
@endsection
前进到下一页
kk.history.forward([fail])
params:
名称 | 描述 |
---|---|
fail function,optional | 失败回调,如果没有下一页,则会调用该函数,该函数不接受参数 |
扫描器模块 Scanner
扫描器模块提供扫描二维码、条形码及生成二维码的能力
扫描条形码 scanBarCode
示例代码
@section('扫描条形码示例代码')
//扫描条形码
kk.scaner.scanBarCode(function(res){
console.log('条形码内容:' + res.code);
});
@endsection
扫描条形码
kk.scaner.scanBarCode(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
code string | 条形码的内容 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 用户取消 |
1 | 设备不支持 |
扫描二维码 scanTDCode
实例代码
@section('扫描二维码示例代码')
//扫描二维码
kk.scaner.scanTDCode(function(res){
console.log('二维码内容:' + res.code);
});
@endsection
扫描二维码
kk.scaner.scanTDCode(done, [fail])
params:
名称 | 描述 |
---|---|
done function | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
callbacks:
名称 | 描述 |
---|---|
code string | 二维码的内容 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 用户取消 |
1 | 设备不支持 |
生成二维码 getQRCode
示例代码
@section('生成二维码示例代码')
//生成二维码
kk.scaner.getQRCode({
content: '蓝凌软件股份有限公司',
targetSize: 100,
destinationType: 'file',
savePath: 'sdcard://easymi/1.png'
}, function(res){
console.log('二维码处理后的文件保存路径:' + res.imageURI);
console.log('二维码处理后的文件的操作系统路径:' + res.imageFileOSPath);
}, function(code, msg){
console.log('错误信息:' + msg + ',错误代码:' + code);
});
@endsection
生成二维码图片,图片格式为png
kk.scaner.getQRCode(options, [done], [fail])
params:
名称 | 描述 |
---|---|
options object | 生成二维码的配置项,详见options |
done function, optional | 成功回调,返回一个对象作为参数,详见callbacks |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
content string | 二维码内容 |
targetSize number | 输出的正方形图片的边长,范围:50-800 |
destinationType string | 文件输出形式,可选值:file/data |
savePath string | 输出类型为file时有效,不指定则随机文件名保存至 sdcard://easymi/ 目录下 |
callbacks:
名称 | 描述 |
---|---|
imageURI string | 处理后的文件保存路径(当destinationType为file时,返回此属性) |
imageFileOSPath string | 处理后的文件的操作系统路径(当destinationType为file时,返回此属性) |
imageData string | 图片内容的base编码(当destinationType为data时,返回此属性) |
fail:
错误代码 | 错误信息 |
---|---|
9 | 生成失败 |
菜单模块 Menu
menu模块,提供了对webview右上角的菜单项的相关能力,如显示或隐藏菜单项、分享等等
显示右上角菜单项目 showMenuItems
示例代码:
@section('显示右上角菜单项示例代码')
kk.menu.showMenuItems();
@endsection
显示应用容器(webview)右上角的菜单项
kk.menu.showMenuItems()
隐藏右上角菜单项目 hideMenuItems
示例代码:
@section('隐藏右上角菜单项示例代码')
kk.menu.hideMenuItems();
@endsection
隐藏应用容器(webview)右上角的菜单项
kk.menu.hideMenuItems()
兼容微信的能力模块 Wx
兼容微信JS_SDK能力的模块,目前仅兼容微信和kk共有的能力,能力调用方式和微信一致
wx的ready
示例代码
@section('准备调用微信API示例代码')
//wx的ready
wx.ready(function(){
console.log('准备调用微信API');
});
@endsection
wx的ready,兼容微信,区别在于回调函数多了参数
kk.wx.ready(fn)
params:
名称 | 描述 |
---|---|
fn function | 成功回调 |
能力支持检查 checkJsApi
示例代码
@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.checkJsApi(options)
params:
名称 | 描述 |
---|---|
options object | 配置选项,详见options |
options:
名称 | 描述 |
---|---|
jsApiList array | 要检查是否支持的能力名称 |
success function | 成功回调,返回一个对象作为参数,详见callbacks |
callbacks:
名称 | 描述 |
---|---|
checkResult object | 以键值对的形式返回json object,可用的api值true,不可用为false |
errMsg string | 错误信息 |
预览图片 previewImage
示例代码
@section('预览图片示例代码')
// 预览图片
kk.wx.previewImage({
current: 'sdcard://1.jpg',
urls: [ 'sdcard://1.jpg', 'sdcard://2.jpg', 'sdcard://3.jpg']
});
@endsection
预览图片,目前仅支持预览本地图片
kk.wx.previewImage(options)
params:
名称 | 描述 |
---|---|
options object | 调用参数,详见options |
options:
名称 | 描述 |
---|---|
current string | 当前显示图片的地址 |
urls array | 需要预览的图片地址列表 |
录音 startRecord
示例代码
@section('微信录音示例代码')
//录音
kk.wx.startRecord();
@endsection
开始录音,完全兼容
kk.wx.startRecord()
停止录音 stopRecord
示例代码
@section('停止微信录音示例代码')
//停止录音
kk.wx.stopRecord({
success: function(res){
//用户停止录音后执行的回调函数
console.log(JSON.stringify(res));
console.log('录音文件路径:' + res.fullPath);
}
});
@endsection
停止录音,兼容微信,但是参数不一致。
kk.wx.stopRecord(options)
params:
名称 | 描述 |
---|---|
options object | 调用参数,详见options |
options:
名称 | 描述 |
---|---|
success function | 用户停止录音后的回调函数,返回的参数与captureAudio一致 |
录音自动结束事件 onVoiceRecordEnd
微信有录音1分钟的限制,kk没有,提供此函数仅为兼容,没有实际作用
kk.wx.onVoiceRecordEnd(obj)
播放语音 playVoice
示例代码
@section('播放语音示例代码')
//播放语音
kk.wx.playVoice({
localId: '' // 此处得传kk约定的音频文件路径
});
@endsection
播放语音
kk.wx.playVoice(option)
params:
名称 | 描述 |
---|---|
option object | 调用参数,详见options |
详见options:
名称 | 描述 |
---|---|
localId string | 语音地址。此处得传kk约定的音频文件路径 |
获取当前网络类型 getNetworkType
示例代码
@section('获取当前网络类型示例代码')
//获取当前网络类型
kk.wx.getNetworkType({
success: function(res){
var networkType = res.networkType;
// 返回网络类型:空字符串,2G,3G(iOS下2G/3G均返回3G),WIFI
console.log('获取当前网络类型:' + networkType);
}
});
@endsection
获取当前网络类型,完全兼容微信
kk.wx.getNetworkType(options)
params:
名称 | 描述 |
---|---|
option object | 调用参数,详见options |
options:
名称 | 描述 |
---|---|
success function | 回调函数,返回一个对象作为参数,详见callbacks |
callbacks:
名称 | 描述 |
---|---|
networkType string | 返回网络类型:空字符串,2G,3G(iOS下2G/3G均返回3G),4G,WIFI |
wx获取当前位置 getLocation
示例代码
@section('微信获取当前位置示例代码')
//获取当前位置
kk.wx.getLocation({
success: function(res){
console.log( '纬度:' + res.latitude );
console.log( '经度:' + res.longitude );
console.log( '海拔:' + res.altitude );
}
});
@endsection
获取当前位置,兼容微信,缺少部分数据。返回参数与kk.location.getLocation一致
kk.wx.getLocation(options)
params:
名称 | 描述 |
---|---|
option object | 调用参数,详见options |
options:
名称 | 描述 |
---|---|
success function | 回调函数,返回一个对象作为参数,详见callbacks |
callbacks:
名称 | 描述 |
---|---|
latitude string | 纬度 |
longitude string | 经度 |
altitude string | 海拔 |
退出应用 closeWindow
示例代码
@section('退出应用示例代码')
//退出应用
kk.wx.closeWindow();
@endsection
关闭窗口(退出应用),完全兼容微信
kk.wx.closeWindow()
扫描二维码 scanQRCode
示例代码
@section('扫描二维码示例代码')
//扫描二维码
kk.wx.scanQRCode({
needResult: 1,//只支持 needResult 为1
scanType: 'barCode',
success: function(res){
console.log('扫描结果:' + res.resultStr);
//=>{"resultStr": "http://baidu.com"}
}
})
@endsection
扫描二维码,部分兼容
kk.wx.scanQRCode(options)
params:
名称 | 描述 |
---|---|
options object | 配置选项,详见options |
options:
名称 | 描述 |
---|---|
needResult number | 只支持 needResult 为1,直接返回扫描结果 |
scanType string | 可以指定扫二维码还是一维码,默认二者都有 |
success function | 回调函数,返回一个对象作为参数,详见callbacks |
callbacks:
名称 | 描述 |
---|---|
resultStr object | 二维码的内容 |
友情链接: 微信JS-SDK说明文档
API:
名称 | 描述 |
---|---|
chooseImage | 拍照或从手机相册中选图接口 |
previewImage | 预览图片接口 |
uploadImage | 上传图片接口 |
downloadImage | 下载图片接口 |
支付模块 Pay
支付能力模块 提供了向第三方支付的能力,目前仅限ios平台
微信App支付 weixin
示例代码:
@section('发起微信app支付示例代码')
kk.pay.weixin({
appid: 'wx0aee55eb7d35b42b', // 你的appid,需要自己申请
partnerid: '1229457302', // 商户号id
prepayid: '12294573232', // 交易会话id
package: 'Sign=WXPay',
noncestr: 'Wm3WZYTPz0wzccnW',
timestamp: '1477460765018',
sign: '0f9de62fce790f9a083d5c99e95740ceb90c27ed'
}, function(){
}, function( code, msg){
console.log('微信app支付失败回调 code: ' + code +' ,msg: ' + msg );
});
@endsection
微信支付API
kk.pay.weixin(options, done, [fail])
params:
名称 | 描述 |
---|---|
options object, optional | 配置项,详见下面 options |
done function | 成功回调 可选 |
fail function, optional | 失败回调 |
options:
名称 | 描述 |
---|---|
appid | 微信开放平台审核通过的应用APPID。必填 |
partnerid | 微信支付分配的商户号。必填。 |
prepayid | 微信返回的支付交易会话ID。必填。 |
package | 暂填写固定值Sign=WXPay。必填。 |
noncestr | 随机字符串,不长于32位。必填。 |
timestamp | 时间戳,标准北京时间,自1970年1月1日 0点0分0秒以来的秒数。必填。 |
sign | 签名,详见微信支付官网上的签名算法。必填。 |
fail:
错误代码 | 错误信息 |
---|---|
-1 | 微信拒绝发起支付(一般是由于接入信息不正确、签名不正确等) |
-2 | 用户取消 |
-3 | 设备上未安装微信 |
工具模块 Utils
工具模块提供了一些常用的工具函数。
判断参数类型 type
示例代码
@section('判断参数类型:不传type')
//不传递type:获取参数的数据类型
kk.utils.type(123);//=> Number
@endsection
@section('判断参数类型:传type')
//传递type:判断参数类型是否正确
kk.utils.type('obj', 'String');//=> true
@endsection
此方法有2种调用形式:
1.传递一个参数obj,返回obj的数据类型
获取参数的数据类型
kk.utils.type(obj)
return:
返回参数的数据类型
2.传递两个参数obj type,返回布尔值
判断obj的数据类型是否等于type,如果等于返回true
,否则返回false
kk.utils.type(obj, type)
return:
返回布尔值
特殊情况:
示例 | 描述 |
---|---|
kk.utils.type() | 返回undefined |
kk.utils.type(null) | 返回null |
kk.utils.type(undefined) | 返回undefined |
kk.utils.type(NaN) | 返回Number |
判断变量是否为数组 isArray
示例代码
@section('判断变量是否为数组示例代码')
//判断变量是否为数组
kk.utils.isArray([1,2,3]);//=> true
kk.utils.isArray('[1,2,3]');//=> false
@endsection
判断变量是否为数组
kk.utils.isArray(arr)
params:
名称 | 描述 |
---|---|
arr Any | 要判断的变量 |
return:
要判断的变量是数组返回true
,否则返回false
判断变量是否为window对象 isWindow
示例代码
@section('判断变量是否为window对象示例代码')
//判断变量是否为window对象
kk.utils.isWindow(window);//=> true
@endsection
判断变量是否为window对象
kk.utils.isWindow(obj)
params:
名称 | 描述 |
---|---|
obj Any | 要判断的变量 |
return:
要判断的变量是window对象返回true
,否则返回false
判断参数是否为对象 isObject
示例代码
@section('判断参数是否为对象示例代码')
//判断参数是否为对象
kk.utils.isObject('obj');//=> false
kk.utils.isObject({});//=> true
@endsection
判断参数是否为对象
kk.utils.isObject(obj)
params:
名称 | 描述 |
---|---|
obj Any | 要判断的变量 |
return:
要判断的变量是对象返回true
,否则返回false
判断变量是否为简单对象 isPlainObject
示例代码
@section('判断变量是否为简单对象示例代码')
//判断变量是否为简单对象
kk.utils.isPlainObject({"obj": "KK sdk 参考手册"});//=> true
@endsection
判断变量是否为简单对象(即JSON格式对象)
kk.utils.isPlainObject(obj)
params:
名称 | 描述 |
---|---|
obj Any | 要判断的变量 |
return:
要判断的变量是JSON格式对象返回true
,否则返回false
判断参数是否为空 isEmpty
示例代码
@section('判断参数是否为空示例代码')
//判断参数是否为空
kk.utils.isEmpty(null);//=> true
kk.utils.isEmpty(undefined);//=> true
kk.utils.isEmpty('');//=> true
kk.utils.isEmpty([]);//=> true
@endsection
判断参数是否为空
kk.utils.isEmpty(obj)
params:
名称 | 描述 |
---|---|
obj Any | 要判断的变量 |
return:
要判断的变量是空返回true
,否则返回false
判断变量是否为函数 isFunction
示例代码
@section('判断变量是否为函数示例代码')
var bar = '';
function foo(){};
//判断变量是否为函数
kk.utils.isFunction(bar);//=>false
kk.utils.isFunction(foo);//=>true
@endsection
判断变量是否为函数
kk.utils.isFunction(fn)
params:
名称 | 描述 |
---|---|
fn Any | 要判断的变量 |
return:
要判断的变量是函数返回true
,否则返回false
扩展对象 extend
示例代码
@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.extend([deep], [dest], source, [source...], [ride])
params:
名称 | 描述 |
---|---|
deep boolean, optional(false) | 是否深度拷贝 |
dest object, optional | 要扩展的对象,如果省略则扩展调用环境(context) |
source object | 要扩展的属性来源,可支持多个source |
ride boolean, optional(true) | 是否覆盖已有属性 |
callbacks:
返回扩展之后得到的对象
将对象转换为queryString toQueryString
示例代码
@section('转换对象示例代码')
var obj = {version: 'kk sdk 5.0', anthor: 'landray'};
//将对象转换为queryString
kk.utils.toQueryString(obj);
//返回字符串。=> 'version=kk%20sdk%205.0&anthor=landray'
@endsection
将对象中的key和value作为URI组件进行编码,返回转换后的query string。
kk.utils.toQueryString(obj)
params:
名称 | 描述 |
---|---|
obj object | 需要转换的对象 |
callbacks:
返回由key=value
组成的string
字符串,每个键值对由’&‘分隔