有点奇怪的情况。我们与外部合作伙伴合作,该合作伙伴公开了一个用户可以登录的网页。该网页采用一个名为returnURL
. 这returnURL
将在成功登录他们的服务时调用,并且在此返回 URL 的末尾,我们的外部合作伙伴将添加一个令牌,我们以后可以在应用程序中使用该令牌。
因为我在 iOS 中工作,所以作为 returnURL,我提供了我的应用程序的 URL 方案,以便网页可以在登录完成时调用它。
所以,事情是这样的。他们的网页:
http://www.theirwebpage.com/?param1=x¶m2=y&returnURL=myAppsName://
我在 webview 中显示网页,并在application:openURL:sourceApplication:annotation:
其中有返回代码,我在其中解析传递的参数myAppsName://
问题
这整个过程在 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 到应用程序本身)?