专用 LAN 上的通用链接

Universal Links on private LAN

我正在尝试让通用链接在我的应用程序中工作,以替代 URL 方案,因为从 iOS 9 开始,系统似乎在每次应用程序出现时都会显示一个警告对话框从 Safari 调用。我希望在使用通用链接时替换关联域中已注册 URL 路径的 URL 方案调用将使对话框消失。

所以我不会调用 myscheme://app?params=values,而是调用 https://example.com/universal-link/wakeup?params=values

我的 apple-app-site-association(未签名)文件如下所示

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "XXXXXXXX.com.company.appid",
                "paths": [ "/universal-link/*" ]
            }
        ]
    }
}

请注意,目前我使用的是托管在公司局域网中的网络服务器,它不是互联网上的 public 服务器。因此,在应用程序功能 "Associated Domains" 中,我写了类似 applinks:host.company.lan:7700 的内容,但在应用程序首次启动后,apple-app-site-association 文件从未被提取

我不知道还能尝试什么,所以我认为服务器位于专用网络中可能是个问题。

我在 Apple 开发者论坛上找到了这个question,它阐明了这一点。

看起来问题是,apple-app-site-association 由不受信任的根签名的域托管,如果您在系统中安装根证书也没有关系,它也不会下载.我假设它必须由默认情况下已包含在 iOS 中的 CA 签名。

我让这个在专用网络上工作,但我必须信任设备上的证书。

要在模拟器上测试,您可以将证书拖到模拟器中,在设备上,您可以将其邮寄到设备或空投给它

我一直在尝试使用开发人员模式(关联域开关),这对 VPN 内的内部域有效,但我认为这不是非技术用户的最佳解决方案。

Apple 的 WWDDC'20 视频之后的默认选项是在设备中安装受信任的根证书。但这行不通,至少对我而言。