yiding 具体来说,就是,Telegram 的桌面客户端注册了名为 tg 的url协议
加群的时候,跳转的是
tg://join?invite=E_5LqAttsI1I5A-2u6J8lQ
我们去看 URL的定义 的话,可以看到这个格式:
协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]
然后浏览器如果遇到 URL 里面有它不能处理的协议的话,会交给操作系统去判断,然后进一步处理。
具体的例子有迅雷的 thunder://xxx
,QQ加群链接的 tencent://groupxxxx
,还有各种各样的链接。
我对这方面的概念比较模糊,然后刚刚去搜索了一下相关的资料,大概在这里整理一下下:
Windows 有为应用提供 Protocol Handlers 的注册功能。
Linux的话,目前的 XDG(freedesktop.org) 桌面体系的 xdg-open 也为应用提供了这种注册自定义协议的功能。
macOS,是在应用的 Info.plist 下加上一些配置实现这样子的协议注册功能。
Launching External Applications using Custom Protocols under OSX – Shotgun Support
isee15/Mac-OSX-custom-url-scheme: Mac OSX custom url scheme,like macappstore://
手机端的话,如果没猜错,类似知乎、淘宝的手机网页版唤醒应用应该也是这么做的:
试着用开发者工具抓了一下包,找到一部分,这是知乎的 iOS 和 Android 手机版的唤起应用的链接:
zhihu://questions/304987792?open=1&utm_medium=QA&utm_content=view_all&fallback_url=xxxxxx
Android 端淘宝的:
intent://m.taobao.com/tbopen/index.html?action=ali.open.nav&module=h5&bootImage=0&source=sb&xxxxxxx
微博的
sinaweibo://home
整理了一波,大概是这样了 ?