基于转转 call-app 改造,去除内置的转转系 app,支持在微信中通过 wx-open-launch-app 标签唤起 app (只内置了微信 js sdk 的加载和初始化,wx-open-launch-app 标签需要自行实现)
call-app 是一个通用的唤起 app 的 sdk, 支持唤起多个 app, 兼容主流浏览器、webview,并支持用户自定义唤起配置。
npm i @yuntijs/call-app
import CallApp from '@yuntijs/call-app'如果是通过外链 js 引入,那么可以使用 window.CallApp 得到 CallApp 类
实例化 CallApp 后,即可使用 start 和 download 方法.
// 实例化
const callApp = new CallApp({
schemeUrl: '', // 要唤起目标 app 的 scheme url
})
// 执行 唤起方法
callApp.start()
// 执行 下载
callApp.download()或者
// 实例化
const callApp = new CallApp()
// 执行 唤起方法
callApp.start({
schemeUrl: '', // 要唤起目标 app 的 path ,默认目标app是转转
})
// 执行 下载
callApp.download()- schemeUrl
Stringscheme uri 地址 - universalLink
Stringuniversal-link链接,可选,ios 会优先采用 universal-link - middleWareUrl
String中转 url,如为空则默认跳转下载安装包或 appstore - downloadConfig
Object下载配置,可选,不传则采用 landingPage- ios
Stringapp-store 链接 - android
Stringapk下载链接 - android_yyb
String应用宝 下载链接
- ios
- landingPage
String唤起失败落地页,一般是下载中间页,优先级高于downloadConfig - delay
Number调起app失败后触发下载延迟, 默认 2500(毫秒) - wechatConfig
Object|Function微信 js sdk 配置(支持函数的方式返回),用于在微信中通过 launchApplication 的方式唤起 app, 详见 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html- debug
String开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 - appId
String必填,公众号的唯一标识 - timestamp
String必填,生成签名的时间戳 - nonceStr
String必填,生成签名的随机串 - signature
String必填,签名 - jsApiList
String[]非必填,需要使用的JS接口列表,默认 [] - openTagList
String[]非必填,需要使用的开放标签列表,默认 ['wx-open-launch-app']
- debug
- onInit
Function(ctx, plaform)初始化完成时的hook - callStart
Function开始执行调起时的hook - callSuccess
Function执行调起成功时的hook - callFailed
Function执行调起失败时的hook - callDownload
Function执行下载时的hook - callError
Function内部异常时的hook - onWechatReady
Function微信端sdk初始化成功后的回调
- start
Function唤起功能
// 挂在CallApp实例上的方法
// options 可选 配置同上
const callApp = new CallApp()
callApp.start(options)- download
Function下载功能
// 挂在CallApp实例上的方法
// options 可选 配置同上
const callApp = new CallApp()
callApp.download(options)// 唤起支付宝
const callApp = new CallApp({
schemeUrl: 'alipay://platformapi/startapp?appId=20000056', // 支付宝转账
landingPage: 'https://render.alipay.com/p/s/i', // 支付宝落地页(下载页)
callStart: () => {
console.log('触发 开始唤起钩子')
},
callSuccess: () => {
console.log('触发 唤起成功钩子')
},
callFailed: () => {
console.log('触发 唤起失败钩子')
},
})
callApp.start()提供 use 方法, 方便用户插入 js 或者 自定义 CallApp 实例内部方法。并支持链式调用。
使用示例:
const callApp = new CallApp(options)
callApp.use(function PluginA(app, optsA) {
const old = app.start
app.start = function() {
//
old.call(app) // 或者 old.call(app, options)
}
}).use(function PluginB(app, optsB) {
//
})| 环境 | 下载 | scheme/ulink 唤起(已装 app) | 失败回调(已装 app) | 成功回调(已装 app) | 失败回调(未装 app) |
|---|---|---|---|---|---|
| safari | 支持 location | ulink 支持 | 不支持 | 支持 | ulink不支持 |
| qq 浏览器 | 支持 location | ulink 支持 | 支持 | 支持 | ulink不支持 |
| uc 浏览器 | 支持 location | ulink 支持 | 支持 | ulink支持, scheme 不支持 | ulink不支持 |
| 百度浏览器 | 支持 location | ulink 支持, scheme 不支持 | 支持 | ulink支持 scheme 不支持 | ulink不支持 |
| 夸克浏览器 | 支持 iFrame | 不支持 ulink,支持 scheme | 支持 | 支持 | 支持 |
| 谷歌浏览器 | 支持 location | ulink 支持 | 支持 | 支持 | ulink不支持 |
| sougou 浏览器 | 不支持 | ulink 支持 | 支持 | 支持 | ulink不支持 |
| wx | 支持,应用宝 | ulink 支持, scheme 不支持 | 支持 | 支持 | ulink不支持 |
| 不支持 | ulink 支持, scheme 不支持 | 支持 | ulink支持,scheme 不支持 | ulink不支持 | |
| 支持, 应用宝 | ulink 支持 | 支持 | 支持 | 支持 |
| 环境 | 下载 | scheme 唤起(已装 app) | 失败回调(已装 app) | 成功回调(已装 app) | 失败回调(未装 app) |
|---|---|---|---|---|---|
| qq 浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| uc 浏览器 | 支持 tagA | 支持 | 支持 | 支持 | 支持 |
| 百度浏览器 | 支持 location | 不支持 | 支持 | 不支持 | 支持 |
| 夸克浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| sougou 浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| 360 浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| 华为浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| wx | 支持,应用宝 | 不支持 | 支持 | 不支持 | 支持 |
| 不支持 | 不支持 | 支持 | 不支持 | 支持 | |
| 支持, 应用宝 | 支持 | 支持 | 支持 | 支持 |
| 环境 | 下载 | scheme 唤起(已装 app) | 失败回调(已装 app) | 成功回调(已装 app) | 失败回调(未装 app) |
|---|---|---|---|---|---|
| qq 浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| uc 浏览器 | 支持 tagA | 支持 | 支持 | 支持 | 支持 |
| 百度浏览器 | 支持 location | 不支持 | 支持 | 不支持 | 支持 |
| 夸克浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| 360 浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| 小米浏览器 | 支持 location | 支持 | 支持 | 支持 | 支持 |
| wx | 支持,应用宝 | 不支持 | 支持 | 不支持 | 支持 |
| 不支持 | 不支持 | 支持 | 不支持 | 支持 | |
| 支持,应用宝 | 支持 | 支持 | 支持 | 支持 |