构想一个场景,当咱们在浏览一个网页并且须要下载某个资源时,你的电脑可能常常会跳出一个提示框,询问你是否须要关上“迅雷”。当咱们点击“是”,则会唤醒该本地利用进行下载工作。

针对这个场景产生了一个疑难,网页是如何关上PC端利用的呢?

本文针对Windows零碎和MacOS零碎进行探讨。

自定义协定

在薄荷FE的日常开发中,因为须要与app频繁交互,app开发人员定义了相干协定:boohee://,通过该协定,咱们能够唤起薄荷app。

通过这个场景作者衍生出一个想法,PC端的利用是否也能够通过相似的协定被关上呢?


Windows

注册表

注册表是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。

它是Windows操作系统中的一个外围数据库,其中寄存着各种参数,能够间接管制一些Windows应用程序的运行。

在Windows环境中,咱们能够通过注册表来定义关上软件的协定。

如何查看注册表中的协定?

Windows零碎中自带了注册表编辑器,通过Windows+r关上运行,输出"regedit",关上注册表编辑器。

咱们须要的无关关上利用的注册表配置就存在HEY_CLASSES_ROOT下。

HEY_CLASSES_ROOT

HKEY_CLASSES_ROOT根键中次要蕴含的是所有启动应用程序须要的信息,其中包含:

  1. 所有扩展名及应用程序和文档之间的关联信息。
  2. 所有驱动程序的名字。
  3. 当作指针的字符串,指向它们代表的理论文件。
  4. 类标识CLSID,这点在拜访子健信息的时候十分重要,因为Windows中拜访了子健的信息都是用CLSID来代替的。这里的标识在Windows XP零碎中是惟一的。
  5. DDE和OLE信息。对于每个文件关联都能够应用DDE和OLE性能。
  6. 应用程序和文档应用的图标
示例: 关上postman

点击postman文件夹,能够看到右侧有个默认属性定义了URL:postman,导出该注册表能够看到如下配置:

    Windows Registry Editor Version 5.00        [HKEY_CURRENT_USER\Software\Classes\postman]    "URL Protocol"=""    @="URL:postman"        [HKEY_CURRENT_USER\Software\Classes\postman\shell]        [HKEY_CURRENT_USER\Software\Classes\postman\shell\open]        [HKEY_CURRENT_USER\Software\Classes\postman\shell\open\command]    @="\"C:\\Users\\X\\AppData\\Local\\Postman\\app-6.0.10\\Postman.exe\" \"%1\""

[HKEY_CURRENT_USER\Software\Classes\postman]中的postman就是协定的名字,该配置次要通过
[HKEY_CURRENT_USER\Software\Classes\postman\shell\open\command]中定义的地址来找到软件并启动。启动软件次要依赖以下两个配置:

    Windows Registry Editor Version 5.00        [HKEY_CURRENT_USER\Software\Classes\postman]    "URL Protocol"=""    @="URL:postman"        [HKEY_CURRENT_USER\Software\Classes\postman\shell\open\command]    @="\"C:\\Users\\X\\AppData\\Local\\Postman\\app-6.0.10\\Postman.exe\" \"%1\""

剖析一下上述的配置是什么意思:

  • HKEY_CURRENT_USER\Software\Classes\postman: 定义了驱动函数的名字
  • HKEY_CURRENT_USER\Software\Classes\postman\shell\open\command:定义了程序所在的门路

依据这两个配置,前端网页能够通过postman://协定来关上本地的postman利用。

成果展现:


MacOS

在MacOS中关上利用和在Ios中雷同,能够给本人的app增加URL Schemes

Info.plist

每次新建一个我的项目工程,Xcode都会主动创立一个Info.plist文件,这个文件的次要作用就是提供利用在运行期的一些配置。

Info.plist文件位于应用程序的Contents/子目录下,这个文件保留了利用包的元数据信息。这个文件是必备的,操作系统通过这个文件断定依赖关系和其余属性。

CFBundleURLTypes:这个利用包关联的URL。这是一个字典,指定了这个包解决的URL schemes以及解决形式。

以Foxmail为例,这是该利用相干的配置:

    <key>CFBundleURLTypes</key>    <array>        <dict>            <key>CFBundleURLName</key>            <string>mailto</string>            <key>CFBundleURLSchemes</key>            <array>                <string>mailto</string>            </array>        </dict>    </array>

其中定义了该利用包下定义的URL Schemes为mailto://。

如何查问app的URL Schemes

关上finder => 应用程序 => 右击利用并抉择显示包内容 => 抉择Contents文件夹下的Info.plist文件