Clash订阅链接9月
本文对 iOS Universal Link(通用链接)的浅入浅出介绍,从产品的角度来了解其发展历程。
说起 Universal Link(通用链接),对于有过 iOS 开发的同学,一定有用上过。目前在申请微信分享或登陆时,需要配置 Universal Link 链接。对于 Universal Link,大家应该都了解:
但是,反过来说,为什么需要 Universal Link ?这就是本文想要趣谈的一个内容。以下内容,是基于之前在团队分享的内容整理而成。
我们知道一个新事物的出现,肯定不是凭空出现,同理,Universal Link 的出现,肯定是基于某个原因或者基础而产生。所以,Universal Link 基于 Scheme 基础上而提出来的。
URL Scheme 一般用在在一个 App 里跳转到另一个 App,属于应用间的跳转。当然在浏览器(也可以理解为是 App) web 页面也可以通过 scheme:// 跳转到 AppClash订阅链接9月,但是这种方式在每次跳转的时候都会弹框询问,如果设备中没有安装此 App 则会直接弹出错误提示,体验不友好。大家对以下 scheme 应该不会陌生:
在当年 iPhoneOS 出来时,就已经是有沙盒机制,导致二个 App 之间无法读取对方的沙盒空间,无法直接通讯,所以,苹果提供了 Apple URL Scheme Reference 来解决自家的 app 无法交互的问题。
举例来说,在 Safari 浏览器看到某个网页上的电话号码,能不能直接调起拨打电话?我们知道可以这样编码:
使用 URL Schemes 最多的 App 应该是效率工具类,因为它们有工作流的需求,所以它们把 URL Schemes 玩出了很多花样,包含 callback-URL 回调功能。
通用性:一个 URL 对你的网站和 App 都通用,Universal Links 是标准的 URL 格式,而自定义 URL Scheme 可能理解为特殊 URL 方案,默认只有你的 App 能解析,浏览器无法解析。
灵活性:即使未安装你的 App,Universal Links 也可以使用。未安装你的应用程序时,打开链接,Safari 中打开显示你网站的内容,是符合用户预期的体验,同时,网页可以显示跳转 AppStore 下载的引导,进一步的提升用户体验。
另外,当用户安装你的 App 时,iOS 会检查你已上传到网络服务器的文件配置,以确保只有你的网站允许调用您的 App。
隐私性:很久以前,大家都可以利用 Scheme 检查 App 是否安装,这样有什么作用呢?其实,当你知道用户都安装了什么应用后,可以分析用户的喜好或习惯,当然,目前。
注:iOS 9 开始苹果把 URL Schemes 改为白名单机制,也就是只有配置了白名单的 scheme 才可正常检查其他应用是否安装。同时,最多只能设置 50 个不同的 Schemes 白名单(超出 50 个的 schemes 调用 canOpenURL 返回 NO)。
另外,微信创建应用时,必须配置 Universal Link 链接,详细见文档:微信开放平台发布新版本SDK,请开发者尽快更新[2] 。从安全性和隐私性来说,微信是做的最好和最前卫,连海外 Facebook、Google 的 SDK 现在都还没有提出 Universal Link 的想法。
虽然苹果提供[5] 网页让开发者检查 Universal Link 配置是否正常,但是检查不正常的链接,Universal Link 可能是正常的。最大的坑就是必须要跨域,比如配置 Universal Link 链接为: ,那么不能直接在页面中调用此链接来唤起 App,必然是其它二级域名,所以,一般 Universal Link 配置链接是用一个单独的二级域名,与业务域名分开。
需要注意的是,如果 Universal Link 无效,则 watchOS 不能处理,会提示错误信息。因为虽然从 watchOS 5 开始支持 WebKit,但至今 watchOS 还没有内置 Safari 浏览器。哈哈,不知道大家是否期待支持~
同时,支持大小写忽略的模式匹配,通过配置 caseSensitive: false ,来取消大小写敏感。解决前端不同页面或者大小写的问题。
Unicode 模式的支持,比如中文 蚂蚁上树 ,默认情况下需要 ulr encode 才能读取。通过 percentEncoded: false 这样用什么语言都直接显示,方便显示和维护,也减少了链接长度。
最后一个重点功能,替代变量的支持,比如 App 在多国家地区出售不同产品,那么可能某个国家或地区不销售某个产品,放在以前就需要写一堆的 /en_US/ 、 /fr_CA/ 不能的语言地区标识。
但可能因为开发者网站的部署距离用户远近不同,导致访问速度无法保障,所以,苹果改为通过 Apple CDN 来请求 apple-app-site-association 配置文件并缓存起来,来针对不用地区的用户,加速配置文件的获取。
URL Scheme 从最初的打破 App 之间无联系的沟通,到效率工具 App 的重度依赖,其中 Workflow App 当年最为流行,后来被苹果收购。
正好刚刚说的,被苹果收购后可以获取更多的系统级权限,其实对于效率类 App 是非常利好的!后来,苹果把 Workflow 改名 Shortcuts(捷径),并且能与 Siri 交互。
当然,快捷打开 App,不得不说到 3D Touch,可能从苹果来说,这是一个创新的交互方式,但是用户并没有习惯起来。隐藏式的交互设计,客观来讲,对于用户体验确实不友好。
当然,最后 URL Scheme 还是会长存!因为第三方 App 之间无法直接交互。除了交互,就是打开 App 某个功能或者路径,利用 PWA 添加到主屏幕也是一种方案,但是对于一般用户需要教导,不太好推广。
最后,Universal Link 总结来说,通用性、安全性、灵活性、隐私性,对于开发者来说,其他人无法伪造,所以的配置都由开发者来掌握。简单来说,通过域名和后台控制,可以随时调整,对用户无影响。
所以,了解这些功能的出现的背后原因和解决的问题,对于我们掌握事物都有帮助,希望大家有所收获,如果觉得可以,欢迎点赞转发啊~
最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!