【问题标题】:link does not open from app in safari in iOS 9.0 but works in iOS 9.3链接在 iOS 9.0 中无法从 Safari 中的应用程序打开,但在 iOS 9.3 中有效
【发布时间】:2023-12-30 19:28:01
【问题描述】:

我知道这个问题有很多相同的标题或不同的标题。我正在尝试下面的代码。

UIApplication.sharedApplication().openURL(videoURL) 

这行代码在 iOS 模拟器 8.xx/9.xx 中运行良好并返回 true。但是当我尝试在 iPhone 9.Xx 中运行我的代码时(不幸的是没有 iOS 8.xx 设备)然后这一行

UIApplication.sharedApplication().openURL(videoURL) 

是假的。

我想,因为我的网址包含 https:// 所以我尝试将其更改为 http:// 但仍然没有运气。.plist 文件中是否需要任何类型的条目。我假设但不知道是否这应该是怎么做的。你们能帮帮我吗?

问候

【问题讨论】:

  • 你的网址是什么。它在我的 iPhone 9.3.3 中运行良好
  • 我尝试打开 youtube.com/.I 不知道 https 和 http 是否会有所不同。

标签: ios objective-c swift ios9 ios9.3


【解决方案1】:

我在实际设备 iPhone iOS 9.3.3 上使用了此代码

let videoURL = "https://www.youtube.com/watch?v=sFY-NDAAgFo"
UIApplication.sharedApplication().openURL(NSURL(string: videoURL)!)

它刚刚用 youtube 视频打开了 safari

对于 http,我们现在需要在 iOS 9 之后的 Info.plist 中添加一个键

就在你最后一个 dict 之前,将这些行写在 Info.plist 中,被视为源代码。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

或者,您可以添加一个新键并将其作为字典并添加一个布尔字段,如图所示

【讨论】:

  • info.plist 条目已经存在于我的项目中,我试过 let videoURL = "youtube.com/watch?v=sFY-NDAAgFo" UIApplication.sharedApplication().openURL(NSURL(string: videoURL)!). 仍然没有运气 UIApplication.sharedApplication().openURL(NSURL(string: videoURL)!) 仍然给出错误。但在 sim 上它的工作。无论如何感谢回复
  • 你的url格式不对,写let videoURL = https://www.youtube.com/watch?v=sFY-NDAAgFo
  • 而且 Info.plist 始终存在于每个项目中。有什么新东西。我要求您添加传输安全密钥。但是只有当你使用 http 而不是 https 时才会使用你
  • 只需复制粘贴我在答案中编写的相同 URL 代码并在设备上检查
  • @ManishSingh 我认为这可能会对你有所帮助apple.stackexchange.com/questions/231581/… iOS 9.0.x 版本中存在错误,苹果已在以后的版本中修复了这些错误
【解决方案2】:

从 iOS 9 开始记住这一点,您可以使用 SFSafariViewController

导入 Safari 服务

private func openMYUrl(url: NSURL) {
        if #available(iOS 9.0, *) {
            let svc = SFSafariViewController(URL: url)
            svc.delegate = self
            self.presentViewController(svc, animated: true, completion: nil)
        }
        else {
            UIApplication.sharedApplication().openURL(url)
        }
    }

注意:如果您不使用此应用程序将拒绝。在我的情况下 发生。

【讨论】:

  • 不,不是那样的。像google sign in 这样的sdks 是拒绝的理由。我上个月刚刚提交了这个应用程序,它有一个带有 youtube 和许多其他谷歌网站链接的文本视图。苹果从不拒绝和接受。取决于您使用的是什么。现在的sdks一般都使用SafariController
【解决方案3】:

这是 iOS 9.0.x 的苹果错误,已在 iOS 9.3.x 中得到修复。我正在粘贴链接以供想要参考此链接以获取更多信息的人使用。感谢 Rajan 的回答和建议

Please go through this apple release note

【讨论】:

    最近更新 更多