Ios canOpenURL用于打开其他应用程序-不在模拟器上工作
我正在尝试从部署目标为8.1的应用程序中打开Yelp 我面临的问题是我的代码没有在模拟器上正确评估。我的设备是iOS 10.3,它在那里可以正常工作(Yelp打开),但我需要能够检查它是否在iOS旧版本的模拟器上工作Ios canOpenURL用于打开其他应用程序-不在模拟器上工作,ios,swift,xcode,ios-simulator,openurl,Ios,Swift,Xcode,Ios Simulator,Openurl,我正在尝试从部署目标为8.1的应用程序中打开Yelp 我面临的问题是我的代码没有在模拟器上正确评估。我的设备是iOS 10.3,它在那里可以正常工作(Yelp打开),但我需要能够检查它是否在iOS旧版本的模拟器上工作 let urlStr: String = "yelp://" let url = URL(string: urlStr) if UIApplication.shared.canOpenURL(url!) { print("can open")
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没有安装在模拟器上-但是如果是这样的话,会不会打印(“无法打开url”)
评估
下面是info.plist中我的URLTypes/LSApplicationQueriesSchemes
我上面的代码有什么问题吗?我如何在模拟器上正确测试Yelp的开放性,在模拟器上我可以对各种iOS版本进行QA(从8.1开始)?谢谢朋友。它返回
true
,因为在您的URL方案中,您有一个项目yelp
,基本上,当您调用openURL
时,系统会尝试打开您自己的应用程序。更改该项并再次测试。出于好奇-调用openURL
后,模拟器上会发生什么?此外,如果可能的话,最好至少保留一台设备,使用您支持的最低版本的系统。iOS 9.x或10.x的模拟器是否也有同样的问题?您是否可以尝试在模拟器中执行重置内容和设置
,然后运行您的应用程序,看看它是否会给出相同的结果?@Losiowaty-什么都不会发生(虽然什么都不应该发生)但正如我在问题中提到的,“可以打开”不应该打印到控制台,因为Yelp不在模拟器上。@rmaddy-是的。相同的问题在8/9/10期间持续存在。捕捉良好。我看到了,但没有建立连接。我更关注LSApplicationQueriesSchemes
的正确条目。哈哈!所以你说的是摆脱项目0(Yelp)具体来说?@Joe Yes,在URL类型
部分中的一个。你声明你自己的应用程序响应yelp
URL方案。苹果会因此拒绝你的应用程序。如果你的应用程序需要自己的自定义URL方案,请指定你自己的自定义方案,不要将该方案用于yelp的应用程序。@Joe我不确定你是否添加了b因为你想在URL方案中注册你的应用程序,以便其他应用程序可以打开它。如果你不想添加它,那么你可以删除它。@rmaddy-天哪。感谢你向我指出这一点!我被误解了。我以为URL类型是为了iOS9后的权限目的。我对注册我自己的URL方案不感兴趣(只想打开Yelp!:)。我可以删除整个URL类型部分,对吗?