如何接受/拒绝EKEvent邀请?

时间:2018-01-09 14:31:47

标签: ios swift ekevent ekeventstore ekeventkit

我想允许我的用户在我的应用中接受/拒绝会议邀请。

我认为我需要的是以某种方式更新EKParticipantStatus,但看起来无法更新。

  

Apple Docs:Event Kit无法将参与者添加到活动中,也无法更改参与者   信息

在这个https://github.com/rails/rails/commit/e8682c5bf051517b0b265e446aa1a7eccfd47bf7有人建议带来我尝试过的本机EventKitUI:

  class CalendarViewController: UIViewController, EKEventViewDelegate {

        // .....

        let eventController = EKEventViewController()
        guard let eventWithIdentifier = MeetingsFetcher.eventStoreClass.event(withIdentifier: meeting.UUID) else {
            return nil
        }
        eventController.delegate = self
        eventController.event = eventWithIdentifier
        eventController.allowsEditing = true
        eventController.allowsCalendarPreview = true

        let navCon = UINavigationController(rootViewController: eventController)

        // customizing the toolbar where the accept/maybe/decline buttons appear
        navCon.toolbar.isTranslucent = false
        navCon.toolbar.tintColor = .blueGreen
        navCon.toolbar.backgroundColor = .coolWhite10

        // customizing the nav bar where the OK button appears
        navCon.navigationBar.callinAppearence()
        present(navCon, animated: true, completion: nil)

        // .....

        // view gets dismissed, so it does detects the action, but no effect
        func eventViewController(_ controller: EKEventViewController, didCompleteWith action: EKEventViewAction) {
              controller.dismiss(animated: true, completion: nil)
        }

本机用户界面显示非常好,但按钮在本机日历中没有任何效果。

stackOverflow question

我错过了什么,或者这是不可能的?如果无法保存任何内容,为什么他们会允许与这些按钮进行交互?

谢谢!

PD:我在info.plist中有这些权限:

  • 隐私 - 日历使用说明
  • 隐私 - 联系人使用说明
  • 隐私 - 提醒使用说明

更新:

请注意 EKEventEditViewController不是我想要的。此屏幕不允许我接受或拒绝该事件,它只允许我编辑详细信息。

enter image description here

1 个答案:

答案 0 :(得分:0)

要允许用户创建,编辑或删除事件,请使用EKEventEditViewDelegate协议。

let eventController = EKEventViewController()
guard let eventWithIdentifier = MeetingsFetcher.eventStoreClass.event(withIdentifier: meeting.UUID) else {
                return nil
            }
eventController.delegate = self
eventController.event = eventWithIdentifier
eventController.editViewDelegate = self
...

CalendarViewController类必须符合EKEventEditViewDelegate协议,并且必须实现eventEditViewController方法来关闭模态视图控制器,如下所示:

func eventEditViewController(_ controller: EKEventEditViewController, 
             didCompleteWith action: EKEventEditViewAction) {

    switch (action) {
        case EKEventEditViewActionCanceled:
        case EKEventEditViewActionSaved:
        ...
    }

}