先来看效果

uniapp 微信小程序 ios打开不了外部链接 安卓可以打开 uniapp跳转微信小程序_vue.js

需求:在小程序或app点击跳转按钮就会打开百度网盘并且进入后自动解锁打开该页面

使用框架:uniapp

需求分解:1.在小程序中点击跳转按钮打开百度网盘

看到这个需求,第一反应肯定是打开uniapp官网,搜一搜有没有什么好用的方法可以让我嫖一嫖

嘿,没想到还真有      

uniapp 微信小程序 ios打开不了外部链接 安卓可以打开 uniapp跳转微信小程序_uni-app_02

这个方法可以直接跳转另一个小程序(以下是使用方法)

uni.navigateToMiniProgram(OBJECT)

uni.navigateToMiniProgram({
  appId: '',
  path: 'pages/index/index?id=123',
  extraData: {
    'data1': 'test'
  },
  success(res) {
    // 打开成功
  }
})

跳转方法是解决了,可是怎么能跳到对应的小程序呢,比如说我现在要跳到百度网盘,我看了一下appId这个参数传对应的appid就行,接下来我把如何获取百度网盘的appid的教程给大家分享一下

1.首先打开百度网盘小程序

2.

uniapp 微信小程序 ios打开不了外部链接 安卓可以打开 uniapp跳转微信小程序_正则表达式_03

3.

uniapp 微信小程序 ios打开不了外部链接 安卓可以打开 uniapp跳转微信小程序_javascript_04

4.

uniapp 微信小程序 ios打开不了外部链接 安卓可以打开 uniapp跳转微信小程序_uni-app_05

好好好,这时候百度网盘的appid就有了

经过对获取到的url转码得到了以下的路径url

转码:pages/netdisk_share/share?scene=1PzqiNscYrx6u8DBjmVq52s%231234%238%230

然后只需要拿链接中替换掉就可以使用

然后拿以下举例:

例:https://pan.baidu.com/s/1PzqiNscYrx6u8DBjmVq52s?pwd=1234

转码:pages/netdisk_share/share?scene=1PzqiNscYrx6u8DBjmVq52s%231234%238%230

uniapp 微信小程序 ios打开不了外部链接 安卓可以打开 uniapp跳转微信小程序_前端_06

然后就是做app跳转,这边是直接有app方法(我这边没有判断用户是否手机上有百度网盘小程序,使用这方法是直接用浏览器打开的网盘地址,你们也可以进行判断一下)

plus.runtime.openURL

到现在小程序跳转和app跳转方法都有了,就可以做跳转功能了

由于复制出来的百度网盘链接可能会有文字或者什么东西,需要先用正则给净化一下

getStrUrl(s) {
				var reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
				var reg = /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g;
				s = s.match(reg);
				return (s && s.length ? s[0] : null);
			},

然后拿着净化后的链接去做跳转功能,我这边直接替换过了

openurl(url) {
				let cjurl = this.getStrUrl(url)//净化过后的url
				if (uni.getStorageSync('isWechat') == true) {
                    //小程序跳转
					let tzurl = cjurl.split('/s/')[1].split('?pwd')[0]//取出来链接
					let pwd = cjurl.split('/s/')[1].split('?pwd=')[1]//取出来提取码
					uni.navigateToMiniProgram({
						appId: 'wxdcd3d073e47d1742',
						path: `pages/netdisk_share/share?scene=${tzurl}%23${pwd}%238%230`,
						extraData: {
							foo: 'bar'
						},
						envVersion: 'release',
						success(res) {
							// 打开成功
						}
					})
				} else {
					plus.runtime.openURL(cjurl, function(res) {
						//这边是app跳转
						console.log(res);
					});
				}

			},

这样整个流程就都有了,可以直接跳转到百度网盘了,开心开心