已经安装跳转应用的情况

1.对于IOS配置打包

配置路径manifest->app-plus->distribute->ios

注意不要使用大写及中文以及特殊字符等,示例代码如下

"urltypes" : [{"urlidentifier" : "com.runtest.test","urlschemes" : [ "runtest" ]}]

配置好后需要打包后才能生效,在另一个应用或者程序中访问带有唤起链接的页面访问runtest://

如下

点击链接后会提示是否打开

2.安卓配置打包

  1. 云打包:配置路径manifest->app-plus->distribute->android
    配置与ios类似,示例代码如下

    "schemes" : "runtest"


    配置好后云打包,与ios相同

  2. 本地离线打包

  • 打开Android项目的AndroidManifest.xml文件。
  • 将应用入口activity中的android:scheme值改为需要的UrlSchemes即可。

若未知是否安装应用

在唤起应用页面用js代码请求该协议,如果在500ms内,如果有应用程序能解析这个协议,那么就能打开该应用;如果超过500ms就跳转到app下载页。

// 打开链接

openApp() {
                var ua = window.navigator.userAgent.toLowerCase();
                if (ua.match(/MicroMessenger/i) == 'micromessenger') {
                    uni.showModal({
                        showCancel: false,
                        title: "提示",
                        content: "请用外部浏览器打开!"
                    })
                    return
                }
                if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
                    window.location = "https://apps.apple.com/us/app/商店链接" // 可以在苹果开发者中心找对应APP的链接
                    // window.location = "runtest://"
                } else if (navigator.userAgent.match(/android/i)) {

window.location.href = "runtest://page=index"
                        uni.showLoading({
                            mask: true
                        })

uni.hideLoading();
                        uni.showModal({
                            title: "提示",
                            content: "暂未检测到客户端,是否下载?",
                            success: function(res) {
                                if (res.confirm) {
                                    window.location =
                                        "下载链接"
                                } else if (res.cancel) {
                                    // window.close();
                                }
                            }
                        })
                }
            },

因为在打开APP过程中有添加Loading状态去先校验是否有安装此APP,如果存在这个APP打开后,该页面应取消LOADING状态并且禁止弹出未安装提示:

onHide() {
            if (this.downLoadHandle) {
                uni.hideLoading()
                clearTimeout(this.downLoadHandle)
            }
        },

在应用中对于从外部唤起的链接可以根据参数对应跳转指定页面,由于IOS的部分问题,需要包一个定时器才会生效

