当前位置: 首页 > Web前端 > HTML

如何在前端网页打开PC本地应用

时间:2023-03-28 11:37:53 HTML

想象一个场景,当我们在浏览网页,需要下载某个资源时,您的电脑可能经常会弹出一个提示框,询问是否需要打开“迅雷”。当我们点击“是”时,本地应用程序就会被唤醒,执行下载任务。针对这种场景,一个问题就产生了,网页如何打开PC端应用呢?本文讨论Windows和MacOS系统。自定义协议在MintFE的日常开发中,由于需要经常与app交互,所以app开发者定义了一个相关的协议:boohee://,通过它我们可以调用Mintapp。通过这个场景,笔者衍生出一个想法,PC端的应用是否也可以通过类似的协议打开?WindowsRegistryRegistry是MicrosoftWindows中一个重要的数据库,用于存储系统和应用程序设置信息。它是Windows操作系统中的一个核心数据库,存储着各种参数,可以直接控制一些Windows应用程序的运行。在Windows环境下,我们可以通过注册表来定义打开软件的协议。如何查看注册表中的协议?Windows系统自带注册表编辑器,通过Windows+r打开运行,输入“regedit”即可打开注册表编辑器。我们打开应用程序所需的注册表配置存储在HEY_CLASSES_ROOT下。HEY_CLASSES_ROOTHKEY_CLASSES_ROOT根键主要包含启动应用程序所需的所有信息,包括:所有的扩展以及应用程序与文档的关联信息。所有驱动程序名称。字符串被视为指向它们所代表的实际文件的指针。类标识符CLSID,在访问子键信息时非常重要,因为在Windows中访问子键信息被CLSID代替。这里的标识在WindowsXP系统中是独一无二的。DDE和OLE信息。DDE和OLE函数可用于每个文件关联。应用程序和文档使用的图标示例:打开postman,点击postman文件夹,可以看到右边有个默认属性定义了url:postman,导出注册表,可以看到如下配置:WindowsRegistryEditor版本5.00[HKEY_CURRENT_USER\Software\Classes\postman]"URLProtocol"=""@="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]中的邮递员是协议名称。本次配置主要是利用[HKEY_CURRENT_USER\Software\Classes\postman\shell\open\command]中定义的地址找到软件并启动。启动软件主要依赖以下两个配置:WindowsRegistryEditorVersion5.00[HKEY_CURRENT_USER\Software\Classes\postman]"URLProtocol"=""@="URL:postman"[HKEY_CURRENT_USER\Software\Classes\postman\shell\open\command]@="\"C:\\Users\\X\\AppData\\Local\\Postman\\app-6.0.10\\Postman.exe\"\"%1\""分析上面configuration什么意思:HKEY_CURRENT_USER\Software\Classes\postman:定义驱动函数的名称HKEY_CURRENT_USER\Software\Classes\postman\shell\open\command:定义程序所在路径根据这两个配置,前端网页可以通过postman://协议打开本地postman应用。效果展示:MacOS在MacOS中打开应用程序与在Ios中是一样的,可以在自己的应用程序中添加URLSchemes。Info.plist每次创建新项目时,Xcode都会自动创建一个Info.plist文件。该文件的主要功能是在运行时提供应用程序的一些配置。Info.plist文件位于应用程序的Contents/子目录中。该文件存储应用程序包的元数据信息。这个文件是必需的,操作系统通过这个文件来确定依赖关系和其他属性。CFBundleURLTypes:与此应用程序包关联的URL。这是一个字典,指定此包处理哪些URL方案以及如何处理。以Foxmail为例,这是应用相关的配置:CFBundleURLTypesCFBundleURLNamema??iltoCFBundleURLSchemesma??ilto定义应用包下定义的URLSchemes为mailto://。如何查询应用程序的URLSchemes打开finder=>application=>右键单击??应用程序并选择ShowPackageContents=>选择Contents文件夹下的Info.plist文件