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 хотел бы получить доступ к камере, что, я думаю, может быть проблемой. Поскольку после того, как я принимаю, экран по-прежнему черный, m интересно, почему это не говорит, что мое имя приложения, например" FooBar", похоже на доступ... Возможно, это несоосность в том, почему экран камеры черный. Просто не уверен, как его изменить.

----- Обновить # 2 -----

Это, по-видимому, проблема SFSafariViewController, так как я реализовал WKWebView, и камера отлично работает.

Ответ 1

Это, по-видимому, известная ошибка с SFSafariViewController (я представил радар, который закрылся). Я столкнулся с той же проблемой, что наш мобильный веб-сайт не смог получить что-либо с устройства, а не камеру для снятой картинки или снимков из рулона камеры. Это продолжалось в Safari и в SFSafariViewController, поэтому мы просто переработали полный процесс загрузки через собственный VC и Parse. Тем не менее, я получил несколько предложений от технической поддержки, прежде чем делать все это, и они сказали мне попробовать следующее:

  • Проверьте со вторым устройством. Иногда это может быть ошибка, которая происходит только на одном устройстве из-за ошибки в разрешениях. Проверка со вторым устройством должна исключать возможность того, что что-то пошло не так при установке.
  • Проверьте разрешения приложений в настройках. Они сказали мне, что иногда пустой экран появляется, если Пользователь отклонил разрешение на использование камеры. Чтобы проверить, так ли это, откройте настройки, прокрутите вниз и выберите свое приложение. здесь вы должны увидеть переключатель ON/OFF, который должен указывать на включение. Как видно на скриншоте ниже. screenshot

Однако мои два цента будут:

  1. Вместо этого рассмотрите использование UIWebview или WKWebview. Вы сказали, что ваш сайт удобен для мобильных устройств, тогда вы можете просто перетащить UIWebview в свою раскадровку и настроить его, чтобы указать на ваш сайт. Здесь - хороший учебник по UIWebviews. Другая, более очевидная альтернатива - использовать WKWebview. В своем обновлении вы, однако, уже указали, что сделали это, поэтому я не буду связывать вас с учебниками.

В противном случае вы вряд ли сможете сделать это прямо сейчас, кроме того, чтобы добавить в Apple еще один радар с помощью Bug Reporter. Наконец, вы можете отправить билет на техническую поддержку, но я бы не тратил ни одного из них, так как у вас всего 2 года.

Надеюсь, что это поможет, Джулиан