在 iOS 7 中无法从 UIWebView 调用应用程序(URL 方案)
Posted
技术标签:
【中文标题】在 iOS 7 中无法从 UIWebView 调用应用程序(URL 方案)【英文标题】:Impossible to call application (URL Scheme) from UIWebView in iOS 7 【发布时间】:2013-10-10 16:14:36 【问题描述】:有点奇怪的情况。我们与外部合作伙伴合作,该合作伙伴公开了一个用户可以登录的网页。该网页采用一个名为 returnURL
的参数。这个returnURL
将在成功登录到他们的服务时被调用,并且在这个返回 URL 的末尾,我们的外部合作伙伴将添加一个令牌,我们以后可以在应用程序中使用它。
因为我在 ios 中工作,作为 returnURL,我提供了我的应用程序的 URL 方案,以便在登录完成时网页可以调用它。
所以,事情是这样的。他们的网页:
http://www.theirwebpage.com/?param1=x&param2=y&returnURL=myAppsName://
我在 webview 和 application:openURL:sourceApplication:annotation:
中显示网页
问题
整个过程在 iOS 6 上运行良好,因为 webview 将调用应用程序的 URL 方案,这将触发 application:openURL:sourceApplication:annotation:
。
然而,application:openURL:sourceApplication:annotation:
方法在 iOS 7 中永远不会被调用。看起来更像是 webview 将自己称为myAppsName://parameters
然后失败(为了进一步解释,UIWebView 调用webView:didFailLoadWithError:
并在其NSErrorFailingURLKey
我们可以找到完整的myAppsName://extraParam1=bar&token=foo
)。
iOS 7 中是否发生了变化,不再允许此类调用(从 UIWebView 到应用程序本身)?
【问题讨论】:
正如您所描述的,它在 iOS 7 中适用于我,尽管当 UIWebView 尝试以自定义 URL 方案 (***.com/questions/20427009/…) 加载请求时我也会收到错误消息。您确定您已按照此处的说明在您的应用的 plist 中注册了 myAppsName 自定义 URL 方案:developer.apple.com/library/ios/documentation/iPhone/Conceptual/… 【参考方案1】:xcode 5.0 的问题。下载 xcode 版本 5.0.1 。清理所有构建 ~/Library/Developer/Xcode/DerivedData/~ 。重新构建。
【讨论】:
以上是关于在 iOS 7 中无法从 UIWebView 调用应用程序(URL 方案)的主要内容,如果未能解决你的问题,请参考以下文章
从 Documents 目录在 UIWebview 中打开时,ios-css 和 js 无法在 html 文件中链接