做app开发,有时需要跳转打开外部的app应用,来促成引流或者分享等,这个时候就需要通过scheme跳转协议来完成。
使用scheme跳转外部app,就需要配置对应app的scheme,那这个scheme怎么来呢?
1、网上搜索常用的app的scheme
2、自己通过一些方法来获取
获取方法:电脑下载爱思助手
1、打开爱思助手,下载对应的app
2、打开该app所在文件夹,把后缀.ipa变成.zip后解压
3、找到解压后文件夹里面的Info.plist文件,打开,你会看到很多scheme,然后自行判断测试吧。。。
4、每个Info.plist文件里面的数据都有区别,不一定能找到可以用的,爱思助手下载获取的也可能跟你手机上那个匹配不到
uniapp中,跳转外部app的方法如下:
跳转路径为app对应的scheme加指定链接,指定链接为可选,表示打开app中的某个页面,可能需要过滤掉链接的https://再拼接到scheme后面
plus.runtime.openURL("跳转路径(scheme加指定链接)", function(res){ uni.showModal({ content: '本机未检测到该app客户端,是否打开浏览器访问?', success: function(res2) { if (res2.confirm) { let reg = /^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+/; if(reg.test(url)){ plus.runtime.openWeb(url); }else{ plus.runtime.openWeb("https://baidu.com/s?wd="+url); } } } }); });
跳转外部app除了与该app紧密联系的单位,很难保证完全通过scheme跳转到该app各个页面,因为网上找的或者自己获取的scheme不稳定,或者该app出现bug,导致无法跳到我们想要的页面。
这个时候,可以考虑直接打开某个地址,而不是先跳转该app,通过网页再进行下一步操作。
直接打开该链接,则不需要在链接前加对应app的scheme配置
openWeb:通过外部浏览器应用打开链接
openURL:通过内置webview打开链接
if (iconType != '淘宝') { let reg = /^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+/; if (reg.test(url)) { if(iconType != '抖音'){ plus.runtime.openWeb(url); }else{ plus.runtime.openURL(url); } } else { plus.runtime.openWeb('https://baidu.com/s?wd=' + url); } return; }