Ubuntu是否支持类似iOS Universal Links的网页唤起应用功能?
当然可以!Ubuntu并不是只能用自定义URI scheme(比如mycoolapp://app/)来唤起应用,它也支持类似iOS Universal Links、Android App Links这种通过普通HTTP/HTTPS链接直接唤起应用的功能,下面给你详细拆解实现方式:
通过Desktop Entry文件绑定HTTP/HTTPS链接
这是Linux桌面应用最常用的配置方式,你需要给你的应用创建一个.desktop文件(通常放在/usr/share/applications/系统级目录,或者~/.local/share/applications/用户级目录),在文件里添加关联规则:[Desktop Entry] Name=My Cool App Exec=mycoolapp %u Type=Application MimeType=x-scheme-handler/http;x-scheme-handler/https;其中
Exec=mycoolapp %u表示调用你的应用并传递点击的链接(%u就是链接占位符),MimeType字段声明应用可以处理HTTP和HTTPS协议的链接。如果只想绑定特定域名(比如https://my.cool.app/),可以在应用的启动逻辑里添加域名判断,只处理目标域名的链接,避免拦截所有HTTPS链接。利用Web App Manifest实现域名级关联
如果你想更精准地绑定特定域名(和Universal Links的域名验证逻辑类似),可以借助现代桌面环境(比如Ubuntu自带的GNOME 3.36+)和主流浏览器(Firefox、Chrome)支持的Web App Manifest机制:- 在你的网站根目录放置一个
web-app-manifest.json,指定应用信息和关联的域名; - 用户可以通过浏览器的“安装网站为应用”功能创建一个桌面快捷方式,这个快捷方式会自动关联你指定的域名,后续用户点击该域名下的链接时,会直接打开对应的应用(可以是你的原生应用,也可以是封装的Web应用)。
- 在你的网站根目录放置一个
通过xdg工具快速配置
你也可以用xdg-mime命令直接设置默认应用来处理HTTP/HTTPS链接,比如:xdg-mime default mycoolapp.desktop x-scheme-handler/https同样,如果需要针对特定域名,还是需要在应用内部做域名过滤。
另外补充一下,自定义URI scheme的方式兼容性更强(老版本Ubuntu也能支持),但用户需要点击特殊格式的链接;而HTTP/HTTPS绑定的方式体验更接近Universal Links,用户点击普通网页链接就能唤起应用,适合追求无缝体验的场景。
备注:内容来源于stack exchange,提问作者Dariyooo

