因此,我正在开发一个针对移动设备的Xamarin项目,并且我正在使用EKEventStore API来创建事件,并且它在iOS 8和9上运行良好。 但是在iOS 10上请求EKEVentStore访问时出现了问题。
以下代码在iOS 8和9上运行正常,但在iOS 10上崩溃并没有给出此错误的特定消息。
Apple似乎已经改变了在iOS 10中收集此权限的内容。
有人有同样的问题或知道一些有助于解决它的问题吗?
谢谢!
EKEntityType type = EKEntityType.Event;
Store = new EKEventStore();
EKAuthorizationStatus status = EKEventStore.GetAuthorizationStatus(type);
if (status != EKAuthorizationStatus.Authorized)
{
if (status == EKAuthorizationStatus.NotDetermined)
{
Store.RequestAccess(type, (bool granted, NSError error) =>
{
//Crashes before entering here
});
return;
}
else
{
//Denied
return;
}
}
输出:
2016-09-30 17:16:25.739 MyApp[3156:115989] critical: Native stacktrace:
2016-09-30 17:16:25.740 MyApp[3156:115989] critical: 0 libmonosgen-2.0.dylib 0x0524e64d mono_handle_native_sigsegv + 317
2016-09-30 17:16:25.741 MyApp[3156:115989] critical: 1 libmonosgen-2.0.dylib 0x052a6321 sigabrt_signal_handler + 161
2016-09-30 17:16:25.741 MyApp[3156:115989] critical: 2 libsystem_platform.dylib 0x07205ebb _sigtramp + 43
2016-09-30 17:16:25.742 MyApp[3156:115989] critical: 3 ??? 0xffffffff 0x0 + 4294967295
2016-09-30 17:16:25.742 MyApp[3156:115989] critical: 4 libsystem_kernel.dylib 0x071e28bc abort_with_payload + 38
2016-09-30 17:16:25.743 MyApp[3156:115989] critical: 5 TCC 0x003ab621 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 236
2016-09-30 17:16:25.743 MyApp[3156:115989] critical: 6 TCC 0x003ab535 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 0
2016-09-30 17:16:25.743 MyApp[3156:115989] critical: 7 TCC 0x003ae6b9 __tccd_send_block_invoke + 292
2016-09-30 17:16:25.744 MyApp[3156:115989] critical: 8 libxpc.dylib 0x0718c79c _xpc_connection_reply_callout + 45
2016-09-30 17:16:25.745 MyApp[3156:115989] critical: 9 libxpc.dylib 0x07183a97 _xpc_connection_call_reply + 32
2016-09-30 17:16:25.746 MyApp[3156:115989] critical: 10 libdispatch.dylib 0x06ea36ef _dispatch_client_callout + 14
2016-09-30 17:16:25.746 MyApp[3156:115989] critical: 11 libdispatch.dylib 0x06e88c60 _dispatch_queue_override_invoke + 777
2016-09-30 17:16:25.747 MyApp[3156:115989] critical: 12 libdispatch.dylib 0x06e8a4bc _dispatch_root_queue_drain + 384
2016-09-30 17:16:25.748 MyApp[3156:115989] critical: 13 libdispatch.dylib 0x06e8a2d4 _dispatch_worker_thread3 + 134
2016-09-30 17:16:25.748 MyApp[3156:115989] critical: 14 libsystem_pthread.dylib 0x07215d6e _pthread_wqthread + 1070
2016-09-30 17:16:25.749 MyApp[3156:115989] critical: 15 libsystem_pthread.dylib 0x0721591a start_wqthread + 34
2016-09-30 17:16:25.750 MyApp[3156:115989] critical:
=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
答案 0 :(得分:5)
对于事件,您需要在info.plist中添加正确的密钥,在这种情况下将是NSCalendarsUsageDescription
,其中值是您为什么要请求此类权限的简短描述。
希望这能解决你的问题,我有完全相同的问题(也是Xamarin),这解决了它。