如何配置通用链接以从网络浏览器到 macOS 上的 Mac 应用程序?

问题描述 投票:0回答:2

从 iOS9 开始,通用链接可以在 iOS 上使用,但我想知道 macOS 上是否有类似的东西?我们有一个应用程序,它是带有相应 Web 应用程序的 macOS 应用程序,我们希望用户单击链接在 Mac 应用程序中打开,而不是使用目标链接打开浏览器。

这在 macOS 上可能吗?我刚刚找到了 iOS 的示例,但没有找到 macOS 的示例?!?

ios macos macos-sierra ios-universal-links
2个回答
19
投票

在 macOS 上支持通用链接需要您的应用程序和网站(以及 macOS 10.15+)的支持。

请参阅 Apple 文档允许应用程序和网站链接到您的内容了解详细信息(本文涉及 iOS、tvOS 和 macOS 深层链接)及其子文章启用通用链接以及处理通用链接

快速概述:

基本上,它与 iOS 上相同:您需要创建一个

apple-app-site-association
文件,该文件托管在服务器的根目录或
.well-known
目录中(如上面链接的 “启用通用链接” 中所述) 。它描述了哪些 URL 路径可以传递到您的应用程序。重要的是,该文件是有效的 JSON(验证它!),并且通过 HTTPS 使用有效证书提供服务,并且没有任何重定向!

您需要在配置文件中启用“关联域”功能。详细信息取决于 Xcode 是否管理您的配置文件。在您的权利文件(通常可通过 Xcode 中目标的“签名和功能”选项卡进行编辑)中,您需要添加相应的关联域,例如

applinks:my.domain.example
(没有
https://
或任何其他内容,只是原始域名)。

然后您需要在应用程序委托中实现

application(_:continue:restorationHandler:)
来处理通用链接。

在开发过程中让 macOS 第一次获取关联可能会很烦人。 调试提示:

  • 打开
    Console.app
    并筛选
    swcd
    ,这是负责关联 Web 凭据和通用链接的守护进程。有时您会看到为什么它不起作用的提示(例如拒绝
    apple-app-site-association
    文件)。
  • 此外,我还必须杀死
    swcd
    守护进程,使其由
    launchd
    重新启动,然后拾取我对
    apple-app-site-association
    文件所做的更改/修复。 iOS 和 macOS 通常应该在“应用程序安装”1 上重新加载此文件(尚未看到更明确的指定;我猜他们的意思是 App Store 安装/更新,但我不知道何时为 macOS 加载此文件)在 App Store 之外分发的应用程序)。
  • 另外,请注意,在 Safari 中输入通用链接将不会移交给您的应用程序:Apple 在开发论坛中表示2,他们相信如果用户已经在浏览器环境中,他们希望留在那里,并且不要突然转向某个应用程序。因此,要测试通用链接,请打开
    Notes.app
    ,创建一个新注释并在其中输入/粘贴您要测试的通用链接。然后您可以单击它,系统会询问您是否要在应用程序中打开它。

1)抱歉,没有我读到此内容的开发论坛链接。

2)再次抱歉,目前没有链接。看到苹果员工至少两次提到过这一点,都引用了

Notes
的伎俩。尽管他们在那里谈论的是 iOS,但这种行为在 macOS 上也是一样的。


0
投票

作为额外的调试步骤(添加到 DarkDust 的列表中),还可以尝试在 Xcode 中增加应用程序的版本和/或内部版本号并重新构建。这导致我的系统最终开始获取应用程序链接并重定向到我的应用程序的调试版本。

(这应该是对 DarkDust 答案的评论,但我显然没有足够的声誉点来做到这一点。)

© www.soinside.com 2019 - 2024. All rights reserved.