最近公司为了增加用户活跃度,新增了许多活动,要求从多种方式可以跳转到App的指定页面。比如闪屏页、首页弹框、首页banner、webView、极光推送消息点击跳转以及通过短信跳转到App。

对此,我们制定了一套专属于公司的liubike协议,统一了三端的跳转,解决了跳转不规范和不全面的情况。
liubike协议和淘宝的taobao://、微信的 weixin://等类似,liubike协议遵循于URL schema。

URL Schema

URL Schema 的属性有 Scheme、Host、port、path、query。
比如

liubike://mine/settings?type=1&&id=7

这里我们可以得知

scheme: liubike
host:mine
path:settings
query:type=1&&id=7

这样,我们根据liiubike协议,就拥有了跳转到App任意页面的能力。

可优化的地方: 可以和ARouter的路由进行整合,从而体现路由化的优势

通过短信跳转到App指定页面

前面几个跳转通过liubike协议相对较好实现,但是对于通过短信直接跳转到App,IOS是可以实现的,而Android研究了一圈,发现都是通过先跳转到H5页面,然后再中转跳转到App的。
比如美团

【美团点评】「宁波」今日打车单单最高减20元!上班通勤不用慌,美团打车帮你忙 dpurl.cn/6A5zgkW 回TD退订

跳转到H5后,直接弹出了跳转到App的弹框。
如果点击允许打开,则直接打开App;
如果点击不允许打开,则还可以通过H5中的"已下载App立即打开"按钮,跳转到App中。

又查看了优酷、中国电信等,都是类似的。
故最后决定,也采用此方案。

首先,我们需要先创建一个html

<!DOCTYPE html>
<html>
<head><title>Android跳转测试</title>
</head>
<body><a href="liubike://mine/settings?type=1&&id=7">打开</a></br>
</body>
</html>

然后,在AndroidManifest中,对SplashActivity,添加如下intent-filter

<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:scheme="liubike"/>
</intent-filter>

data里scheme、path、host都可以指定,但是,由于我们跳转的页面是未知的,此处,我们只指定schema。
接着,我们在SplashActivity的onCreate中,实现跳转数据的接收

val action = intent?.action
if (Intent.ACTION_VIEW == action) {L.i(TAGs.SCHEME, "action_view")val uri = intent?.data?.toString()L.i(TAGs.SCHEME, "uri:$uri")if (uri != null) {val type = uri.getQueryParameter("type")val id = uri.getQueryParameter("id")//TODO 在这里可以跳转到指定页面}
}

最后,我们通过浏览器打开我们编写的html,点击a标签,就会弹出跳转App的弹框了。

小结

至此,通过短信跳转到App的功能就可以实现了。
发送的短信中包含一个url,点击会跳转到h5中,接着通过h5的中转,最终可以跳转到App中。
不过我们demo中使用a标签的形式,还有兼容性问题,试了下QQ浏览器和系统自带浏览器,都是可以弹出跳转对话框的,但是夸克浏览器点击了并没有任何效果。这个就需要H5开发来兼容这些问题了,我们这里就不讨论了。

补充

可以使用第三方库 LinkedMe 的深度链接功能,来帮助我们实现App的跳转。这样就不需要我们自己去实现了。
相关推荐阅读 : 浏览器为什么能唤起App的页面

Android 通过短信(H5)跳转到App指定页面相关推荐

  1. 从微信跳转第三方app:在微信打开h5页面后,点击触发跳转自己app指定页面

    今天,朋友发来一条拼多多砍价消息,点击链接跳转到下面的H5页面,点击允许,跳转到拼多多的App Store页面,到这都很正常对吧,神奇的是点击打开后跳转到了指定的页面,不只是简单的打开app 想了下他 ...

  2. 微信或QQ分享跳转到APP指定页面

    分享链接通过浏览器跳转到APP页面 iOS分享通过safari浏览器实现都是按照URL Scheme,但是在QQ或者微信就无法实现,原因是QQ.微信将这种唤醒app的方式给禁止掉了, 因此这种方式就不 ...

  3. 短信链接跳转微信小程序(URLSchema等)

    文章目录 实现方案 需下载二维码 使用URL Schema 微信云开发 实现方案对比 实践出真知(URLSchema) 获取微信access_token 获取openlink H5页面(模拟短信跳转, ...

  4. 短信链接跳转微信小程序

    短信链接跳转微信小程序 1 实现方案 1.1 通过URL Scheme实现 1.2 通过URL Link实现 1.3 通过云开发静态网站实现 2 实现方案对比 3 实践 URL Schema 方案 3 ...

  5. 安卓开发中发送短信的方法 APP内单发短信 群发短信 APP跳转到短信页 单条短信 多条短信Intent跳转

    1.APP内部直接发送短息 包括发送单条短信 发送多条短信 APP内部发送短信首先要获取一个发送短信的权限 <uses-permission android:name="android ...

  6. Android之——短信的备份与还原

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47091281 眼下,Android手机中的一些软件能够实现手机短信的备份与还原操作 ...

  7. android 获取短信验证码倒计时

     android 获取短信验证码倒计时 public class MainActivity extends Activity { private Button submit;     privat ...

  8. android发送短信

    使用android发送短信,需要先进行添加发送,读取短信新的权限: <uses-permissionandroid:name="android.permission.RECEIVE_S ...

  9. Android接收短信-createFromPdu

    createFromPdu(byte[]) method was deprecated in API level 23. Use createFromPdu(byte[], String) inste ...

最新文章

  1. 基于Python, Selenium, Phantomjs无头浏览器访问页面
  2. mysql实训报告_mysql数据库技术》实验报告.doc
  3. 程序人生--从这里开始
  4. git cherry-pick 使用
  5. linux中的nm命令
  6. CentOS环境下tomcat启动超级慢的解决方案
  7. ps意外崩溃_充满意外的数学中考
  8. 我是学计算机的上银行考什么条件,计算机专业能报考银行哪些岗位
  9. C++极值minmax最大值最小值算法(附完整源码)
  10. R语言实战学习笔记-高级数据管理
  11. PWN-PRACTICE-BUUCTF-17
  12. java全局变量加锁_Java锁Synchronized,对象锁和类锁举例
  13. .NetCore 入门篇:理解
  14. 单例模式访问mysql设计类图_如何应用策略设计模式分离JDBC数据库连接中的外部环境信息...
  15. Linux内存管理:Linux 可加载内核模块剖析:2.6 内核透视图
  16. 解决前端跨域的八种方案
  17. tampermonkey这玩意如何替换flash播放器为h5播放器?
  18. matlab 创建网格图和曲面图
  19. 哪种方式的电子签名更可靠?
  20. 看距离纪念日还有多少天的日历软件 便签自动计算距离纪念日剩余天数

热门文章

  1. 哈希表的画法_2018年流行什么眉型
  2. 少儿计算机兴趣小组活动记录,小学美术兴趣小组活动记录-(一).doc
  3. lua table是否为空的判断
  4. 如何搜集你想要的信息
  5. bitbucket搭建
  6. 无敌2_大师级鱼丸云吞终极海鲜面
  7. 子平真诠释疑笔记(二)
  8. #荣耀双十一# 就是耀免单,年度旗舰任性送
  9. 遗传算法实现寻找函数最值
  10. 二进制部署高可用Kubernetes v1.17.x