更新到iOS版本9.3.3后,重定向网址以启动应用程序无法正常工作

时间:2016-07-25 23:41:46

标签: ios swift swift2

在我的应用程序中,我有一个Web视图,我在其中加载登录屏幕(html页面)进行身份验证(OAuth)。验证成功后,我使用我将在响应中收到的自定义URI方案将流重定向到我的本机应用程序屏幕。此设置以前在iPhone设备中使用版本9.2.1,直到我更新到iOS版本9.3.3。现在我没有得到正确的重定向网址,而是我收到一条错误弹出消息“错误:网址可以显示”

我知道apple发布的最新更新发生了很多变化,特别是在webkit上。还有其他人遇到类似问题吗?它是新更新中的错误吗?

如果有人帮助我了解更新后重定向失败的原因,我将不胜感激?

提前致谢

2 个答案:

答案 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&param=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方案的人提供了理由。