Подтвердить что ты не робот

Запрос разрешения для камеры и библиотеки в iOS 10 - Info.plist

Я реализовал WKWebView в приложении. там файл вводится на указанной веб-странице, где он должен импортировать изображение с фотографий. Всякий раз, когда я нажимаю на этот вход и выбираю "Take Photo" или "Photo Library", приложение внезапно падает, что, я считаю, связано с тем, что приложение не имеет права либо делать фотографию, либо импортировать из библиотеки.

Как мне нажимать запрос на разрешение, когда пользователь выбирает один из указанных методов (съемка или фотобиблиотека)?

Я использую Swift 3.0 с WKWebView.

4b9b3361

Ответ 2

Вы также можете запросить доступ программно, что я предпочитаю, потому что в большинстве случаев вам нужно знать, получил ли вы доступ или нет.

Обновление Swift 4:

    //Camera
    AVCaptureDevice.requestAccess(for: AVMediaType.video) { response in
        if response {
            //access granted
        } else {

        }
    }

    //Photos
    let photos = PHPhotoLibrary.authorizationStatus()
    if photos == .notDetermined {
        PHPhotoLibrary.requestAuthorization({status in
            if status == .authorized{
                ...
            } else {}
        })
    }

Вы не разделяете код, поэтому я не могу быть уверенным, что это будет полезно для вас, но общие разговоры используют его как наилучшую практику.

Ответ 3

Swift 4

Файл: Info.plist

камера

<key>NSCameraUsageDescription</key>
<string>camera description.</string>

Фото

<key>NSPhotoLibraryUsageDescription</key>
<string> photos description.</string>

Сохранить фотографии

  <key>NSPhotoLibraryAddUsageDescription</key>
  <string> photos add description.</string>

Место нахождения

<key> NSLocationWhenInUseUsageDescription</key>
<string> location description.</string>

Apple Music:

<key>NSAppleMusicUsageDescription</key>
<string>My description about why I need this capability</string>

Календарь

<key>NSCalendarsUsageDescription</key>
<string>My description about why I need this capability</string>

Siri

<key>NSSiriUsageDescription</key>
<string>My description about why I need this capability</string>

Ответ 4

Файл: Info.plist

Для Камера:

<key>NSCameraUsageDescription</key>
<string>You can take photos to document your job.</string>

Для Фотобиблиотеки вам нужно, чтобы это разрешало пользователю приложения просматривать библиотеку фотографий.

<key>NSPhotoLibraryUsageDescription</key>
<string>You can select photos to attach to reports.</string>

Ответ 5

Используйте настройки plist, упомянутые выше, и соответствующий метод доступа (AVCaptureDevice или PHPhotoLibrary), но также предупредите их и отправьте их в настройки, если вам это действительно нужно, например:

Swift 4.0 и 4.1

func proceedWithCameraAccess(identifier: String){
    // handler in .requestAccess is needed to process user answer to our request
    AVCaptureDevice.requestAccess(for: .video) { success in
      if success { // if request is granted (success is true)
        DispatchQueue.main.async {
          self.performSegue(withIdentifier: identifier, sender: nil)
        }
      } else { // if request is denied (success is false)
        // Create Alert
        let alert = UIAlertController(title: "Camera", message: "Camera access is absolutely necessary to use this app", preferredStyle: .alert)

        // Add "OK" Button to alert, pressing it will bring you to the settings app
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
          UIApplication.shared.open(URL(string: UIApplicationOpenSettingsURLString)!)
        }))
        // Show the alert with animation
        self.present(alert, animated: true)
      }
    }
  }

Ответ 6

Swift 4 Самый простой способ добавить разрешения без необходимости делать это программно, это открыть файл info.plist и выбрать "+" рядом со списком свойств информации, прокрутить раскрывающийся список до параметров конфиденциальности и выбрать "Описание использования камеры конфиденциальности" для Доступ к камере или Приватной Фотобиблиотеке Описание использования для доступа к Фотобиблиотеке. Введите значение String справа после того, как вы сделали свой выбор, чтобы включить текст, который вы хотели бы показать своему пользователю, когда всплывающее предупреждение запрашивает разрешения. Camera/Photo Library permission

Ответ 7

Чтобы запросить разрешение для приложения для фото, вам нужно добавить этот код (Swift 3):

PHPhotoLibrary.requestAuthorization({ 
       (newStatus) in 
         if newStatus ==  PHAuthorizationStatus.authorized { 
          /* do stuff here */ 
    } 
})