Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios canOpenURL用于打开其他应用程序-不在模拟器上工作_Ios_Swift_Xcode_Ios Simulator_Openurl - Fatal编程技术网

Ios canOpenURL用于打开其他应用程序-不在模拟器上工作

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")

我正在尝试从部署目标为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")
        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类型部分,对吗?