您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>通讯/手机编程>

ios上关于Universal Link 前端部署的应用

大小:0.2 MB 人气: 2017-09-25 需要积分:1

前言:

文章会适当说一些如何开发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会弹个可恶的跳转失败的框ios上关于Universal Link 前端部署的应用

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!