【问题标题】:canOpenURL for opening other Apps - Not working on simulatorcanOpenURL 用于打开其他应用程序 - 不适用于模拟器
【发布时间】:2017-04-14 20:42:02
【问题描述】:

我正在尝试从部署目标为 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 - 但如果是这种情况,print("can not open url") 不会评估吗??

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

我上面的代码有什么问题吗?如何在模拟器上正确测试 Yelp 的打开情况,我可以在其中对各种 iOS 版本进行 QA(从 8.1 开始)?谢谢朋友。

【问题讨论】:

  • 出于好奇 - 调用 openURL 后模拟器上会发生什么?此外,如果可能,最好让至少一台设备使用您支持的最低系统版本。
  • iOS 9.x 或 10.x 的模拟器有同样的问题吗?
  • 您可以尝试在您的模拟器中执行Reset Content and Settings,然后运行您的应用程序,看看它是否会给出相同的结果?
  • @Losiowaty - 什么都没有发生(尽管什么都不应该发生)。但正如我在问题中提到的,“可以打开”不应该打印到控制台,因为 Yelp 不在模拟器上。
  • @rmaddy - 是的。 2010 年 8 月 9 日,同样的问题仍然存在。

标签: ios swift xcode ios-simulator openurl


【解决方案1】:

它返回true,因为在您的URL Schemes 中,您有一个项目yelp,基本上系统会在您调用openURL 时尝试打开您自己的应用程序。更改该项目并再次测试。

【讨论】:

  • 好收获。我看到了,并没有建立联系。我更关注LSApplicationQueriesSchemes 的正确条目。
  • 哈哈!所以你是说要专门去掉第 0 项(yelp)?
  • @Joe 是的,URL Types 部分中的那个。您声明您自己的应用程序响应yelp URL 方案。苹果最终会为此拒绝您的应用程序。如果您的应用需要自己的自定义 URL 方案,请指定您自己的自定义方案,不要为 Yelp 的应用使用该方案。
  • @Joe 我不确定您是否添加了它,因为您想在 URL Scheme 中注册您的应用程序,以便其他应用程序可以打开它。如果这不是您添加的意图,那么是的,您可以删除它。
  • @rmaddy - 天哪。感谢您向我指出这一点!我被误解了。我认为 URL 类型是为了在 iOS9 之后获得许可。我对注册自己的 URL 方案不感兴趣(只想打开 Yelp!:))。我可以删除整个 URL 类型部分,对吗?
猜你喜欢
  • 2014-05-03
  • 2013-07-05
  • 1970-01-01
  • 2020-09-17
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多