2016-12-07 2 views
1

У меня есть приложение Cordova (написанное для Android и iOS), которое отлично работает в производстве с большим количеством пользователей, в том числе на iOS 10.0 после необходимых мер безопасности в месяц или два назад. Теперь с более новыми обновлениями 10.1 (в настоящее время тестирование на 10.1.1) я нахожу, что попытки вызвать функцию захвата видео полностью разрушают Кордову, без возможности отладки с точки зрения JS. На стороне Android нет проблем. Это только с последним обновлением iOS, и не было обновлений кода или плагинов или изменений.

Мы используем новейший плагин cordova-plugin-media-capture , v1.4.0, с ngCordova. Звонки на этот плагин, чтобы сделать снимок через $cordovaCapture.captureImage, отлично работают в iOS 10.1.1. Это всего лишь призывы к $cordovaCapture.captureVideo, которые полностью и мгновенно разбивают Кордову. Я посмотрел на Xcode в случае, если есть какие-то новые или внеушные настройки, и все кажется правильным, поэтому приветствуем любые предложения по его решению.

Ранее (месяц или два назад) мы решили новый выпуск IOS 10 разрешений с помощью Cordova-плагин-настройки-крючок плагин с этими настройками IOS (фрагмент показан) в config.xml:

<platform name="ios"> 
    <config-file parent="NSLocationWhenInUseUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here...</string> 
    </config-file> 
    <config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here....</string> 
    </config-file> 
    <config-file parent="NSPhotoLibraryUsageDescription" platform="ios" target="*-Info.plist"> 
     <string>Reason goes here...</string> 
    </config-file> 

Я подтвердил эти настройки с помощью Xcode. Параметры мы передаем в фактической вызов следующим образом:

$cordovaCapture.captureVideo 
({ 
    limit:  1, // how many clips to record (iOS must be 1) 
    duration: 300 // maximum length (in seconds) = 5 minutes 
}) 

Надеясь кто-то удалось решить тот же вопрос и готов поделиться обходной путь.

+0

FYI приложение было первоначально с использованием Кордова v6.2.0. Я обновился до последней версии v6.4.0 и протестирован, но получаю ту же проблему с iOS. –

+0

Для двух людей, любезно предлагающих мне посмотреть разрешения микрофона. Я вырыл дальше, и это, по-видимому, является причиной его сбоя (из отчета о сбое.) Что-то должно быть прикручено где-то, поскольку у меня есть оба параметра config.xml, и я могу видеть на Xcode также, что строка причины присутствует, но приложение, похоже, не имеет его. –

+0

Попытался сохранить настройки микрофона в файле config.xml, затем «corova clean ios», а затем перестроить и запустить. Сделал трюк, и теперь я могу записывать видео снова. Таким образом, основная проблема заключалась в настройке микрофона, но в процессе сборки было еще что-то еще. –

ответ

1

Вам не хватает NSMicrophoneUsageDescription, который необходим при записи видео.

Странная вещь: 1.4.0 версия плагина должна содержать все описания UsageDescriptions, вам не нужен крючок-cord-plug-hook-hook, но по какой-то причине он не работает, если вам нужно добавить, что плагин.

На чистом новом проекте с использованием только 1.4.0 медиа-плагина он работает так, как ожидалось, без сбоев.

+0

Спасибо за предложение. Очень ценим! Посмотрите на это, и если решите, примите ответ. Какой-то странный, что мы должны были разрешать разрешения в 10.0, и тогда все работало. Возможно, это разрешение применяется только в 10.1. –

+0

К сожалению, проблема не решена.(Все еще сбой.) Будет +1, так как это все-таки необходимое разрешение. –

+0

Последующий ... Журнал сбоев (из меню устройства Xcode) показал, что отсутствующая строка использования микрофона виновата в сбое, хотя они были в разделе «Информация» Xcode. Таким образом, комбинация добавления настройки микрофона и запуска команды corova clean ios наконец-то сделала трюк. Поскольку вы первыми предложили настройку микрофона, и вы даже использовали слово «чистый» :), отметьте это как правильный ответ. –

1

В обновлении iOS 10 необходимо добавить плагин вместе с переменными, имеющими описание разрешений. Используйте приведенный ниже код в файле config.xml проекта cordova.

<plugin name="cordova-plugin-media-capture" spec="1.4.0"> 
    <variable name="CAMERA_USAGE_DESCRIPTION" value="To take videos"/> 
    <variable name="MICROPHONE_USAGE_DESCRIPTION" value="To record voice while taking videos"/> 
    <variable name="PHOTO_LIBRARY_USAGE_DESCRIPTION" value="To provide photo browsing."/> 
</plugin> 

Это решит проблему.

См Ios причуды: https://github.com/apache/cordova-plugin-media-capture

+0

Спасибо за обмен. К сожалению, это не имело никакого значения. –

+0

Как вы можете видеть в другом месте этого билета, комбинация настроек микрофона плюс команда cordova clean ios сделала трюк. jcesarmobile указал на настройку микрофона, поэтому он будет награжден, но это был хороший ответ, так как тот, кто не хочет использовать плагин настроек, который мы уже используем, сделал +1. –