混合开发接口文档
通用
页面引入js文件
js文件版本在添加升级功能时地址会变化,如有需要(比如要使用新增的js-api),请随时关注地址变更。但是旧版本js文件也将一直可用。
http://res.dinghuo123.com/app/ydh/dist/js/lib/hybrid.js
这个脚本在客户端执行,判断平台后实际使用不同代码。如果想减少交互次数,可以在服务器直接判断平台后,调取不同的js代码。
Android:http://res.dinghuo123.com/app/ydh/dist/js/lib/hybrid/android/cordova.js
iOS:http://res.dinghuo123.com/app/ydh/dist/js/lib/hybrid/ios/cordova.js
全局变量、命名空间
直接引入hybird.js会得到一个全局变量ydh
命名空间:设备(ydh.device)、业务(ydh.biz)
权限验证
整个app采用全部H5嵌套,原生app只提供部分接口。
原生App应用模块的URL后面所需参数access_token,access_token由H5提供。
接口约定
- 所有接口都为异步
- 接受一个object类型的参数
- 成功回调onSuccess(某些异步接口的成功回调,将在事件触发时被调用,具体详情请查看相关onSuccess回调时机,未做描述的即为同步接口)
- 失败回调 onFail
- 如下showToast的接口:
function myBtnOneOnClick(){
ydh.device.showToast(function(result){
alert("success:"+result);
},function(err){
alert("error:"+err);
},{
text:'Hello world again!'
});
}
设备
ydh.device
获取通用唯一识别码
接口名称
ydh.device.getUuid
参数说明
参数 参数类型 说明 uuid String 通用唯一识别码
获取手机APP版本号和版本名称
接口名称
ydh.device.getAppVersion
参数说明
参数 参数类型 说明 platform String APP平台值:Android、iOS versionCode String APP的版本号 versionName String APP的版本名称
获取当前网络类型
接口名称
ydh.device.getNetworkType
参数说明
参数 参数类型 说明 result String result值: wifi、2g、3g、4g、unknown、none,none表示离线
toast
接口名称
ydh.device.showToast
返回说明
参数 参数类型 说明 text String 提示信息
业务
ydh.biz
帐号信息
接口说明
为了确保数据的正确性,请在收到该接口成功回调后进行下一步操作接口名称
ydh.biz.setAccountData
参数说明
参数 参数类型 说明 userName String 当前用户名 accessToken String 访问令牌 accountType String 帐号类型(”corp”管理端,”agent”订货端) expiresIn Long 过期时间(秒)
打电话
接口名称
ydh.biz.call
参数说明
参数 参数类型 说明 phone String 电话号码
发短信
接口名称
ydh.biz.sendMessage
参数说明
参数 参数类型 说明 telephone String 手机号码 text String 短信内容
文本复制
接口说明
调用此接口,进行文本复制
接口名称
ydh.biz.copyText
参数说明
参数 参数类型 说明 copyText String 复制的文本
扫码
接口名称
ydh.biz.scanCode
参数说明
参数 参数类型 说明 type String type为qrCode或者barCode
保存图片到手机
接口名称
ydh.biz.saveImage
参数说明
参数 参数类型 是否必须 说明 url String 是 图片地址 name String 否 图片名称,默认是yyyyMMddHHmmss.jpg,后缀名根据实际的图片类型而定
分享
接口名称
ydh.biz.shareContent
参数说明
参数 参数类型 说明 url String url地址 title String 分享标题 content String 分享内容 image String 分享的图片 platforms String 传入1到5字符串用逗号隔开(例”1,2,3,4,5”),其中1-SINA 2-QQ 3-QZONE 4-WEIXIN 5-WEIXIN_CIRCLE
下载
- 接口说明
ios专用接口 接口名称
ydh.biz.download
参数说明
参数 参数类型 说明 downloadUrl String 下载地址 - 返回说明
无
订单蓝牙打印
接口名称
ydh.biz.orderBluetoothPrint
参数说明
参数 参数类型 说明 orderNum String 订单编号
订单蓝牙打印
接口名称
ydh.biz.orderBluetoothPrint
参数说明
参数 参数类型 说明 orderNum String 订单编号
获取手势密码设置状态
接口说明
调用此接口,获取手势密码设置状态
接口名称
ydh.biz.getGesturePasswordStatus
参数说明
无返回说明
参数 参数类型 说明 gestureStatus String 手势密码状态,0:未启用,1:已启用 ,-1:未设置
获取Android包的渠道值
- 接口说明
android专用接口 - 接口名称
ydh.biz.getChannelValue 参数说明
无返回说明
参数 参数类型 说明 channelID String 渠道id channelName String 渠道名称
附件下载本地
- 接口说明
android专用接口 接口名称
ydh.biz.toDownloadAttachment参数说明
参数 参数类型 说明 attachment String 附件名称 downloadUrl String 附件下载地址 - 返回说明
无
获取附件下载状态
接口说明
android专用接口
调用此接口,附件是否下载接口名称
ydh.biz.onAttachmentListStatus
参数说明
参数 参数类型 说明 attachmentList ArrayList 附件集合 Object说明
参数 参数类型 说明 attachment String 附件 fileName String 文件名称 返回说明
参数 参数类型 说明 attachmentListStatus ArrayList 附件下载状态集合 Object说明
参数 参数类型 说明 attachment String 附件 fileName String 文件名称 isDownload boolean ture已下载,false未下载
选择图片上传(多图片,拍照是单图片)
接口说明
将在成功上传之后回调onSuccess方法,返回图片链接。如果选择了拍照上传,则拍完照后马上上传,上传完毕直接返回url给H5页面。调用此接口后,APP将会启动图片选择界面,用户选择图片就进入上传图片等待,待图片上传完毕后将返回图片url数组。
接口名称
ydh.biz.uploadImages
参数说明
参数 参数类型 说明 multiple Boolean 是否多选,默认false max Number max为正整数,最多可选个数 uploadUrl String 上传的地址 返回说明
参数 参数类型 说明 imageInfos Array[Object] 图片信息列表,信息对象包含attachment,fileName和size等信息
选择文件上传(单文件)
接口说明
将在成功上传之后回调onSuccess方法,返回文件链接。
接口名称
ydh.biz.uploadFile
参数说明
参数 参数类型 说明 uploadUrl String 上传的地址 返回说明
参数 参数类型 说明 fileInfo Object 信息对象包含attachment,attachmentType,fileName和size等信息
拍照上传图片
接口说明
将在成功上传之后回调onSuccess方法,返回文件链接。
接口名称
ydh.biz.uploadTakePicture
参数说明
参数 参数类型 说明 uploadUrl String 上传的地址 返回说明
参数 参数类型 说明 fileInfo Object 信息对象包含attachment,attachmentType,fileName和size等信息
状态栏
ydh.biz.statusBar
设置状态栏属性
接口名称
ydh.biz.statusBar.setAttributes
参数说明
参数 参数类型 是否必须 说明 backgroundColor String 否 背景颜色,ARGB格式,如#deffffff,为空则不设置
支付
ydh.biz.alipay
支付宝支付
接口名称
ydh.biz.alipay.pay
参数说明
参数 参数类型 说明 info String 需要构建的订单信息,参考支付宝文档:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.CKTNjZ&treeId=59&articleId=103663&docType=1 返回说明
透传了支付宝支付接口处理订单的结果,请按支付宝文档正确处理订单信息。
参数 参数类型 说明 memo String 保留参数,一般无内容 result String 本次操作返回的结果数据 resultStatus String 本次操作的状态返回值,标识本次调用的结果,参考:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.MMxZUF&treeId=59&articleId=103671&docType=1
界面
ydh.biz.ui
打开打印链接界面
接口名称
ydh.biz.ui.openBluetoothSetting
参数说明
无
打开手势密码界面
接口名称
ydh.biz.ui.openSetGesturesPassword
参数说明
无返回说明
无
跳转至新的H5界面
接口名称
ydh.biz.ui.openPage
参数说明
参数 参数类型 是否必须 说明 url String 是 新的url地址 visible boolean 是 false表示不显示菜单栏(此时可以不用传title,background),true表示显示菜单栏 title String 否 界面标题,用于设置界面标题,如果为空则界面使用默认的标题 background String 否 背景颜色,ARGB格式,如#deffffff,为空则不设置 返回说明
无
关闭新的H5界面
接口名称
ydh.biz.ui.finishPage
参数说明
无返回说明
无- 备注
关闭的界面是调用openPage打开的新界面
跳转至易订货主界面
接口名称
ydh.biz.ui.openMainActivity
参数说明
参数 参数类型 是否必须 说明 url String 是 主界面的url地址 - 返回说明
无 - 备注
跳转到易订货主界面,发一个事件去结束登录界面和新开的H5界面
跳转至登录界面
接口名称
ydh.biz.ui.openLoginActivity参数说明
无- 返回说明
无
特别说明
1.html里的事件不能使用内联的方式,必须使用javascript为document添加事件监听方式。
document.getElementById("myBtnOne").addEventListener("click", myBtnOneOnClick);
2.cordova开发如何解决中文乱码?
在html页面增加如下代码。
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
出现乱码的原因是网页与平台(Android/iOS)的编码不一致,而目前Android和iOS项目开发所用的编码均为utf-8,所以在网页需要添加编码配置。
3.Android平台上将APP上的js代码直接放到服务器,然后在APP里调用网页,无法正常运行。
针对WhitelistPlugin类,需要复写shouldAllowBridgeAccess方法。
/**
* 链接远程url需要覆写这个方法
* @param url
* @return
*/
@Override
public Boolean shouldAllowBridgeAccess(String url) {
return true;
}
4.无法正常运行的的原因是:WhitelistPlugin默认只支持本地url的加载,而http开头的url则无法通过,所以导致无法正常运行。复写shouldAllowBridgeAccess返回true,则允许通过所有方式进行加载。
Android平台上将APP上的js代码直接放到服务器,然后在iOS平台进行访问,无法正常运行。
由于cordova在Android和iOS平台上SDK的代码不一样,所以出现无法正常运行情况。
解决思路:将Android和iOS平台上的cordova关于js的代码混合起来,然后通过外部参数决定使用哪一个平台的代码。
解决方案:新增hybird.js文件实现逻辑,在url上新增platform参数,值是Android或者iOS,如下
var queryString = getQueryString("platform");
if(queryString=='Android'){
include('platform/android/cordova.js');
}else if(queryString=='iOS'){
include('platform/ios/cordova.js');
} else {
alert('Not Android or iOS platform!');
}
本地调试时,增加platform参数
<content src="index.html?platform=Android" />
远程调试时,增加platform参数
http://res.dinghuo123.com/app/www/index.html?platform=iOS