在电子应用程序中实现延迟深度链接

Implement deferred deep linking in electron app

在我们的网页中,我们有一个文档列表和一个用于在电子应用程序中打开文档的按钮。该按钮实际上具有自定义协议 href,文档 ID 作为参数传递。

此电子应用程序只能在从浏览器启动时使用(使用自定义协议 "my-custom-protocol://document-id-here")。根据传入的参数,我们决定在electron应用中打开哪个文档。

如果用户尝试直接打开应用程序(不在浏览器中使用 link),我们只会显示一条消息,说明此应用程序只能在从浏览器启动时使用,然后退出应用程序.

现在,如果用户尚未在其计算机上安装该应用程序并尝试从浏览器打开自定义协议 link,那么我们会提示用户先安装该应用程序,然后再次尝试打开 link。这是基本深度 linking 的示例,工作正常。

为了更好的用户体验,我们想改变这种行为。所以现在当用户尝试打开自定义 link(其中还包括 documentID 作为参数)并且应用程序未安装时,我们将提示用户安装应用程序。但是一旦安装了应用程序,我们希望使用正确的参数(单击 link 的文档的文档 ID)自动启动应用程序,以便在安装后启动应用程序时打开正确的文档(我们希望实施延迟深度 linking).

我看过 this page 但找不到足够的信息来实现此目的。

我解决这个问题的方法是在下载的可执行文件的名称中包含标识符,例如 myAppName_[identifier].exe[identifier] 部分将根据打开的文档而变化。然后在app安装过程中我们可以读取可执行文件名(这个过程因地而异OS),提取标识符,然后用它来打开正确的文档。