2017-04-14 63 views
3

我想从我的应用程序有8.1canOpenURL打开其他应用 - 不工作的模拟器

我所面临的问题部署目标中打开Yelp的是我的代码没有被正确评估的模拟器。我的设备是iOS 10.3,并且在那里工作正常(Yelp打开),但是我需要能够检查它是否适用于旧版iOS的模拟器!

let urlStr: String = "yelp://" 
    let url = URL(string: urlStr) 
    if UIApplication.shared.canOpenURL(url!) { 
     print("can open") 
     if #available(iOS 10.0, *) { 
      print("10") 
      UIApplication.shared.open(url!, options: [:], completionHandler: nil) 
     } else { 
      print("NOT 10") 
      UIApplication.shared.openURL(url!) 
     } 
    } 
    else { 
     // Can not open URL 
     print("can not open url") 
    } 

虽然在模拟器(的iOS 8.1),下面的打印到控制台:

can open 
NOT 10 

然而,这是错误的! Yelp没有安装在模拟器上 - 但如果是这样的话,print("can not open url")不会评估?

这是我在info.plist中的URLTypes/LSApplicationQueriesSchemes。

Here's my URLTypes/LSApplicationQueriesSchemes in the info.plist.

这有什么错我上面的代码?我如何在模拟器上正确测试Yelp的开放,我可以在各种版本的iOS上开始QA(从8.1开始)?谢谢朋友。

+0

出于好奇 - 在调用'openURL'之后模拟器上会发生什么?另外,如果可能的话,至少要保留一台具有所支持的最低版本系统的设备。 – Losiowaty

+0

你有与iOS 9.x或10.x模拟器相同的问题吗? – rmaddy

+0

您可以尝试在模拟器中执行“重置内容和设置”,然后运行您的应用程序并查看它是否会给出相同的结果? – janusbalatbat

回答

5

它返回true因为在你的URL方案,您拥有的项目yelp,基本上系统尝试,当你调用openURL打开自己的应用程序。更改该项目并再次测试。

+0

好,我看到了,并没有建立连接,我更关注'LSApplicationQueriesSchemes '。 – rmaddy

+0

哈哈!所以你说的只是摆脱了项目0(yelp)? – Joe

+1

@Joe是的,在'网址类型'部分。你声明你自己的应用程序响应'yelp如果您的应用需要自己的自定义URL方案,请指定您自己的自定义方案,不要使用Yelp应用的方案。 – rmaddy