SFSafariViewController 在安装 YouTube 时请求打开 YouTube 应用

Posted

技术标签:

【中文标题】SFSafariViewController 在安装 YouTube 时请求打开 YouTube 应用【英文标题】:SFSafariViewController requesting to Open YouTube App when YouTube is installed 【发布时间】:2015-12-08 14:49:52 【问题描述】:

我有一个仅限 ios 9 的应用程序,我正在使用 UITableViewController 和一家公司的视频列表进行开发。一些视频托管在 YouTube 上。在didSelectRowAtIndexPath中,我实现SFSafariViewController的使用方式如下:

SFSafariViewController *safariVC = [[SFSafariViewController alloc] initWithURL:[NSURL URLWithString:@"https://www.youtube.com/watch?v=YQHsXMglC9A"]entersReaderIfAvailable:NO];
safariVC.delegate = self;
[self presentViewController:safariVC animated:YES completion:nil];

请注意,该链接中的视频不是我用于我的应用的视频 - 这只是一个示例。

当我在设备上未安装 YouTube.app 的情况下单击它时,它会在 SFSafariViewController 中打开。如果我安装了 YouTube.app,它会提示我打开其中的链接:

我了解为什么会发生这种情况,因为 iOS 9 中的工作,但我该如何防止呢?我的用户必须去 YouTube 观看视频然后返回应用程序(即使是通过顶部的反向链接),这将是非常烦人的。

我怎样才能防止这种情况在应用内发生,也就是说在应用内使用 SFSafariViewController 而不是 YouTube 应用?

更新

这种行为不会发生在 Twitter 或 Facebook 原生应用程序中,所以问题是,这是 YouTube 原生应用程序问题(我无能为力)还是我有办法阻止打开?使用 SFSafariViewController,Apple 的目标是让它变得更容易;必须有办法阻止应用程序在原生应用程序中提示和加载。

对此的任何指导将不胜感激。

【问题讨论】:

如果用户点击“取消”而不是“打开”,您知道如何管理吗? 【参考方案1】:

我没有看到委托人这样做。我想这是本机行为,而这正是您使用SFSafariViewController 所得到的。您可以直接使用 WebView 来重新创建“轻量版”

【讨论】:

谢谢@daij - 真是太可惜了。我有 UIWebView 使用它,它不会调用安装它的 YouTube 应用程序,但是 SFSafariViewController 好多了,但这件事阻止我使用它,因为很多人都会安装 YouTube 应用程序。我应该就此向 Apple 提交某种雷达吗?确实应该有一个控制机制来防止从应用内打开其他应用。 经过进一步调查,我可以看到 Facebook 或 Twitter 应用程序不会发生这种行为(我有两者的本机)。这个链接讨论了这种行为,它实际上不应该做我在问题中遇到的事情:***.com/questions/32375916/… - 除非它当然依赖于应用程序本身,也许还有 YouTube 。考虑到这一点,应用程序尚未更新?有什么办法可以强制不打开,或者提示在YouTube应用中打开? 嗨@Daij-Djan - 你对此有什么进一步的想法吗? 好吧,我认为这两个应用程序没有使用 SFSafariViewController 谢谢 - 虽然他们确实不使用 SFSafariViewController,但不幸的是,YouTube 也不是。那么是否绝对没有办法阻止我的应用在第三方应用中打开?

以上是关于SFSafariViewController 在安装 YouTube 时请求打开 YouTube 应用的主要内容,如果未能解决你的问题,请参考以下文章

使用 SFSafariViewController 的主要优势是啥?

如何在 SwiftUI 中使用 SFSafariViewController?

SFSafariViewController 显示任何 URL 的空白屏幕

SFSafariViewController 关闭后的背景音频

检测 SFSafariViewController 中的 URL 更改

FBSDK 登录 - SFSafariViewController 已禁用?