17

At first, I knew there is no public APIs for this approach.


Tapping an event from iOS8 native calendar widget launches calendar with specific event. So, I can guess that there must be a URL scheme for it. Because widget and calendar works on each sand box, So, the NSURL must be used.


I found a some clues from iPhoneDevWiki.net. It says that calshow:x?eventid=id is an URL scheme that opens specific event, and it is used by SpringBoard.

Since the value of the id param is not described clear, So, I have tested this url scheme with:

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

None of them did work.

The wiki may be outdated.

Is there anyone who could opens or reveal the specific event with native calendar?


And I found another clue from similar questions in Stack Overflow.

The calshow: scheme.

It seems to used for open calendar with specific date. It can be used as calshow:[time interval since reference date], the reference date seems to 1/1/2001

It can be used to reveal an event rather than opens it. However, when the calendar is not running on background, This approach also not works.


And I also found that the x-apple-calevent scheme can launches calendar also , But I don't know the details(path and params) at all.


Any clues and opinions will be welcomed.

Best Regars.

Eric Aya
  • 69,473
  • 35
  • 181
  • 253
jeeeyul
  • 3,727
  • 1
  • 24
  • 37
  • 2
    Have you find any solution to this ? – Zell B. Jul 19 '16 at 11:01
  • I'd also be interested in a solution, if you found one. I know it's possible to open a specific event in Calendar.app, because Omnifocus does it, but I also wasn't able to get it to work with the properties you mentioned. I think it's the url scheme that must be different... – cdf1982 Aug 21 '16 at 19:19
  • hey @jeeeyul did you find any solution? i do have same problem [here](http://stackoverflow.com/q/39846024/3308174) – Pratik Jamariya Oct 04 '16 at 07:39

1 Answers1

0

I've been able to use the calshow:x?eventid=id scheme by

  • provide a timestamp (seconds) since reference date (Jan 2001) for x
  • provide a numeric value for eventid

I've been able to open event details on a simulator using these arguments calshow:685409700?eventid=99.

iPhone Simulator showing System Calendar - Event View

As you can see date information is inferred from the timestamp and in this case is incorrectly showing that Thanksgiving is on Sep 21st

Lower eventid like 1, 2, up to at least 20 open contact related information, for example using calshow:685409700?eventid=1 brings this up

iPhone Simulator showing contact information


Using non numeric IDs or numbers higher than 200 doesn't seem to work and they just open the Day View for the specific timestamp

The eventid parameter seems to use some numeric indexing and not actual event/calendar item identifiers

I've accidentally managed to make the url scheme match something, because the id I tried to use started with 16, so I guess it was parsed to the number 16

I've also been able to match some of the events created from my app by using eventid between 100 and 150

Other than that I have no clue about what id the eventid is being mapped to

kidroca
  • 3,480
  • 2
  • 27
  • 44