ios 9 – xcode 7 – SFSafariViewController – 图像上传 – 相机黑屏

我正在使用SFSafariViewController,并遇到以下问题:向用户显示上传图像按钮,当点击该设备正确显示多个选项,其中一个是相机。 当用户选择摄像机时,它会加载摄像机,但屏幕为黑色,操作按钮显示为灰色。 但是,如果用户选择库,则会正确上载所选图像。

我确认该应用已启用相机权限。

我试着实现这里和这里找到的修复,但无济于事。

其他人遇到这个问题?

码:

import UIKit import SafariServices class ViewController: UIViewController, SFSafariViewControllerDelegate { private var urlString:String = "https://example.com" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!) svc.delegate = self self.presentViewController(svc, animated: true, completion: nil) } func safariViewControllerDidFinish(controller: SFSafariViewController) { super.dismissViewControllerAnimated(true, completion: nil) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

—– 更新#1 —–

重置隐私设置并尝试直接从相机上传图像后,我没有得到“SafariViewService想要访问相机,我认为这可能是问题。因为我接受后,屏幕仍然是黑色的,我想知道为什么它不是说我的应用程序名称像“FooBar”会想要访问…也许这种不对齐是相机屏幕为黑的原因。只是不知道如何更改它。

—– 更新#2 —–

这似乎是一个SFSafariViewController问题,因为我实现了WKWebView并且相机工作正常。

编辑iOS 11.3:感谢Rihards的评论,并指出这已得到修复。

这显然是SFSafariViewController的一个已知错误(我提交了一个已关闭的雷达)。 我遇到了同样的问题,我们的移动网站无法从设备获取任何内容,而不是用于拍摄照片的相机或相机胶卷中的照片。 这是在Safari和SFSafariViewController中持久存在的,所以我们最终只是通过原生VC和Parse重做整个上传过程。 但是,在完成所有这些之前,我从技术支持部门得到了一些建议,他们告诉我尝试以下方法:

  1. 检查第二个设备。 有时,由于权限错误,这可能只是在一台设备上发生的错误。 使用第二个设备进行检查时,应排除安装时出错的选项
  2. 在“设置”中检查应用程序的权限。 他们告诉我,如果用户拒绝使用相机,有时会出现空白屏幕。 要检查是否是这种情况,请打开设置,向下滚动到底部并选择您的应用。 在这里你应该看到一个ON / OFF切换,它应该都指向。 如下面的截图所示。 截图

但是,我的两分钱是:

  1. 请考虑使用UIWebview或WKWebview。 您说您的网站是移动设备友好的,那么您可以考虑将UIWebview拖入您的故事板并将其设置为指向您的网站。 这是一个关于UIWebviews的好教程。 另一个更明显的替代方案是使用WKWebview。 在您的更新中,您已经指出您已完成此操作,因此我不会将您链接到任何教程。

除此之外,除了用他们的Bug Reporter向Apple提交另一个雷达之外,你现在做的事情并不多。 最后,您可以提交技术支持的门票,但是我不会浪费任何一个,因为每个会员年只有2个。

希望有所帮助,朱利安