Android 通过短信(H5)跳转到App指定页面
最近公司为了增加用户活跃度,新增了许多活动,要求从多种方式可以跳转到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指定页面相关推荐
- 从微信跳转第三方app:在微信打开h5页面后,点击触发跳转自己app指定页面
今天,朋友发来一条拼多多砍价消息,点击链接跳转到下面的H5页面,点击允许,跳转到拼多多的App Store页面,到这都很正常对吧,神奇的是点击打开后跳转到了指定的页面,不只是简单的打开app 想了下他 ...
- 微信或QQ分享跳转到APP指定页面
分享链接通过浏览器跳转到APP页面 iOS分享通过safari浏览器实现都是按照URL Scheme,但是在QQ或者微信就无法实现,原因是QQ.微信将这种唤醒app的方式给禁止掉了, 因此这种方式就不 ...
- 短信链接跳转微信小程序(URLSchema等)
文章目录 实现方案 需下载二维码 使用URL Schema 微信云开发 实现方案对比 实践出真知(URLSchema) 获取微信access_token 获取openlink H5页面(模拟短信跳转, ...
- 短信链接跳转微信小程序
短信链接跳转微信小程序 1 实现方案 1.1 通过URL Scheme实现 1.2 通过URL Link实现 1.3 通过云开发静态网站实现 2 实现方案对比 3 实践 URL Schema 方案 3 ...
- 安卓开发中发送短信的方法 APP内单发短信 群发短信 APP跳转到短信页 单条短信 多条短信Intent跳转
1.APP内部直接发送短息 包括发送单条短信 发送多条短信 APP内部发送短信首先要获取一个发送短信的权限 <uses-permission android:name="android ...
- Android之——短信的备份与还原
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47091281 眼下,Android手机中的一些软件能够实现手机短信的备份与还原操作 ...
- android 获取短信验证码倒计时
android 获取短信验证码倒计时 public class MainActivity extends Activity { private Button submit; privat ...
- android发送短信
使用android发送短信,需要先进行添加发送,读取短信新的权限: <uses-permissionandroid:name="android.permission.RECEIVE_S ...
- Android接收短信-createFromPdu
createFromPdu(byte[]) method was deprecated in API level 23. Use createFromPdu(byte[], String) inste ...
最新文章
- 基于Python, Selenium, Phantomjs无头浏览器访问页面
- mysql实训报告_mysql数据库技术》实验报告.doc
- 程序人生--从这里开始
- git cherry-pick 使用
- linux中的nm命令
- CentOS环境下tomcat启动超级慢的解决方案
- ps意外崩溃_充满意外的数学中考
- 我是学计算机的上银行考什么条件,计算机专业能报考银行哪些岗位
- C++极值minmax最大值最小值算法(附完整源码)
- R语言实战学习笔记-高级数据管理
- PWN-PRACTICE-BUUCTF-17
- java全局变量加锁_Java锁Synchronized,对象锁和类锁举例
- .NetCore 入门篇:理解
- 单例模式访问mysql设计类图_如何应用策略设计模式分离JDBC数据库连接中的外部环境信息...
- Linux内存管理:Linux 可加载内核模块剖析:2.6 内核透视图
- 解决前端跨域的八种方案
- tampermonkey这玩意如何替换flash播放器为h5播放器?
- matlab 创建网格图和曲面图
- 哪种方式的电子签名更可靠?
- 看距离纪念日还有多少天的日历软件 便签自动计算距离纪念日剩余天数