无法在iOS 7中从UIWebView调用应用程序(URL方案)
有点奇怪的情况。我们与一个外部合作伙伴合作,该合作伙伴公开了一个用户可以登录的网页。此网页采用名为无法在iOS 7中从UIWebView调用应用程序(URL方案),ios,uiwebview,ios7,Ios,Uiwebview,Ios7,有点奇怪的情况。我们与一个外部合作伙伴合作,该合作伙伴公开了一个用户可以登录的网页。此网页采用名为returnURL的参数。成功登录到他们的服务时,将调用此returnURL,在此返回URL末尾,我们的外部合作伙伴将添加一个令牌,我们可以在应用程序中使用该令牌 因为我在iOS中工作,所以作为一个返回URL,我给出了我的应用程序的URL方案,这样当登录完成时,网页可以调用它 所以,事情是这样的。他们的网页: http://www.theirwebpage.com/?param1=x¶m2=
returnURL
的参数。成功登录到他们的服务时,将调用此returnURL
,在此返回URL末尾,我们的外部合作伙伴将添加一个令牌,我们可以在应用程序中使用该令牌
因为我在iOS中工作,所以作为一个返回URL,我给出了我的应用程序的URL方案,这样当登录完成时,网页可以调用它
所以,事情是这样的。他们的网页:
http://www.theirwebpage.com/?param1=x¶m2=y&returnURL=myAppsName://
我在Web视图中显示网页,并在应用程序:openURL:sourceApplication:annotation:
中显示返回的代码,其中我解析通过myAppsName://
传递的参数
问题
整个过程在iOS 6上运行良好,因为webview将调用应用程序的URL方案,这将触发application:openURL:sourceApplication:annotation:
但是,在iOS 7中从未调用application:openURL:sourceApplication:annotation:
方法。它看起来更像是webview调用自己的myAppsName://{parameters}
,然后失败(为了进一步解释,UIWebView调用webview:didFailLoadWithError:
,在它的NSErrorFailingURLKey
中,我们可以找到完整的myAppsName://extraParam1=bar&token=foo
)
iOS 7中是否发生了变化,不再允许这种类型的调用(从UIWebView到应用程序本身)?xcode 5.0存在问题。下载xcode版本5.0.1。清理所有构建~/Library/Developer/Xcode/DerivedData/~。重新构建。正如您所描述的,它在iOS 7中对我有效,但当UIWebView尝试在自定义URL方案()中加载请求时,我也会遇到一个错误。您确定已根据以下说明在应用程序的plist中注册myAppsName自定义URL方案: