在iOS 10上以编程方式邀请活动参与者

时间:2017-02-03 11:24:28

标签: ios server eventkit ekevent caldav

我现在已经使用Stackoverflow大约5年了,并且还没有感觉到需要问一个问题,我总是找到我需要通过以前的线程得到的答案。那只是改变了,我有一个问题,我真的无法弄清楚。这听起来很容易。

所以问题是;您如何在iOS 10下邀请与会者,或回复/拒绝iOS上的日历活动?请不要,我们不想提出一个EKEventViewController。我们希望在自己的用户界面中执行此操作。在iOS 9下,通过使用setValueForKey:强制EKAttendees对象进入EKParticipants数组,这是可能的。但是在iOS 10下,这会产生一个错误,即“与会者无法修改”#。

我在Apple上使用了技术支持部分,并得到了回复,认为这是不可能的。使用他们的API是不可能的。

我最接近答案的是使用IMIP(https://tools.ietf.org/html/rfc6047#section-2.2.1)。如果这是要走的路,有人可以帮助我如何实际设置它吗?我并不精通后端开发,我所有的前端都是如此,所以我不知道从哪里开始。

在GitHub上似乎也有一些CalDav服务器(https://github.com/mozilla-b2g/caldav),但我不确定它们有多好,或者确切地说你需要设置它们。

所以基本上,是否有人可以给孩子解释我们如何向日历活动发送好邀请。如果谷歌有不同的解决方案,那么苹果公司的账户(显然是引人注目的,但是实施方式)对于了解非常有用。

这是在我们自己的服务器上需要大量实现还是需要一些可靠的服务?那将是理想的。也许你应该建立一个,你在这里至少有一个客户: - )

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您无法使用EventKit修改与会者,但Apple已经告诉您:

  

我在Apple上使用了技术支持部分,并得到了回复,认为这是不可能的。使用他们的API是不可能的。

使用KVC访问内部对象的黑客攻击是一个黑客攻击,而不是文档化的API。毫不奇怪他们杀了那个。

那么日历邀请如何运作。这本身就是一个非常复杂的话题(考虑委托,资源预订,如房间等)。有一个完整的联盟(CalConnect),它们也有一个广泛的概述:Introduction to Internet Calendaring and Scheduling。 如果您对计划/日历软件非常认真,那么加入CalConnect进行互操作事件等可能会很有意义。

但是你想要一个孩子的解释'。我无法提供,但简短概述。

ITIP

iTIP是定义调度消息如何流动的标准,例如如果您向与会者发送消息,您的与会者会以接受/拒绝的方式回复,如果会议取消会发生什么,以及所有这些。

但它并未指定这些消息的传输方式。它只是组织者和参与者之间消息流如何运作的模型。

大多数'大'日历系统(Exchange,Google,像iCloud这样的CalDAV服务器)使用iTIP或至少非常相似的东西。

IMIP

iMIP是一个标准,它定义了如何使用电子邮件交换iTIP消息。假设您邀请某人使用iMIP,您将向他发送一封特殊的电子邮件,其中包含邀请的iCalendar有效负载。如果您的与会者接受,他的客户将通过包含该用户的电子邮件发回另一个iCalendar有效负载。

许多系统都支持iMIP,并且很长一段时间内,它几乎是在不同系统(例如Outlook和Lotus Notes)之间交换邀请的唯一方式。

但是:iOS电子邮件客户端不支持iMIP(与macOS或Outlook不同)。因此,如果有人向您的iOS设备发送了iMIP邀请,那么您将无法做出回应。 (现实更复杂,但基本上就是这样)

的CalDAV

CalDAV是一组围绕存储在服务器上的日历的标准。许多服务器都支持CalDAV。例如。 iCloud使用CalDAV。雅虎,谷歌等都支持CalDAV。重要的例外是Exchange,它不支持它。

在基本设置中,CalDAV只是一个商店。您可以使用HTTP来使用iCalendar格式存储(PUT)和检索(GET等)事件和待办事项。

此外,许多CalDAV服务器(例如iCloud)进行服务器端调度'。也就是说,如果您将事件存储到作为会议的服务器(具有与会者属性),则服务器将扇出邀请。如果与会者住在同一台服务器上,或者再次使用iMIP,则在内部。

交换

Exchange支持iMIP但不支持CalDAV。您通常使用自己的一个Web服务API访问它,例如ActiveSync或Exchange Web服务。我不是他们的专家,但我确信他们允许你创建邀请。 Exchange& Outlook有一个类似于邀请流的iTIP。

  

这是在我们自己的服务器上需要大量实现还是需要一些可靠的服务?

这实际上取决于您的要求和需求。您需要处理回复还是只发送一般事件? 如果您想托管日历存储,使用现有的CalDAV服务器可能是有意义的。

日历邀请是一个非常复杂的主题,您需要非常具体地根据实际需求找到解决方案。总的来说,2017年的可互操作邀请仍然存在,让我们说难以解决。

P.S。:由于你现在已经使用StackOverflow大约5年了,你应该知道这个问题太宽泛了。

相关问题