我找不到解决这个问题的方法。我的应用将用于对某些操作进行签名。流程将如下所示:
- 用户希望使用任何浏览器登录网站。
- 用户输入凭据。
- 用户使用自定义 URL 方案重定向到我的应用。
- 用户使用其签名代码进行批准。
- 用户被重定向回 Web 浏览器中的同一页面。
这是我在弄清楚时遇到问题的最后一部分。用户完成后,如何使用相同的选项卡重新打开 Web 浏览器?
从浏览器在应用程序中回调后,您将在以下函数中获得 url:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
print(url)
}
}
然后你需要像这样检查
if let url = URL(string: urlSting.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!), UIApplication.shared.canOpenURL(url) {
UIApplication.shared.openURL(url!)
}
或者URL是完美的,那么你可以简单地像这样打开:
if let url = URL(string: urlSting), UIApplication.shared.canOpenURL(url) {
UIApplication.shared.openURL(url)
}
您还可以将浏览器 URL 存储在用户默认值中,直到用户完成签名过程,然后在 Web 浏览器中重定向该 URL