千牛在商家主要办公场景定义了开放节点,把开放节点的点击开放给插件来处理,开放节点的点击会带上充分的上下文信息,由isv根据上下文信息来跳转对应的功能页面。Capability 是千牛对商家常用经营功能的抽象,例如订单详情,订单列表,商品详情等,ISV可以通过识别capability参数来直达对应的功能页面。
用户在不同的业务场景下打开同一个应用时,开发者可能期望展示不同的页面给用户浏览和操作。场景/页面能力路由的就是负责打开插件是把不同的业务场景与插件配置的对应页面关联起来。
比如点击工作台数字面板的“待付款”会根据能力配置打开交易管理插件中的“待付款”列表页。
开发者可以在app.js文件 onLaunch方法中取到capability
值,然后自主跳转到对应的功能页面。
capability的取值范围和场景如下:
capability | 场景 | 中文名称 | 说明 |
itemList | 出售中(数字) | 商品列表 | 附带参数“itemStatus”:“onsale” |
橱窗中 (数字) | 商品列表 | 附带参数“itemStatus”:“hasshowcase” | |
出售中宝贝(数字) | 商品列表 | 附带参数“itemStatus”:“onsale” | |
已橱窗推荐 (数字) | 商品列表 | 附带参数“itemStatus”:“hasshowcase” | |
昨日成交宝贝(数字) | 商品列表 | 附带参数“itemStatus”:“onsale” | |
tradeList | 待付款(数字) | 交易列表 | 附带参数“tradeStatus”: “WAIT_BUYER_PAY” |
待发货(数字) | 交易列表 | 附带参数“tradeStatus”:“WAIT_SELLER_SEND_GOODS” | |
退款中(数字) | 交易列表 | 附带参数“tradeStatus”: “TRADE_REFUND” | |
今日子订单数(数字) | 交易列表 | ||
昨日订单数(数字) | 交易列表 | ||
待评价(数字) | 交易列表 | 附带参数“tradeStatus”: “WAIT_BUYER_APPRAISE” | |
今PC子订单(数字) | 交易列表 | ||
itemDetail | 商品消息(消息) | 商品详情 | 附带参数 iid 商品id |
tradeDetail | 交易消息(消息) | 交易详情 | 附带参数tid 交易id |
小程序通过千牛的业务API my.qn.openCategory或my.qn.openPlugin来直达商品和交易插件的功能页面。
my.qn.openCategory({ category: "jiaoyiguanli", pageName: "tradeList", param: JSON.stringify({ tradeStatus: 'WAIT_BUYER_PAY', startCreated: '2019-08-01 00:00:00', endCreated: '2001-08-06 00:00:00' }), success: (res) => { }, fail: (res) => { } })
兼容旧有的打开方式,在directPage参数中传入capability参数,同时业务参数通过param参数传入。
my.qn.openPlugin({ appkey: "25236066", directPage: '{"capability":"itemList"}', param: '{"itemStatus":"onsale"}', success: (res) => { }, fail: (res) => { } });
小程序开发者可以应用启动参数中获取capabilty类型和对应的业务参数。在app.js的 onLaunch 方法的options.query取到相关参数,然后使用 my.redirectTo或my.navigateTo 方法进行跳转。
App({ cloud, onLaunch(options) { //options 中参数格式如下 {"path":"...", "query":{"event":"itemList", "itemStatus":"onSale"}} //需要比较 itemDetail 和 event_itemDetail以兼容旧ios版本 if (event == 'itemDetail' || event == 'event_itemDetail') { my.redirectTo({ url: '/pages/myItemDetail/myItemDetail' }) } });
ISV在开发过程中,可以通过mock url的方式并生成二维码,扫码打开,让开发中的小程序有获得对应的场景参数, 生成mock url的形式如下,$miniAppUrl代表自己的小程序URL,可以来自IDE生成的二维码,{$miniAppUrl}&query=event%3DitemList%26itemStatus%3Donsale, 例如,https://m.duanqu.com?_ariver_appid=3000000002058512&nbsv=0.1.1911251952.12&nbsource=debug&nbsn=DEBUG&query=event%3DitemList%26itemStatus%3Donsale, 生成对应的二维码。