UIApplication.shared.open 仅适用于 https

问题描述

我尝试使用 UIApplication.shared.open 函数打开 url,但我有点困惑,因为它不适用于 www.google.com 而它适用于 https://www.google.com

struct GetIsoCode: View {
    @State var titile = "www.google.com"
    var body: some View {
        Text(titile)
            .onTapGesture {
                let urlS = URL(string:titile)
                if let url = urlS {
                    UIApplication.shared.open(url) { (response) in
                        print(response)
                    }
                }
            }
    }
}

第一个用例:

输入网址:

www.google.com

输出:

无法打开 URL www.google.com: Error Domain=NSOSStatusErrorDomain Code=-50 "invalid input parameters" UserInfo={NSDebugDescription=invalid input parameters,_LSLine=234,_LSFunction=-[_LSDOpenClient openURL:options:completionHandler: ]}

第二个用例:

输入:

https://www.google.com

结果:一切正常。

有人可以向我解释如何从两个链接中显示 google,我已经尝试通过上述方法实现,但还没有结果。

解决方法

文档说:

UIKit 支持许多常见的方案,包括 http、https、tel、 facetime 和 mailto 方案。

使用此方法打开指定的资源。如果指定的网址 方案由另一个应用程序处理,iOS 启动该应用程序并通过 它的网址。 (启动应用程序会将另一个应用程序带到前台。) 如果没有应用程序能够处理指定的方案,则完成 在成功参数设置为 NO 的情况下调用处理程序。

确定是否安装了能够处理 URL,在调用这个之前先调用 canOpenURL: 方法

  1. 字符串“www.google.com”是哪个网址架构
  2. 先调用 canOpenURL,然后再调用 open(url:)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...