做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;
}
有人住高楼,有人处深沟。 有人光万丈,有人一生绣。 时光是匆匆,回首无旧梦。 人生若几何,凡尘事非多。 深情总遗却,妄自也洒脱。