# uniapp应用互调 **Repository Path**: zht131/uniapplaunch ## Basic Information - **Project Name**: uniapp应用互调 - **Description**: uniapp移动app应用互调 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-02-15 - **Last Updated**: 2023-02-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UniApp两应用互调授权调用 ## 介绍 uniapp移动App两应用互调; ## 需求 一个APP拉起另一个APP进行授权,再回调; ## 实现流程 1. A包处理:去B包申请登陆,携带参数,拉起B包; 2. B包处理:解析参数,跳转一个授权页面,点击授权参数回调给A包; 3. A包处理:解析B包返回参数; ## 需求 Demo下载地址:https://gitee.com/coyeking/uniapplaunch; ## 流程解析 --- - A包处理:去B包申请登陆,携带参数,拉起B包; 1. 使用[Boolean plus.runtime.isApplicationExist(appInf);](https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.isApplicationExist)判断包是否安装; 2. 再使用[plus.runtime.openURL](https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.openURL),携带参数打开B包,在B包`onShow()`中监听A包传递来的参数; 代码如下: ```js // #ifdef APP-PLUS if(plus.runtime.isApplicationExist({pname:'uni.UNI8264056',action:'myuniapptest://'})){ plus.runtime.openURL('myuniapptest://xxx.xxx.com?account=123 ', error => { uni.showModal({ title: '失败', content: JSON.stringify(error), success: data => {} }); }); }else{ console.log("B包未安装"); } // #endif ``` --- - B包处理:解析参数,跳转一个授权页面,点击授权参数回调给A包; 1. `App.vue`中使用`plus.runtime.launcher == 'scheme'`判断下启动,再获取到A包参数,跳转一个授权页面; ```js if (plus.runtime.launcher == 'scheme') { if(plus.runtime.arguments != ""){ try { var data = plus.runtime.arguments; var res= data.split('?'); let url = `/pages/ThirdPartyAuthorization/ThirdPartyAuthorization?${res[1]}`; uni.navigateTo({ url:url }) } catch (e) { console.log('失败'); } } } 2. 登陆界面收到请求app信息后,授权,将授权后的令牌数据返回A包,同理,`plus.runtime.openURL`携带参数打开A包,A包在监听参数并处理令牌数据即可完成互调授权; ```