ios上关于Universal Link 前端部署的应用
前言:
文章会适当说一些如何开发iOS上的universal link,但类似的文章太多了一艘一大堆,每篇都介绍的挺清楚,因此也不是重点
本文更加会侧重从前端的角度,将整个universal link 部署应用到wap app中的一些策略和一些问题解决办法
其实整个Universal Link没啥难的,真正上线过Universal link的人这些应该都趟过一遍了,本文主要是我们team去应用Universal link的时候一些文档沉淀和记录
Schema VS Universal Link
Deeplink相关的威廉希尔官方网站 ,在wap中唤起app其实应用最最广泛的并不是Universal Link,而是直接Schema跳转
1 location.href?=? ‘ schema://xxxx’
并且一般各大APP都会给自己做一套路由体系,这样其实可以直接在schema头后面对接路由体系,做到一行schema定位打开任意App内功能界面(我就不详细扯路由的事了)
1
2
3
4
5
6 -?(BOOL)application:(UIApplication?*)application?openURL:(NSURL?*)url?sourceApplication:(NSString?*)sourceApplication?annotation:(id)annotation?{
???? if ?([[url?absoluteString]?hasPrefix:@ “ schema://” ])?{
????????[[WKDispatcher?sharedInstance]?operationObjectFromRouteURL:[url?absoluteString]]; //路由
???????? return ?YES;
????}
}
如果单纯为了实现deeplink -- 在WAP上打开App,并且传递来数据信息,定位App内的具体逻辑,那么Schema就够了,其实没必要上Universal Link,Schema相当于是很特殊的Url,他是schema://xxx这种样子,如果安装了APP才能支撑跳转这种Schema Url,如果没安装APP就没任何效果,而Universal Link则是把普通url,长http://xxx.xxx.xxx/xxx这样的Normal Url,如果安装了App,就能像Schema一样传递给App,延续App内逻辑,如果没装App,则还会继续在浏览器里跳转这个Normal Url
Schema的弊端
Schema无法判断是否安装App
一定会有这样的产品需求的:
如果已经安装App,则打开App
如果没有安装App,则前往下载App
浏览器实际上是没有能力判断手机里是否安装了某个App的,所以聪明的程序员们选择了讨巧的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 try ?{
???? var ?appSchema?=? ‘ schema://xxxx’ ;
???? if ?($.os.ios)?{
????????location.href?=?openNALocation;? //location.href?打开schema
????}
???? else ?{
????????$( ‘body’ ).append( ‘’ );? //iFrame?打开?schema
????}?
} catch ?(e)?{}
//延迟1000秒
setTimeout( function ?()?{
???? if ?($.os.ios)?{
????????location.href?=?`https: //itunes.apple.com/us/app/idxxxxxxx?mt=8`;
????}
???? else ?{
????????location.href?=?`https: //xxx.xxx.xxx/xxx/xxx.apk`;//直接apk下载link
????}?
},1000)
首先发起跳转Schema
如果没安装App,会打开App失败,没效果
如果安装App,会成功打开App
延迟1000ms
如果没安装App,Schema打开失败,等1000秒后会自动跳转
如果安装App,App会打开,当前网页会被暂停,这延迟代码不会执行
聪明的人会发现,这样有个风险,如果用户打开APP成功后,又手动切回浏览器,那么延迟1000ms的代码依然会执行,安卓会跳出下载apk包得提示,iOS会又再度跳到Appstore,但这个瑕疵也不是太大的问题,所以这种做法被普遍采用,运用在各种安装就跳转,不安装就下载的用户场景。
安卓这么用挺好,iOS有个讨厌的弹框
如果用户没有安装App,那么他一定会经历2个事情
schema打开app,但是失败
延迟后,跳转下载App
在第一个环节,安卓上schema打开失败,没有任何反映,也没有任何提示,一切顺利,但是iOS就不同了。
schema会弹个可恶的跳转失败的框
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
下载地址
ios上关于Universal Link 前端部署的应用下载
相关电子资料下载
- iOS17.1可能明天发布,iOS17.1主要修复哪些问题? 376
- 华为全新鸿蒙蓄势待发 仅支持鸿蒙内核和鸿蒙系统应用 719
- 苹果手机系统iOS 17遭用户质疑 731
- iPhone12辐射超标?苹果推送iOS 17.1解决此事 750
- 传华为囤积零部件 目标明年智能手机出货7000万部;消息称 MiOS 仅限国内,小米 28208
- 苹果推送iOS17.0.3,解决iPhone15Pro系列存在机身过热 216
- Testin云测兼容和真机服务平台中上线iPhone 15系列手机 208
- 利尔达推出搭载HooRiiOS的Matter模组 145
- 运放参数解析:输入偏置电流(Ibias)和失调电流(Ios) 128
- 昆仑太科发布支持国产飞腾腾锐D2000芯片的开源BIOS固件版本 448