首页 > 其他分享 >前端 Notes | H5 打开 App 并跳转指定页(Android/iOS)最 low 实现

前端 Notes | H5 打开 App 并跳转指定页(Android/iOS)最 low 实现

时间:2022-11-11 22:39:01浏览次数:52  
标签:微信 App iOS H5 Intent 跳转 android 打开 Android

还是技术的世界简单,除了 0 就是 1。

前端 Notes | H5 打开 App 并跳转指定页(Android/iOS)最 low 实现_Android

前言

之前接到一个任务,大概细分如下:

  • H5 调起 App(Android/iOS) 并打开对应页面;
  • 如果应用未安装,则提示用户进行下载;
  • 微信打开该链接分享好友展示卡片样式,不使用微信 SDK 实现;
  • 通过调用微信 SDK 实现分享好友卡片形式;

忐忑的内心,又要开始前端之旅,咋整呢?

干呗。

个人工作主要偏向于 Android,所以此篇内容主要以 Android 为例,毕竟鸡老大也曾经说过,不对没涉及的领域做太多评价。

之前项目中曾经使用 scheme 来打开过指定的页面,而此时,同样打算以 scheme 入手,对于一些新奇的玩意,私下有空再去研究咯。

由于项目特殊性,这里暂时不放置动态效果图了。

一、H5 调起 App(Android/iOS) 并打开对应页面

关键的点在于移动端以及前端协定对应的协议名称以及 host 即可。

例如我们现在协定如下:

  • com.test.app://topic?id=196&code=50c20872

当然,协议名随便,不一定非要是域名,比如说,我指定个 schemeName 也可以。

而对于 Android 的小伙伴只需要在指定打开的页支持此 scheme 即可:

<activity
android:name=".ui.activity.module.topic.TopicActivity"
android:exported="true"
android:launchMode="standard"
android:screenOrientation="portrait">

<intent-filter>
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data
android:host="topic"
android:scheme="com.test.app" />
</intent-filter>
</activity>

而获取 H5 传递的参数也是贼 easy,如下:

if (Intent.ACTION_VIEW == intent.action && intent.data != null) {
mAdvisoryId = intent.data.getQueryParameter("id").toInt()
mPrivateCode = intent.data.getQueryParameter("code")
}

最后针对 H5 只需要跳转此 url 即可:

// 通用协议地址
var commSchemeUrl = "com.test.app://topic?id=196&code=50c20872";
window.location.href = commSchemeUrl;

二、如果应用未安装,则提示用户进行下载

最好的情况就是所有用户都安装咱开发的应用,可惜啊,又不是微信。

所以不得不考虑一个问题,如果目标用户未安装该应用,又该如何?能否间接提升产品下载安装率?

思来想去,还是觉得如果没下载直接跳转下载页 (这就是一句废话

标签:微信,App,iOS,H5,Intent,跳转,android,打开,Android
From: https://blog.51cto.com/u_13346181/5845459

相关文章

  • iOS | 获取 App Store 中 App 下载地址
    追随鸡老大,点击积累~前言感谢掘金各位大佬指点我这个小Android,特意上来整理下,方便有需要的小伙伴。最近突然接受个搞网页的任务,ummm,前端,“贼爽!”(我加了引号了)我是一块砖,哪儿......
  • ElasticSearch 7.x 中新建表(Mapping)、新增字段(Field)、新增文档(doc)
    新建表(Mapping)示例PUTuser_manager{"mappings":{"properties":{"id":{"type":"keyword"},......
  • vue框架跨域请求之axios
    1、打开hbuilderx,【文件】==》【新建】==》【项目】,创建vue项目。   2、创建后的vue项目结构如下所示,打开【package.json】配置文件,添加axios相关依赖。   ......
  • Apple开发_Socket_UDP协议广播机制的实现
    1、前言1.1什么是UDP协议广播机制?举一个例,例如在一群人群中,一个人要找张三,于是你向人群里大喊一声(广播):“谁是张三”如果它是张三,它就会回应你,在网络中也是一样的......
  • Apple开发_运行Shell脚本代码
    +(NSString*)run_Shell:(NSString*)shell_path{//CHLog(@"脚本所在地址==>%@\n",script_path);if(shell_path){NSTask*script_task=[[NSTas......
  • uniapp之uni-starter小程序多端研发框架搭建与项目实践
    随着移动互联网的飞速发展,无数移动APP琳琅满目;在移动App的发展的基础上,衍生了小程序、轻应用技术,它随时可用,但又无需安装卸载。小程序是一种不需要下载安装即可使用的应用,......
  • iTunes Connect在线创建 App
    创建完成环境文件后,在iTunesConnect上创建APP首先,进入(https://developer.apple.com/membercenter/index.action)选择iTunesConnect编辑切换为居中添加图片注释,......
  • 微信小程序 页面跳转
    //关闭当前页面,返回上一页面或多级页面。可通过getCurrentPages()获取当前的页面栈,决定需要返回几层wx.navigateTo({url:'page/home/home?user_id=111'})wx.navi......
  • iostat命令详解
    iostat命令格式:iostat[-c|-d][-k|-m][-t][-V][-x][device[...]......
  • APP接入支付宝支付对接流程
    一、首先在官方接口文档中添加对应的配置,下载地址:https://opendocs.alipay.com/open/54/106370/ 如果是maven项目可以直接在pom文件中添加如下依赖即可:<......