海尔开放平台 | HDK-JS开发者文档 v0.6
1. dsljflasdjfkljaklf
2. siajflkajklfew
* lksjdflkjaskldf
* jskldjafljwefjl
1、介绍
## 1 介绍
tbd.
## 2 接入指南
#### 步骤一 申请轻应用ID
tbd.
#### 步骤二 引入js文件
在需要调用JS接口的页面引入JS文件.
#### 步骤三 执行初始化
**hdk.init( appId, modules, callback )**
初始化运行环境.
**参数:**
**appId**
Type: String
轻应用ID. 轻应用ID应在平台管理界面申请, 是轻应用的唯一标识.
**callback**
Type: Function ( String mode )
初始化结束后执行的回调函数.
mode: hdk的运行环境 ( `native` `wechat` `browser` )
**示例:**
``` javascript
hdk.init('demoApp', function(mode) {
// 处理结果
if(mode == 'native') { // 运行在本地容器内
}
});
```
目前可使用的模块:
| 模块名称 | 说明 | 备注 |
| ------ | ---- | ---- |
| user | 用户 | |
| pay | 支付 | |
| widget | 控件 | |
| device | 设备 | |
#### 日志
使用 `hdk.log.info()` `hdk.log.warn()` `hdk.log.error()` 打印日志.
在 `native` 模式下, 日志会输出到下层本地app的日志系统中. 其他模式使用 `window.console` 输出.
日志输出默认为关闭状态.
�设置 `hdk.log.enabled = true` 开启日志输出.
设置 `hdk.log.useAlert = true` 将日志通过window.alert输出, 方便在无法查看日志的情况下使用.
## 3 API
### 3.0 hdk
#### 退出WebView hdk.closeView()
关闭WebView所在的原生界面返回上级界面
### 3.1 hdk.user
**属性**
`hdk.user.isLogin`
Type: boolean
用户是否登录. 这个方法只有在hdk.init()调用结束后才有值.
`hdk.user.info`
登录用户的信息, 未登录时为 `undefined`. 这个方法只有在hdk.init()调用结束后才有值.
**配置**
服务器根路径
``` java
hdk.config.webApi.host = 'http://172.16.30.30:8080';
```
#### 3.1.1 用户登录 hdk.user.auth ( callback )
打开本地登录窗口. (这个方法可以在 `browser` 环境下使用, 但结束后的回调函数不会被调用)
**参数:**
**callback**
Type: Function ( String status, PlainObject data )
登录结束的callback函数.
status: 登录结果状态 ( `SUCCESS` `ERROR` `CANCELLED` `UNSUPPORTED` )
data: 服务端返回数据
**示例:**
``` javascript
hdk.user.auth(function(status, data) {
// 处理结果
});
```
#### 3.1.2 用户注册 hdk.user.register( callback )
打开本地注册窗口. (这个方法可以在 `browser` 环境下使用, 但结束后的回调函数不会被调用)
**参数**
**callback**
Type: Function ( String status, PlainObject data )
注册结束的callback函数.
status: 注册结果状态 ( `SUCCESS` `ERROR` `CANCELLED` `UNSUPPORTED` )
data: 服务端返回数据
**示例:**
``` javascript
hdk.user.register(function(status, data) {
// 处理结果
});
```
#### 3.1.3 用户重置密码 hdk.user.resetPassword ( callback )
打开本地重置密码界面. (这个方法可以在 `browser` 环境下使用, 但结束后的回调函数不会被调用)
**参数**
**callback**
Type: Function ( String status, PlainObject data )
重置密码结束的callback函数.
status: 重置密码结果状态 ( `SUCCESS ` `ERROR` `CANCELLED` `UNSUPPORTED` )
data: 服务端返回数据
**示例:**
``` javascript
hdk.user.resetPassword(function(status, data) {
// 处理结果
});
```
#### 3.1.4 用户退出登录 hdk.user.logout ( callback )
退出登录. ( 这个方法可以在 `browser` 环境下使用 )
**参数:**
**callback**
Type: Function ( String status, PlainObject data )
登录结束的callback函数.
status: 登录结果状态 ( `SUCCESS` `ERROR` )
data: 服务端返回数据
**示例:**
``` javascript
hdk.user.logout(function(status, data) {
// 处理结果
});
```
### 3.2 hdk.pay
#### 3.2.1 创建支付 hdk.pay.create ( method, order, callback )
调取本地支付功能
**参数**
**method**
Type: String
支付方式. 目前支持支付宝. 可选值: `alipay`
**order**
Type: PlainObject
订单信息对象. 必须包含如下信息:
``` json
{
"orderNo" : "1234567890", // 订单编号 string
"title" : "", // 订单标题 string
"desc" : "", // 订单描述 string
"amount" : 0.00 // 订单金额 float
}
```
**callback**
Type: Function ( String status, PlainObject order )
支付结束后的callback函数. 只会被调用一次. 最终支付结果以服务端为准.
status: 支付结果 ( `SUCCESS` `WAIT` `FAIL` `UNSUPPORTED` )
order: 支付所用的订单对象
**示例**
``` javascript
hdk.pay.create('alipay',
{orderNo:'123456789', title:'测试商品', desc:'这是测试商品', amount: 1.50},
function(status, order){
// 处理结果
});
```
### 3.3 hdk.widget
#### 3.3.1 分享 hdk.widget.share ( config, callback )
调用本地分享
**参数**
**config**
Type: PlainObject
分享内容对象.
``` javascript
{
title: '', // 分享标题
content: '', // 分享内容
link: '', // 分享链接
imgUrl: '', // 分享图标
}
```
**callback**
Type: Function ( String status )
分享结束后执行的回调函数
status: 分享结果 ( `SUCCESS` `ERROR` `CANCELLED` `UNSUPPORTED` )
**示例**
``` javascript
hdk.widget.share({title:'分享新产品',
content:'新产品上线啦',
link:'http://some_url',
imgUrl:'http://some_imgurl'},
function(status){
//handle result
});
```
#### 3.3.2 省市区选择器 hdk.widget.openAreaChooser ( level, callback )
调用本地省市区选择界面
**参数**
**level**
Type: Integer
选择范围. 1,只选择省; 2, 选择省市; 3, 选择省市区;
**callback**
Type: Function ( String status, PlainObject result )
选择结束的回调函数.
status: 结果状态 ( `SUCCESS` `CANCELLED` `UNSUPPORTED` )
result: 成功时结构如下, 其他状态为`null`
``` javascript
{
province: { id: "", name: "" },
city: { id: "", name: "" }, // null 如果未选择城市
district: { id: "", name: "" } // null 如果未选择区
}
```
**示例**
``` javascript
hdk.widget.openAreaChooser(3, function(status, result) {
// 处理结果
});
```
#### 3.3.3 图片上传 hdk.widget.uploadImage ( url, callback [, partName, queryParams] )
调用本地界面选择图片并上传到指定url.
**参数**
**url**
Type: String
接收图片上传的url.
图片会通过http POST请求以multipart的格式进行上传.
**callback**
Type: Function ( String status, PlainObject data)
上传结束后的回调函数
status: 上传结果状态. ( `SUCCESS` `ERROR` `UNSUPPORTED` )
data: 上传成功后服务器端返回的数据. 失败时为`null`
``` json
{
"url": "", // 图片url
// tbd.
}
```
**partName**
Type: String (default: `'file'` )
上传文件的参数名
**queryParams**
Type: PlainObject
其他query参数
**示例**
``` javascript
hdk.widget.uploadImage('http://upload-image-url', function(status, data) {
// 处理结果
}, 'img', { type: 'avatar', resize: true} );
```
上传的http request示例:
```
POST / HTTP/1.1
Content-Type: multipart/form-data; boundary=__X_PAW_BOUNDARY__
Host: echo.luckymarmot.com
Connection: close
User-Agent: Paw/2.1 (Macintosh; OS X/10.10.4) GCDHTTPRequest
Content-Length: 997
--__X_PAW_BOUNDARY__
Content-Disposition: form-data; name="img"; filename="test.png"
Content-Type: image/png
(binary data)
--__X_PAW_BOUNDARY__
Content-Disposition: form-data; name="type"
avatar
--__X_PAW_BOUNDARY__
Content-Disposition: form-data; name="resize"
true
--__X_PAW_BOUNDARY__--
```
#### 3.3.4 提示框 hdk.widget.dialog.alert ( msg, callback [, title, buttonName] )
打开一个本地的alert消息界面. 界面有唯一的返回按钮.
**参数**
**msg**
Type: String
消息文本
**callback**
Type: Function
界面返回后执行的回调函数
**title**
Type: String ( default: `''` )
消息界面标题
**buttonName**
Type: String ( default: `'确定'` )
消息界面按钮.
示例
``` javascript
hdk.widget.dialog.alert('登录成功', function() {
// do something
}, '提示', '知道了');
```
#### 3.3.5 确认框 hdk.widget.dialog.confirm ( msg, callback [, title, buttonNames] )
打开一个本地的confirm消息界面. 界面有确定和取消按钮.
**参数**
**msg**
Type: String
消息文本
**callback**
Type: Function ( Boolean confirm )
界面返回后执行的回调函数
confirm: 用户是否确认
**title**
Type: String ( default: `''` )
消息界面标题
**buttonNames**
Type: String ( default: `['确定', '取消']` )
消息界面按钮.
示例
``` javascript
hdk.widget.dialog.confirm('确认要删除吗?', function(confirm) {
// do something
}, '提示', ['删除', '再想想']);
```
#### 3.3.6 输入框 hdk.widget.dialog.prompt ( msg, callback [, title, buttonNames, defaultText ] )
打开一个本地的prompt消息界面. 界面有确定取消按钮.
**参数**
**msg**
Type: String
消息文本
**callback**
Type: Function ( Boolean confirm, String text )
界面返回后执行的回调函数.
confirm: 用户是否确认
text: 用户输入的文本
**title**
Type: String ( default: `''` )
消息界面标题
**buttonNames**
Type: String ( default: `['确定', '取消']` )
消息界面按钮.
示例
``` javascript
hdk.widget.dialog.prompt('请输入您的姓名', function(confirm, text) {
// do something
}, '提示', ['提交', '取消']);
```
### 3.4 hdk.device
#### 3.4.1 获取地理位置 hdk.device.requireLocation ( callback )
基于百度LBS实现的获取设备地理位置信息.
**参数**
**callback**
Type: Function ( String status, PlainObject result )
status: 返回结果状态 ( `SUCCESS` `ERROR` `UNSUPPORTED` )
result:
``` json
{
time: 2015-07-29 15:50:50,
error_code: 161,
latitude: 39.985137,
longtitude: 116.314746,
radius: 40.0,
addr: '北京市海淀区丹棱街18号'
}
```
error_code列表: [点击查看](http://developer.baidu.com/map/index.php?title=android-locsdk/guide/ermsg)
#### 3.4.2 摇一摇 hdk.device.shake ( timeout, callback )
摇一摇功能.
**参数**
**timeout**
Type: Integer
超时时间(毫秒). 超时后会执行回调函数.
**callback**
Type: Function ( String status )
status: 摇一摇结果状态 ( `SUCCESS` `TIMEOUT` `OCCUPIED` `UNSUPPORTED` )
摇一摇产生结果或者超时后执行的回调函数.
**示例**
``` javascript
hdk.device.shake(5000, function(status) {
if( status == 'SUCCESS') {
//处理结果
} else {
//处理超时
}
});
```
#### 3.4.3二维码扫描 hdk.device.scanQRCode ( callback )
调用本地界面扫描二维码.
**参数**
**callback**
Type: Function ( String status, String result )
扫描结束后的回调函数.
status: 扫描结果状态 ( `SUCCESS` `CANCELLED` `UNSUPPORTED` )
result: 扫描结果
**示例**
``` javascript
hdk.device.scanQRCode(function(status, result) {
if (status == 'SUCCESS') {
// use result
}
});
```
### 3.5 hdk.event
#### hdk.event.on ( type, handler )
注册事件处理函数. 必须在hdk.init()完成后调用.
**参数**
**type**
Type: String
事件名称. ( 详见事件列表 )
**handler**
Type: Function ( String type, PlainObject data )
事件触发时的处理函数
type: 事件名称
data: 附加的事件数据
**示例**
``` javascript
hdk.event.on('backButtonClicked', function(type, data) {
alert(type + ' event triggered');
});
```
**事件列表**
| 名称 | 描述 | 数据 | 环境 |
| ----------------- | ---------- | ---- | ------- |
| backButtonClicked | 设备返回按钮点击事件 | 无 | android |
| | | | |
### 3.6 hdk.wechat
`hdk.config.wechat.debug`
设置启用微信debug, 默认值为`false`
`hdk.config.wechat.jsApiList`
设置使用的api列表, 默认值为
``` json
['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone','showMenuItems', 'hideMenuItems']
```
`hdk.config.webApi.wechatSign`
请求微信参数的URL, 默认值为 `/v2/platform/web/wechat/config`
#### 3.6.1 设置分享 hdk.wechat.setupShare ( config, callback )
设置微信菜单分享的内容
**参数**
**config**
Type: PlainObject
分享内容对象.
``` javascript
{
title: '', // 分享标题
content: '', // 分享内容
link: '', // 分享链接
imgUrl: '', // 分享图标
}
```
**callback**
Type: Function ( String status, String type, PlainObject res )
分享结束后执行的回调函数
status: 分享结果 ( `SUCCESS` `ERROR` `CANCELLED` )
type: 分享方式 ( `onMenuShareTimeline` `onMenuShareAppMessage` `onMenuShareQQ` `onMenuShareWeibo` `onMenuShareQZone` )
res: 微信返回的对象
**示例**
``` javascript
hdk.wechat.setupShare( {title:'分享新产品',
content:'新产品上线啦',
link:'http://some_url',
imgUrl:'http://some_imgurl'},
function(status, type, res){
//handle result
});
```
#### 3.6.2 启用禁用分享功能 hdk.wechat.allowShare ( enabled )
设置微信菜单分享的内容
**参数**
**enabled**
Type: Boolean
`True` 允许用户分享, `False` 禁止用户分享
**示例**
``` javascript
hdk.wechat.allowShare(false); //禁用分享菜单
```