iOS 10上的EKEventStore访问请求崩溃

时间:2016-09-30 21:02:06

标签: c# ios iphone xamarin ekeventstore

因此,我正在开发一个针对移动设备的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.
=================================================================

1 个答案:

答案 0 :(得分:5)

对于事件,您需要在info.plist中添加正确的密钥,在这种情况下将是NSCalendarsUsageDescription,其中值是您为什么要请求此类权限的简短描述。
希望这能解决你的问题,我有完全相同的问题(也是Xamarin),这解决了它。