我用包含mailto链接的网页打开了webview(mailto:[email protected])
url=mailto:[email protected]
与常规网址不同,我能够获得,但无法获得零件。我想在撰写邮件时从mailto网址中提取电子邮件以进行预填充。在Swift iOS中,有没有一种优雅的方法可以从mailto url中提取[email protected]?
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
let request: URLRequest = navigationAction.request
if let url = request.url,
url.scheme == "mailto" {
decisionHandler(.cancel)
let urlString = "scheme://myapp/open/compose?\(url.absoluteString.replacingOccurrences(of: ":", with: "="))
UIApplication.shared.open(URL(string: urlString)!)
return
}
}
您可以只获取网址路径组件:
let url = URL(string: "mailto:[email protected]")!
if url.scheme == "mailto",
let components = URLComponents(url: url, resolvingAgainstBaseURL: false) {
let email = components.path
print(email) // "[email protected]\n"
}
您还可以如下扩展URL:
extension URL {
var email: String? {
return scheme == "mailto" ? URLComponents(url: self, resolvingAgainstBaseURL: false)?.path : nil
}
}
if let email = url.email {
print("email:", email) // "email: [email protected]\n"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句