用于打开具有特定事件ID的本机日历的URL方案

jee*_*yul 14 ios ekcalendar

起初,我知道这种方法没有公共API.


从iOS8本机日历窗口小部件中点击事件会启动具有特定事件的日历.所以,我可以猜测必须有一个URL方案.因为小部件和日历适用于每个沙箱,所以NSURL必须使用.


我从iPhoneDevWiki.net找到了一些线索.它说这calshow:x?eventid=id是一个打开特定事件的URL方案,它被使用SpringBoard.

由于idparam 的值没有明确描述,所以,我测试了这个url方案:

  • EKEvent.calendarItemIdentifier
  • EKEvent.externalCalendarItemIdentifier
  • EKEvent.eventIdentifier

他们都没有工作.

维基可能已经过时了.

是否有人可以使用本机日历打开或显示特定事件?


在Stack Overflow中找到了类似问题的另一条线索.

calshow:计划.

它似乎用于具有特定日期的打开日历.它可以用作calshow:[time interval since reference date],参考日期似乎是1/1/2001

它可用于显示事件而不是打开它.但是,当日历未在后台运行时,此方法也不起作用.


而且我还发现该x-apple-calevent方案也可以启动日历,但我根本不知道细节(路径和参数).


任何线索和意见都将受到欢迎.

最好的Regars.

kid*_*oca 0

我已经能够使用该calshow:x?eventid=id方案

  • 提供自参考日期(2001 年 1 月)以来的时间戳(秒)x
  • 提供一个数值eventid

我已经能够使用这些参数在模拟器上打开事件详细信息calshow:685409700?eventid=99

iPhone 模拟器显示系统日历 - 事件视图

正如您所看到的,日期信息是从 推断出来的,timestamp在本例中错误地显示感恩节是 9 月 21 日

降低eventid12、 至少20公开联系人相关信息,例如使用calshow:685409700?eventid=1将其调出

显示联系信息的 iPhone 模拟器


使用非数字 ID 或高于 200 的数字似乎不起作用,它们只是打开特定时间戳的日视图

eventid参数似乎使用一些数字索引而不是实际的事件/日历项目标识符

我意外地设法使 url 方案匹配某些内容,因为id我尝试使用开头16,所以我猜它被解析为数字16

我还能够通过使用eventidBetween100和来匹配从我的应用程序创建的一些事件150

除此之外我不知道映射到id什么eventid