1 概述
2 API使用说明
二维码扫描api
二维码扫描接口
地理位置api
打开地图接口
获取位置信息接口
图片api
选择图片接口
预览图片接口
上传图片接口
下载图片接口
网络api
查看网络类型接口
分享api
分享到朋友圈接口
分享给好友接口
分享到QQ接口
分享到腾迅微博接口
分享到QQ空间接口
音频api
开始录音接口
结束录音接口
录音一分钟结束回调接口
播放录音接口
暂停播放接口
停止播放接口
播放结束回调接口
上传录音接口
下载音频接口
翻译api
录音转成汉字接口
微信小店api
打开产品详细页接口
批量添加卡券接口
拉取适用卡券列表并获取用户选择信息接口
查看微信卡包中的卡券接口
微信界面api
显示右上角菜单接口
批量隐藏菜单项接口
批量显示菜单项接口
隐藏所有非基本菜单项接口
显示所有被隐藏的非基本菜单项接口
3 常见问题
1 概述
x5 3.4 版本提供了一组本地能力api,可以方便地调用本地能力。比如,二维码扫描的api:scanQRCode——在微信中,调用微信jssdk的扫描;而在H5 App里,调用cordova这个“壳”的扫描。
目前这个“壳”可以是微信、cordova,因此可以把js-api使用在微信公众号、wex5 app开发场景下。且一种应用开发好之后,在另一种“壳”下,不需要修改开发好的UI代码,只需修改配置,就能使用;反之亦然。达到一次开发,多“壳”使用的目的。
示例:
引入模块:var scan = require(‘$UI/system/api/native/scan’);
使用api:
scan.scanQRCode({ needResult: 1, // 1则直接返回扫描结果, success : function(res) { alert("OK:"+JSON.stringify(res)); }, fail : function(res) { alert("fail:"+JSON.stringify(res)); } });
success:扫描成功回调函数。fail:失败回调函数。
更多示例参见UI2/system/api/native/demo。开发者可参考【h5app微信支付起手式】将demo发布成H5App体验,或参考【wex5微信公众号支付开发】将demo部署在微信公众号上体验。js-api大部分的api接口与微信jssdk兼容,其用法也比较接近。
注意: 需要“壳”准备好之后,方能使用本地能力,统一在base.ready触发事件。通常的做法是,给页面按钮设置一个可用性标识。当base.ready时,把可用性标识设为true。如下所示。
<a component="$UI/system/components/justep/button/button" bind-enable="ready" class="btn btn-default " xid="scanQRCode1" onClick="scanQRCode1Click">scanQRCode</a>
再设置页面对base.ready的响应。更详细的示例参见studio中UI2/system/api/native/demo。
var base = require('$UI/system/api/native/base'); var Model = function() { this.callParent(); this.ready = justep.Bind.observable(false); }; Model.prototype.modelLoad = function(event) { var self = this; base.ready(function() { self.ready.set(true); }); };
2 API使用说明
二维码扫描api
需要引入模块,例:var scan = require(‘$UI/system/api/native/scan’);
二维码扫描接口
扫描并返回结果。若想在微信中直接处理扫描结果,needResult设为0。
image.previewImage({ current : "http://192.168.1.93:8080/x5/UI2/system/service/doc/common/simpleFileStore.j?realFileName=modified.jpg&amp;storeFileName=modified.jpg&amp;ownerID=5da957edf147329a&amp;operateType=preview", urls : [ 'http://img3.douban.com/view/photo/photo/public/p2152117150.jpg', 'http://img5.douban.com/view/photo/photo/public/p1353993776.jpg', 'http://img3.douban.com/view/photo/photo/public/p2152134700.jpg' ] });
上传图片接口
说明:上传地址在UI2/system/config/config.json配置uploadActionUrl项,x5黓认实现为 “$UI/system/service/doc/common/simpleFileStore.j”
参数localId为本地图片路径,在chooseImage中,success回调以localIds数组返回图片路径。
network.getNetworkType({ success : function(res) { alert(res.networkType); }, fail : function(res) { alert(JSON.stringify(res)); } });
分享api
需要引入模块,例:var share = require(‘$UI/system/api/native/share’);以下接口在微信中的作用是设置分享的内容,链接等信息;用户点击微信menu中的按钮真正触发分享。
分享到朋友圈接口
说明:trigger: 微信中监听Menu中的按钮点击时触发的方法,该方法仅支持微信Menu中的相关接口。
share.onMenuShareTimeline({ title : '互联网之子', link : 'http://movie.douban.com/subject/25785114/', imgUrl : 'http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg', trigger : function(res) { alert('用户点击分享到朋友圈'); }, success : function(res) { alert('已分享'); }, cancel : function(res) { alert('已取消'); }, fail : function(res) { alert(JSON.stringify(res)); } });
分享给好友接口
share.onMenuShareAppMessage({ title : '互联网之子', desc : '在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。', link : 'http://movie.douban.com/subject/25785114/', imgUrl : 'http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg', trigger : function(res) { // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回 alert('用户点击发送给朋友'); }, success : function(res) { alert('已分享'); }, cancel : function(res) { alert('已取消'); }, fail : function(res) { alert(JSON.stringify(res)); } });
分享到QQ接口
说明:complete函数在成功或失败后都要回调,下同。
share.onMenuShareQQ({ title : '互联网之子', desc : '在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。', link : 'http://movie.douban.com/subject/25785114/', imgUrl : 'http://img3.douban.com/view/movie_poster_cover/spst/public/p2166127561.jpg', trigger : function(res) { alert('用户点击分享到QQ'); }, complete : function(res) { alert(JSON.stringify(res)); }, success : function(res) { alert('已分享'); }, cancel : function(res) { alert('已取消'); }, fail : function(res) { alert(JSON.stringify(res)); } });
分享到腾讯微博接口
说明:此api仅在微信公众号中有效,在x5app只做兼容性处理。
share.onMenuShareWeibo({ title : '互联网之子', desc : '在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。', link : 'http://movie.douban.com/subject/25785114/', imgUrl : 'http://img3.douban.com/view/movie_poster_cover/spst/public/p2166127561.jpg', trigger : function(res) { alert('用户点击分享到微博'); }, complete : function(res) { alert(JSON.stringify(res)); }, success : function(res) { alert('已分享'); }, cancel : function(res) { alert('已取消'); }, fail : function(res) { alert(JSON.stringify(res)); } });
分享到QQ空间接口
share.onMenuShareQZone({ title : '互联网之子', desc : '在长大的过程中,我才慢慢发现,我身边的所有事,别人跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有非得如此,事情是可以改变的。更重要的是,有些事既然错了,那就该做出改变。', link : 'http://movie.douban.com/subject/25785114/', imgUrl : 'http://img3.douban.com/view/movie_poster_cover/spst/public/p2166127561.jpg', trigger : function(res) { alert('用户点击分享到QZone'); }, complete : function(res) { alert(JSON.stringify(res)); }, success : function(res) { alert('已分享'); }, cancel : function(res) { alert('已取消'); }, fail : function(res) { alert(JSON.stringify(res)); } });
音频api
需要引入voice模块,例:var voice = require(‘$UI/system/api/native/voice’);
开始录音接口
translate.translateVoice({ localId : "weixin://someVoice", complete : function(res) { if (res.translateResult) { alert('识别结果:' + res.translateResult); } else { alert('无法识别'); } } });
微信支付api
需要引入模块,例:var wxPay = require(‘$UI/system/api/native/wxPay’);
微信支付
支持微信公众号和x5 app。微信公众号支付需要配置Baas端。开发参考【h5app微信支付起手式】,或参考【wex5微信公众号支付开发】。
var tradeNo = justep.UUID.createUUID(); //订单号 var notifyUrl = location.origin + "/baas/weixin/weixin/notify"; //微信公众号支付结果通知地址 wxPay.pay({ body : "x5外卖", // 标题 mchId : "1305137601", // 商户ID,微信公众号开发需要 notifyUrl : notifyUrl, // 支付结果通知回调地址,微信公众号开发需要 outTradeNo : tradeNo, // 订单号 totalFee : "1", // 费用(分) success : function(e) { alert(JSON.stringify(e)) }, cancel : function(e) { alert(JSON.stringify(e)) }, fail : function(e) { alert(JSON.stringify(e)) } });
微信小店api
需要引入模块,例:var shop = require(‘$UI/system/api/native/wxShop’);
说明:仅微信公众号有效。
打开产品详细页接口
menu.showAllNonBaseMenuItem({ success : function() { alert('已显示所有非基本菜单项'); } });
3 常见问题
1 运行配置问题
打开x5开发工具,配置文件位于UI2/system/config/config.json,修改成你自己的配置。
app需要的参数与微信公众号的参数不同,详见下面的“参数说明”。另外,如果是微信公众号开发,需要配置Baas,参考【wex5微信公众号支付开发】部署微信公众号。如果是x5app,参考【h5app微信支付起手式】发布成App。
参数说明:
“debug” : 调试模式。true打开调试模式会在控制台上看到更多信息。
“wxAppId” : 微信开发中,微信公众号。
“wxJSApiUrl” : 微信开发中,后台服务配合路径,用于getTicket,chooseWXPay。
“wxUserInfoUrl” : 微信开发中,取得用户信息的后台服务。
“uploadActionUrl” : app开发中,上传图片或音频的后台服务。
示例:
{ "debug" : true, "wxAppId" : "wxb3efde94a26e25fe", "wxJSApiUrl" : "/baas/weixin/weixin/jsapi", "wxUserInfoUrl" : "/baas/weixin/weixin/userinfo", "uploadActionUrl" : "$UI/system/service/doc/common/simpleFileStore.j" }
2 通过ready处理加载完毕回调事件
通常,为了防止用户在js没有加载完的情况下使用功能按键,可先将按钮设与一个observable绑定。当加载完成,把按键设置成可用。参见UI2/system/api/native/demo。
分享
var base = require('$UI/system/api/native/base'); var Model = function() { this.callParent(); this.ready = justep.Bind.observable(false); }; Model.prototype.modelLoad = function(event) { var self = this; base.ready(function() { self.ready.set(true); }); };
评一波