2016-06-29 2 views
1

Xamarin iOS 앱에서 카메라를 사용하려고합니다. 첫 번째 단계는 앱이 카메라에 액세스 할 수 있는지 확인하는 것입니다. 하지만이 일을하는 동안 나는 모노 런타임에서 치명적인 오류가 발생합니다. 어떤 생각? 비주얼 스튜디오 (2015), 나는 새로운 "빈 앱 (아이폰)"프로젝트를 생성에서"모노 런타임에서 치명적인 오류"가 발생하지 않도록 Xamarin iOS 앱에서 카메라 액세스를 확인하는 방법은 무엇입니까?

: 여기

보다 예외에 대한 자세한 내용입니다. iPhone 3GS를 소유하고 있으므로 프로젝트 속성에서 armv7로 전환하고 배포 대상으로 iOS 6.1을 선택합니다.

iPhone에서 디버그 : Mac 에이전트가 제대로 작동하고 내 휴대 전화에서 빈 앱이 시작됩니다.

다음으로 AppDelegate.FinishedLaunching (...)으로 이동하여 을 추가하십시오. AVCaptureDevice.GetAuthorizationStatus (AVMediaType.Video); 을 반환 한 다음 true를 반환합니다.

응용 프로그램을 다시 빌드하고 디버그 ... GetAuthorizationStatus (...)에 의해 예외가 발생합니다. 여기의 스택 트레이스는 다음과 같습니다

2016-06-24 12:50:22.691 App2[491:907] +[AVCaptureDevice authorizationStatusForMediaType:]: unrecognized selector sent to class 0x3a49c070 
2016-06-24 12:50:22.704 App2[491:907] critical: Stacktrace: 
2016-06-24 12:50:22.708 App2[491:907] critical: at <0xffffffff> 
2016-06-24 12:50:22.712 App2[491:907] critical: at <0xffffffff> 
2016-06-24 12:50:22.715 App2[491:907] critical: 
Native stacktrace: 
2016-06-24 12:50:22.964 App2[491:907] critical: 0 App2 0x0004f49d mono_handle_native_sigsegv + 240 
2016-06-24 12:50:22.968 App2[491:907] critical: 1 App2 0x00056a23 mono_sigsegv_signal_handler + 222 
2016-06-24 12:50:22.971 App2[491:907] critical: 2 libsystem_c.dylib 0x3a37ee93 _sigtramp + 42 
2016-06-24 12:50:22.975 App2[491:907] critical: 3 App2 0x0033d3d0 map_dwarf_reg_to_hw_reg + 0 
2016-06-24 12:50:22.978 App2[491:907] critical: 4 App2 0x0004ed4f mono_handle_exception_internal + 1508 
2016-06-24 12:50:22.982 App2[491:907] critical: 5 App2 0x0004e767 mono_handle_exception + 30 
2016-06-24 12:50:22.985 App2[491:907] critical: 6 App2 0x0004819b mono_arm_throw_exception + 106 
2016-06-24 12:50:22.989 App2[491:907] critical: 7 App2 0x00244194 throw_exception + 64 
2016-06-24 12:50:22.996 App2[491:907] critical: 8 App2 0x00274c74 ObjCRuntime_Runtime_throw_ns_exception_intptr + 28 
2016-06-24 12:50:23.000 App2[491:907] critical: 9 App2 0x002ab490 wrapper_native_to_managed_ObjCRuntime_Runtime_throw_ns_exception_intptr + 72 
2016-06-24 12:50:23.004 App2[491:907] critical: 10 App2 0x000f1bac xamarin_throw_ns_exception + 52 
2016-06-24 12:50:23.007 App2[491:907] critical: 11 App2 0x000f3a64 _ZL17exception_handlerP11NSException + 224 
2016-06-24 12:50:23.011 App2[491:907] critical: 12 CoreFoundation 0x322a457f + 614 
2016-06-24 12:50:23.014 App2[491:907] critical: 13 libobjc.A.dylib 0x39f00a65 + 128 
2016-06-24 12:50:23.018 App2[491:907] critical: 14 libc++abi.dylib 0x3994d07b + 78 
2016-06-24 12:50:23.025 App2[491:907] critical: 15 libc++abi.dylib 0x3994d114 + 19 
2016-06-24 12:50:23.029 App2[491:907] critical: 16 libc++abi.dylib 0x3994e599 cxa_current_exception_type + 0 
2016-06-24 12:50:23.032 App2[491:907] critical: 17 libobjc.A.dylib 0x39f009d1 objc_exception_rethrow + 12 
2016-06-24 12:50:23.036 App2[491:907] critical: 18 CoreFoundation 0x321eaf21 CFRunLoopRunSpecific + 456 
2016-06-24 12:50:23.039 App2[491:907] critical: 19 CoreFoundation 0x321ead49 CFRunLoopRunInMode + 104 
2016-06-24 12:50:23.043 App2[491:907] critical: 20 UIKit 0x34103485 + 668 
2016-06-24 12:50:23.046 App2[491:907] critical: 21 UIKit 0x34100301 UIApplicationMain + 1120 
2016-06-24 12:50:23.054 App2[491:907] critical: 22 App2 0x002a6fec wrapper_managed_to_native_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr + 252 
2016-06-24 12:50:23.057 App2[491:907] critical: 23 App2 0x0026f8a4 UIKit_UIApplication_Main_string___intptr_intptr + 52 
2016-06-24 12:50:23.064 App2[491:907] critical: 24 App2 0x0026f864 UIKit_UIApplication_Main_string___string_string + 204 
2016-06-24 12:50:23.069 App2[491:907] critical: 25 App2 0x0010a8e8 App2_Application_Main_string + 152 
2016-06-24 12:50:23.073 App2[491:907] critical: 26 App2 0x00223870 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 256 
2016-06-24 12:50:23.078 App2[491:907] critical: 27 App2 0x0005842b mono_jit_runtime_invoke + 1562 
2016-06-24 12:50:23.083 App2[491:907] critical: 28 App2 0x000991e7 mono_runtime_invoke + 102 
2016-06-24 12:50:23.087 App2[491:907] critical: 29 App2 0x0009c799 mono_runtime_exec_main + 284 
2016-06-24 12:50:23.092 App2[491:907] critical: 30 App2 0x0010a4c0 xamarin_main + 2232 
2016-06-24 12:50:23.096 App2[491:907] critical: 31 App2 0x002b6d6d main + 112 
2016-06-24 12:50:23.101 App2[491:907] critical: 32 libdyld.dylib 0x3a337b20 + 0 
2016-06-24 12:50:23.106 App2[491:907] critical: Got a SIGSEGV while executing native code. This usually indicates 
a fatal error in the mono runtime or one of the native libraries 
used by your application. 

