Ответ 1
Я добавил ключ "Privacy - Camera Usage Description"
в свой файл info.plist и теперь работает.
В моем приложении я использую card.io для сканирования кредитных карт. Он отлично работает в iOS 9. В iOS 10 приложение терпит крах, и я не могу найти журнал сбоев в консоли xcode 8 beta 2, поскольку он выдает много сообщений об мусоре.
И затем я проверил в настройках privacy- > , чтобы отключить камеру для моего приложения, но мое приложение не указано в этом разделе. Похоже, что iOS 10 не разрешает моему приложению использовать камеру.
Я использую следующий код для запроса разрешения:
-(BOOL)checkCameraPermissions{
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if(authStatus == AVAuthorizationStatusAuthorized)
{
// start card-io
return YES;
}
else if(authStatus == AVAuthorizationStatusNotDetermined)
{
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted)
{
if(granted)
{
//Start card-io
[self testIsNewCard];
}
}];
}
else if (authStatus == AVAuthorizationStatusRestricted)
{
//Alert
// Alert camera denied
UIAlertController *aCon=[UIAlertController alertControllerWithTitle:@"Camera denied" message:@"Camera cannot be used" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *ok =[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[aCon dismissViewControllerAnimated:YES completion:nil];
}];
[aCon addAction:ok];
[self presentViewController:aCon animated:YES completion:nil];
return NO;
}
return NO;
}
Когда я запускаю этот код, authStatus возвращается как AVAuthorizationStatusNotDetermined
и приложение разбилось сразу после входа в блок requestAccessForMediaType:AVMediaTypeVideo
В консоли отображается столько журналов мусора, и я не знаю, как найти аварийное сообщение.
Изменить: Я нашел возможность отключить все ненужные журналы в xcode 8. Отправленный ответ здесь. Но все же xcode didn ' t показал аварийный журнал даже после отключения отладки backtrace.
Мой xcode8 просто показывает это сообщение, и приложение просто завершает работу:
App[1124:226447] [access] <private>
Я также попытался сбросить местоположение и конфиденциальность, но при попытке запросить доступ к мультимедиа приложение перестает работать.
Любые идеи, почему это происходит?
Я добавил ключ "Privacy - Camera Usage Description"
в свой файл info.plist и теперь работает.
В iOS 10
вы должны объявить доступ к любым пользовательским типам данных. Вы делаете это, добавляя ключ использования в свои приложения Info.plist
. Для получения дополнительной информации, пожалуйста, найдите скриншот ниже для этого.
Вам нужно добавить ключ Конфиденциальность - описание использования камеры для ваших приложений Info.plist и их использование.
Для получения дополнительной информации см. ниже GIF.
Или, если вы хотите добавить через info.plist, вам нужно добавить NSCameraUsageDescription.
Просто скопируйте и вставьте ниже строку в info.plist.
<key>NSCameraUsageDescription</key>
<string>Take the photo</string>
Подробнее см. ниже GIF.
Для получения дополнительной информации просмотрите ссылку .
iOS 10
продолжил политику конфиденциальности и внедрил новые правила конфиденциальности. И мы должны помнить о реализации их в наших следующих проектах.
Для вашей проблемы вам нужно добавить следующую строку в info.plist
<!-- 📷 Camera -->
<key>NSCameraUsageDescription</key>
<string><Your description goes here></string>
Ниже приведены остальные правила конфиденциальности:
<!-- 🖼 Photo Library -->
<key>NSPhotoLibraryUsageDescription</key>
<string><Your description goes here></string>
<!-- 📷 Camera -->
<key>NSCameraUsageDescription</key>
<string><Your description goes here></string>
<!-- 🎤 Microphone -->
<key>NSMicrophoneUsageDescription</key>
<string><Your description goes here></string>
<!-- 📍 Location -->
<key>NSLocationUsageDescription</key>
<string><Your description goes here></string>
<!-- 📍 Location When In Use -->
<key>NSLocationWhenInUseUsageDescription</key>
<string><Your description goes here></string>
<!-- 📍 Location Always -->
<key>NSLocationAlwaysUsageDescription</key>
<string><Your description goes here></string>
<!-- 📆 Calendars -->
<key>NSCalendarsUsageDescription</key>
<string><Your description goes here></string>
<!-- ⏰ Reminders -->
<key>NSRemindersUsageDescription</key>
<string><Your description goes here></string>
<!-- 🏊 Motion -->
<key>NSMotionUsageDescription</key>
<string><Your description goes here></string>
<!-- 💊 Health Update -->
<key>NSHealthUpdateUsageDescription</key>
<string><Your description goes here></string>
<!-- 💊 Health Share -->
<key>NSHealthShareUsageDescription</key>
<string><Your description goes here></string>
<!-- ᛒ🔵 Bluetooth Peripheral -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string><Your description goes here></string>
<!-- 🎵 Media Library -->
<key>NSAppleMusicUsageDescription</key>
<string><Your description goes here></string>
Надеюсь, это поможет.:)