在我的应用程序中,我有一个Web视图,我在其中加载登录屏幕(html页面)进行身份验证(OAuth)。验证成功后,我使用我将在响应中收到的自定义URI方案将流重定向到我的本机应用程序屏幕。此设置以前在iPhone设备中使用版本9.2.1,直到我更新到iOS版本9.3.3。现在我没有得到正确的重定向网址,而是我收到一条错误弹出消息“错误:网址可以显示”
我知道apple发布的最新更新发生了很多变化,特别是在webkit上。还有其他人遇到类似问题吗?它是新更新中的错误吗?
如果有人帮助我了解更新后重定向失败的原因,我将不胜感激?
提前致谢
答案 0 :(得分:1)
欢迎使用安全升级9.3.3!深层链接!
1你应该拥抱通用链接而忘记网址方案 ......
检查此转换教程: https://blog.branch.io/ios-9.2-deep-linking-guide-transitioning-to-universal-links
如果您不想使用通用链接......
您使用哪种委托方法来获取Scheme调用?我想你正在使用:
-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
在特定情况下......请仔细检查您是否在URL方案中没有&,+,/,许多新编码正在进行,如果这样做,请将这些编码转换为%编码,这是好:
好:
myAppSchemeName://abc?param=AppleIsTough
为:
myAppSchemeName://abc¶m=AppleIsTough
修复你的URL Scheme调用并完成它!
快乐!
答案 1 :(得分:0)
我认为这是the question的重复,似乎是由提问者解决的。但答案有点含糊不清。
所以这里至少解决我的环境(iOS 10.3设备和iOS 9.0& 10.3模拟器)中的问题的具体方法,我认为这个想法与上面的源相同,即响应html页面并进行重定向在此页面中,如下所示。
<html>
<head>
</head>
<body>
<script type="text/javascript">
setTimeout(function () {
window.location = "com.your.scheme://a/b?foo=bar";
}, 1);
</script>
<h1>redirect...</h1>
</body>
</html>
它非常有症状的处理(比如使用setTimeout),可能会被未来的iOS版本阻止,但是我还是为那些仍然需要使用URL方案的人提供了理由。