onShow: function() {// #ifdef APP-PLUSlet urlMap={index:"/pages/index/index"}setTimeout(function() {var args = plus.runtime.arguments.split("://page=")[1];util.toast(urlMap[args])if (args) {plus.runtime.arguments = '';uni.navigateTo({url: urlMap[args] || "/pages/index/index"})}}, 10);// #endif}

可参考dcloud官方文档:

Android:https://ask.dcloud.net.cn/article/409

iOS:https://ask.dcloud.net.cn/article/64

uni-app项目配置UrlSchemes在外部打开APP相关推荐

  1. 头条App项目测试实战(二)App手工测试流程以及需求分析与评审

    熟悉头条App项目步骤: 业务特性 用户与角色 组织架构图 技术栈 头条App测试流程(一次迭代) 测试流程 需求分析与评审 编写测试计划(测试方案) 设计测试用例与评审 执行测试用例与缺陷跟踪 编写 ...

  2. uni-app App端配置urlSchemes

    注意不要使用大写及中文以及特殊字符等:配置好后需要打包后才能生效 IOS配置路径 打开manifest->源码视图,在app-plus->distribute->ios 输入下面的代 ...

  3. vue 项目 v-cli3 IE浏览器无法打开app.js 报错解决

    项目在谷歌浏览器上显示正常,在ie浏览器打不开, 找了好久没有找到问题. 编译后发现 es6的一些语法 没有被转化为es5. ie浏览器无法显示. 安装babel插件后 build后就没有问题了 转载 ...

  4. Vue仿饿了么app项目总结

    前言 这是我的第一个基于Vue项目的作品,目的是把之前的前端知识累积加上目前流行的前端框架,以项目的形式展示出来. 大家在学习Vue的时候,可以将此项目作为学习Vue框架的一个模板 Vue仿饿了么ap ...

  5. web页面中如何唤起打开APP实践

    作者:拾邑 链接:https://github.com/suanmei/callapp-lib/issues/1 前段时间在做一些H5页面,落地页占比较大,落地页承担的职责就是引流.引流有两种形式,同 ...

  6. web页面中如何唤起打开APP

    网上看到这篇文章,写的很清楚,这里转载记录一下.H5唤起APP指南 | 拾壹小筑 1.前言 前一段时间在做电流App H5页面,需求中落地页占比较大,落地页承担的职责就是引流.引流有两种形式,同时也是 ...

  7. 让HR眼前一亮:30个APP项目软件测试经验,点燃你的简历

    在求职过程中,我们都希望自己的简历能够吸引面试官的眼球,从而获得更多的面试机会.作为一名软件测试人员,丰富的实战经验是让自己脱颖而出的关键之一. 在我多年从事APP项目软件测试的工作中,我积累了大量的 ...

  8. android studio安卓手机tcp通信打开app自动连接,连接失败自动重试8次

    最近在做一个项目,项目其中一个需求是打开app自动连接tcp服务端,连接失败后自动尝试8次.尝试成功继续,不成功提示服务器未响应. 我想到了用多线程实现,其中一个用于显示尝试状态,另一个线程循环尝试s ...

  9. android gdx 放进布局,Android - 将LibGDX项目放入Anroid App项目

    我正在使用Android Studio ,我该如何将LibGDX项目放入Android App项目中(不是将Android App项目放入LibGDX项目中)? 这是将libGDX模块导入Androi ...

最新文章

  1. GPB编辑部招聘启事 2019 Impact Factor破7;CiteScore破10
  2. python爬取新闻后提炼_Python爬虫开发的3大难题,别上了贼船才发现,水有多深...
  3. mac os x 添加 用户 所属 组
  4. 算法 n个数字形成的圆圈中循环删除第m个数字 C++
  5. 控制反转(IoC) ? 工厂模式?
  6. MySQL数据库:完整性约束
  7. 某大佬的20+公司面试题总结和自己的补充
  8. bash脚本 文件_如何使用Bash脚本来管理从AWS S3存储桶下载和查看文件
  9. mysql explain字段含义_史上最全的explain常见结果含义分析,值得收藏
  10. python操作xpath 0227
  11. MobX基础 ----- 类的静态属性和装饰器
  12. 《Algorithms》—— Dijkstra 的双栈算术表达式求值算法
  13. 利用linux mutt 发送邮件(在Shell脚本中使用比较方便)
  14. HDU 2088 Box of Bricks
  15. Sparse Principal Component Analysis
  16. python seo百度_Python与seo,百度关键词相关搜索关键词采集源码
  17. explicit 为什么禁止隐式类型转换
  18. 小程序支持主体迁移了
  19. 自建内网穿透之frp
  20. FOC:在MCU上检验Clark和Park坐标变换是否正确

热门文章

  1. matlab画微分方程的矢量场图_一维波动方程数值解 Matlab 教程(从入门到出图)——3数值计算的Matlab实现...
  2. 计算机主机内的零件有什么用,ROM和RAM分别是什么?有什么区别?与电脑的什么配件的作用是一? 爱问知识人...
  3. 适合新手的mac电脑使用技巧 苹果电脑的快捷键和使用技巧
  4. 【蓝桥杯备赛笔记 02】费解的开关
  5. java oa开发_java开发oa系统
  6. mvp的全称_打游戏抢了这么久的MVP,你竟不知道MVP的全称和由来?
  7. html 手机录视频,手机怎么录制视频 怎么用手机录视频?
  8. amCharts之柱形图
  9. php guzzle并发,使用Guzzle并发请求接口
  10. <video> 标签快进不生效