내 앱에서 신용 카드를 스캔하기 위해 card.io를 사용하고 있습니다. iOS 9에서 잘 작동합니다. iOS 10에서 앱이 충돌하고 xcode 8 베타 2 콘솔에서 많은 가비지 메시지를 표시하기 때문에 충돌 로그를 찾을 수 없습니다.
그런 다음 개인 정보-> 설정을 확인하여 내 앱에서 카메라가 비활성화되어 있는지 확인했지만 내 앱이 해당 섹션에 나열되지 않았습니다 .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는 역 추적 디버깅을 비활성화 한 후에도 크래시 로그를 표시하지 않았습니다.
내 xcode8은이 메시지를 표시하고 앱이 종료됩니다.
App[1124:226447] [access] <private>
또한 위치 및 개인 정보를 재설정하려고 시도했지만 미디어 액세스를 요청하려고 할 때 여전히 앱이 충돌합니다.
왜 이런 일이 발생하는지 아이디어가 있습니까?
내 info.plist 파일에 "Privacy - Camera Usage Description"
키 를 추가 했는데 이제 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다