最近遇到一个需求:点击一个按钮,如果本机装有则唤起app,没有的话则跳下载页。
刚一接到需求,觉得很熟悉,实际上这个功能也确实很常见, 尤其是在微信里面更是常见,尝试着自己写,但是却发现总是很难做到100%的完美。主要还是微信单方面修改了底层, 禁止非腾讯系软件通过H5直接跳转app
那么我们就需要自己想办法了
作为一个刚入前端的菜鸡, 自己写当然是写不出来的了, 所以就用了别人写好的现成的轮子callapp-lib
不得不说确实挺友好的, 它能在大部分的环境中成功唤端,而且炒鸡简单啊,拿过去就可以用啊,还支持很多扩展功能
今天我们就来说说这个callapp-lib
我的接到的需求大概是这样的 如果检测到不是在app里面用webview打开的页面就会显示上面的立即打开按钮,
点击的话会判断是否在微信中, 如果在微信中打开就会显示点击右上角-选择在safari中打开的图片, 然后在浏览器中直接跳转打开app, 跳到app对应的页面
首先分析需求, 第一步判断现在在哪个端打开的网页
export default function(context) {
if (process.server) {
let ua = context.req.userAgent
ua.isWechat = Boolean(ua.source.toLowerCase().match(/MicroMessenger/i))
ua.isInApp =
(context.query && context.query.openinapp !== undefined) || context.req.headers['x-request-deviceid']
ua.isWechatMini = context.query && context.query.wechatmin === '1'
ua.device = {
id: context.req.headers['x-request-deviceid'] || context.req.cookies.get('koa:sess') || '',
info:
context.req.headers['x