测试

海尔开放平台 | 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); //禁用分享菜单

```

你可能感兴趣的:(测试)