답변

1

+ [AVCaptureDevice authorizationStatusForMediaType :] : 인식 할 수없는 선택기 클래스 0x3a49c070

장치에서 실행되는 아이폰 OS의 버전은 무엇입니까로 전송?

배포 대상으로 iOS 6.1을 선택하십시오.

iOS 7.0에 추가 되었기 때문에 배치 대상과 마찬가지로 6.1 일 경우이 API를 호출 할 수 없기 때문에이 API를 호출 할 수 없습니다.

iOS 7.0 이상에서 조건부로 호출해야합니다.

if (UIDevice.CurrentDevice.CheckSystemVersion (7,0)) { 
    AVCaptureDevice.GetAuthorizationStatus (AVMediaType.Video); 
} 

어셈블리 브라우저는 특성에 API에 필요한 최소 버전을 표시 할 수 있습니다.

+0

감사합니다. 이것은 많은 것을 설명합니다. 내 장치는 iOS 6.1을 실행하는 3GS입니다. 왜 AVCaptureDevice를 iOS 4 이상에서 사용할 수 있는지 궁금합니다. AVCaptureDevice.GetAuthorizationStatus는 7+에서만 사용할 수 있습니다. iOS 6에서 카메라 액세스를 확인할 필요가 없다는 뜻입니까? – Sylvain

+0

유형은'AVCaptureDevice'와 마찬가지로 새로운 iOS SDK 릴리즈가있는 추가 API를 얻는 경우가 있습니다 (일부 API는 더 이상 사용되지 않습니다). iOS 6.x가 카메라 인증을 어떻게 처리했는지 기억하지 못합니다 ... 너무 길었습니다. – poupou

+0

그동안 나는 아이폰 OS 6에서 앱 내부에서 체크하지 않았다고 말하는 몇 가지 코멘트를 발견했다 ... 나는 그것을 시도 할 것이다 ... 다시 한번 감사드립니다 ... – Sylvain