测试

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

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容