Cocoa

iOS 中的 Deep Link 、 URL Schemes、U

2021-07-28  本文已影响0人  望穿秋水小作坊

一、Deep Link 、 URL Schemes

1. 什么是 Deep Link?

Deep Link就是一个链接的概念,事实上我们每天都会使用到它去打开一个网站页面,只不过它是比普通的链接更加复杂一些。在web开发领域,深度链接就是说这个链接不是仅仅打开一个网站http://example.com/, 而是直接地打开这个网站中的某个具体内容页面http://example.com/my-awesome-content-page 。 通常来讲,有很多链接就是深度链接,只不过大家都习惯于称之为链接。
在移动开发领域,深度链接的概念就是指app在处理特定的url时能够直接跳转到对应的内容页面或者触发特定的逻辑。这样的好处有:

Android、iOS 都推出了相应的概念去实现深链接。于是就有 Universal Link、App Link、URL Schemes。

2. 什么是 URL Schemes?

3. 如何让一个 App 支持 Custom URL Scheme?

<dict>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
 <key>CFBundleURLName</key>
 <string>com.szy.seebaby</string>
 <key>CFBundleURLSchemes</key>
 <array>
     <string>ztjy.parent.applink</string>
 </array>
</dict>

4. 那如果你的 APP 收到一个来自 URL Scheme 的跳转,在哪里处理 URL Scheme 呢?

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
     sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
 BOOL handled = NO;
 // code to handle the URL
 return handled;
}

二、 Universal Link

1. 什么是 Universal Link?

2. Universal Link 的好处(至少说两个吧)?

3. 如何让 app 支持 Universal Link?

Universal links 的具体实现可以参考官方文档:Support Universal Links。简单来说你需要:

4. 用 UIApplicationopenURL:canOpenURL: 有什么使用注意事项吗?

饿了么测试 UniversalLink:
https://links.ele.me/stage/download.html?url=eleme%3A%2F%2Fweb%3Faction%3Dali.open.nav%26module%3Dh5%26packageName%3Dme.ele.ios.eleme%26bc_fl_src%3Dlocallife_wtdsp_33440ec21531ffb76841220d57181d65_2684284_21625822188530a19b28bfe99f43cc93d2e5e426567b8f_1%26url%3Dhttps%253A%252F%252Ffc.ele.me%252Fa%252FODE0NDg2MWI0YjFjMTFlYjlhM2QwMjQyMGI1OWUxMjQ%253D%253Fo2i_dsp_channel%253D2%2526shop_id%253D6D0BF4828A0FE2C786638025B7843E14%2526one_id%253D80220634652047782%2526business%253D1%2526item_id%253DE57408B08AC5763F6D9BF151C377BF7B4C5CE50DF9EB6878%2526o2i_code%253D33440ec21531ffb76841220d57181d65%2526latitude%253D39.6154%2526o2i_snid%253D21625822188530a19b28bfe99f43cc93d2e5e426567b8f%2526o2i_deviceid%253D1389b999e85a4e0c774440b5f532e4ff%2526isCharge%253D0%2526city_id%253D%2526longitude%253D118.18012%2526o2i_islp%253D1%26source%3Ddsp_2%26o2i_code%3D33440ec21531ffb76841220d57181d65%26o2i_snid%3D21625822188530a19b28bfe99f43cc93d2e5e426567b8f%26fastmode%3D1&fastmode=1

淘宝测试 UniversalLink:
https://ace.tb.cn/t?smburl=tbopen%3A%2F%2Fm.taobao.com%2Ftbopen%2Findex.html%3Fsource%3Dauto%26action%3Dali.open.nav%26module%3Dh5%26bootImage%3D0%26spm%3D2014.ugdhh.2200803434083.226906-443901-32896%26bc_fl_src%3Dgrowth_dhh_2200803434083_226906-443901-32896%26materialid%3D226906%26h5Url%3Dhttps%253A%252F%252Fstar-link.taobao.com%253Fslk_actid%253D100000000323%2526spm%253D2014.ugdhh.2200803434083.226906-443901-32896%2526bc_fl_src%253Dgrowth_dhh_2200803434083_226906-443901-32896%2526activity_id%253D521012716

三、Deferred Deep Link

然而,无论是URI Scheme还是Universal Link都没有解决一个问题,就是如果设备上没有安装这个app的时候,保留住此时用户停留的上下文。例如,利用Universal Link,在没有安装app的情况下,iOS能够重定位到app store去引导用户去下载安装这个app,但是在安装之后,app只能打开首页,也就是说丢失了用户在点击跳转进入app之前的那个页面。
因此,有了一个非常重要的另一个概念:Deferred Deep Link。顾名思义,这里的deferred是延迟的意思,可以理解为延迟一下,在安装过程中keep住跳转前的特定页面内容,在app安装之后,再利用这个link在app里进行跳转。举个例子,用户在某个电商网站上看到一个商品,于是他点击了一个按钮“在app中查看该商品”,但他并没有下载这个app,于是iOS就引导他到了App Store安装这个app,当他安装完成之后,打开这个app,就会自动地在app中跳到他刚才想看的那个商品的页面。这对于商家来说,也就大大提高了用户的转化率。

上一篇下一篇

猜你喜欢

热点阅读