通用链接在 iOS 模拟器中不起作用
Universal links not working in iOS simulator
我也在尝试让通用 link 在模拟器中工作,以便我可以对其进行测试。由于这是一个工作项目,我没有可以使用的兼容设备。因此,尝试在模拟器上进行这项工作。
我已尽我所能在网上找到所有内容来尝试完成这项工作:
- 将关联域添加到应用程序并将域设置为
applinks:192.168.50.200?mode=developer
。我正在我的 Synology NAS 上使用网络服务器对此进行测试。
- 将
application(_:continue:restorationHandler:)
方法添加到应用程序委托,记录传入的 URL 并返回 true
。
- 在 NAS 的网络服务器中创建了一个
.well-known/apple-app-site-association
文件。
- 尝试使用
simctl
、iMessage 和 Safari 打开匹配的 URL,然后应在应用程序中打开。
但是第 4 步不起作用。相反,模拟器只是将 URL 作为网页打开。
我已经安装了 proxyman,它显示网页 URL 被发送到服务器并且响应返回,但从来没有从模拟器发送请求 apple-app-site-association
文件。无论我如何尝试调用东西。
我读过的许多博客都说您应该能够使用我尝试过的一些技术在模拟器中测试通用 links。但它们对我不起作用。我已经在 iOS 11.4 和 13 模拟器上试过了。
有什么想法吗?我刚出来。
此后我在控制台中找到了数据。我看到了
任务 <377F99B3-B58C-4D9B-BCC2-FE36E4D9569B>。<2> 已完成,出现错误 [-999] 错误域=NSURLErrorDomain 代码=-999“已取消”UserInfo={NSErrorFailingURLStringKey=https://192.168。 50.200/.well-known/apple-app-site-association, NSErrorFailingURLKey=https://192.168.50.200/.well-known/apple-app-site-association, _NSURLErrorRelatedURLSessionTaskErrorKey=(
“本地数据任务 <377F99B3-B58C-4D9B-BCC2-FE36E4D9569B>。<2>”
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <377F99B3-B58C-4D9B-BCC2-FE36E4D9569B>.<2>, NSLocalizedDescription=取消}
所以它看起来像是在调用服务器,但没有说明请求被取消的原因。
想通了。这是因为我的 NAS 服务器的 Web 服务器没有满足 Apple 的 TLS 的有效证书。出于测试目的,我最终使用 ngrok 提供有效证书并重定向到我的 NAS。这有点痛苦,因为每次启动 grok 隧道时,它都会生成一个随机但唯一的域,但出于测试目的,它工作得很好。
我也在尝试让通用 link 在模拟器中工作,以便我可以对其进行测试。由于这是一个工作项目,我没有可以使用的兼容设备。因此,尝试在模拟器上进行这项工作。
我已尽我所能在网上找到所有内容来尝试完成这项工作:
- 将关联域添加到应用程序并将域设置为
applinks:192.168.50.200?mode=developer
。我正在我的 Synology NAS 上使用网络服务器对此进行测试。 - 将
application(_:continue:restorationHandler:)
方法添加到应用程序委托,记录传入的 URL 并返回true
。 - 在 NAS 的网络服务器中创建了一个
.well-known/apple-app-site-association
文件。 - 尝试使用
simctl
、iMessage 和 Safari 打开匹配的 URL,然后应在应用程序中打开。
但是第 4 步不起作用。相反,模拟器只是将 URL 作为网页打开。
我已经安装了 proxyman,它显示网页 URL 被发送到服务器并且响应返回,但从来没有从模拟器发送请求 apple-app-site-association
文件。无论我如何尝试调用东西。
我读过的许多博客都说您应该能够使用我尝试过的一些技术在模拟器中测试通用 links。但它们对我不起作用。我已经在 iOS 11.4 和 13 模拟器上试过了。
有什么想法吗?我刚出来。
此后我在控制台中找到了数据。我看到了
任务 <377F99B3-B58C-4D9B-BCC2-FE36E4D9569B>。<2> 已完成,出现错误 [-999] 错误域=NSURLErrorDomain 代码=-999“已取消”UserInfo={NSErrorFailingURLStringKey=https://192.168。 50.200/.well-known/apple-app-site-association, NSErrorFailingURLKey=https://192.168.50.200/.well-known/apple-app-site-association, _NSURLErrorRelatedURLSessionTaskErrorKey=( “本地数据任务 <377F99B3-B58C-4D9B-BCC2-FE36E4D9569B>。<2>” ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <377F99B3-B58C-4D9B-BCC2-FE36E4D9569B>.<2>, NSLocalizedDescription=取消}
所以它看起来像是在调用服务器,但没有说明请求被取消的原因。
想通了。这是因为我的 NAS 服务器的 Web 服务器没有满足 Apple 的 TLS 的有效证书。出于测试目的,我最终使用 ngrok 提供有效证书并重定向到我的 NAS。这有点痛苦,因为每次启动 grok 隧道时,它都会生成一个随机但唯一的域,但出于测试目的,它工作得很好。