Is there a property that can be used to recognize calendars across devices?
According to the Apple docs, the "calendarIdentifier" property cannot be used:
A full sync with the calendar will lose this identifier. You should have a plan for dealing with a calendar whose identifier is no longer fetch-able by caching its other properties.
I'm looking for something similar to EKEvent.calendarItemExternalIdentifier, which is the same and unique across devices, but for Calendars.
Related
The calendarIdentifier property on EKCalendar says that a full sync will lose the identifier. How are we supposed to track a calendar then? It's not possible to just trust the name of the calendar because nothing prevents the user from changing the name. Not only that, nothing prevents two calendars from having the same name.
What I'm basically dealing with is that my Team object has an associated subscribed calendar, and I need a way to link those two together. The obvious solution is to store the calendarIdentifier in the Team object once it's created, but that won't work based on the documentation.
I've been trying to look for the answer to this quite some time.
Apple EventKit documentation isn't allowing changing meeting invitees programmatically since those properties in an EKEvent are read-only.
I'm trying to find a way to create a calendar meeting (not necessary using EventKit), adding invitees to the meeting and setting it programatically.
Any solution will be great,
Thanks!
As you already figured out you cannot currently write meeting fields in iOS (AFAIK EventKit is the only API giving you access to the calendar database on iOS).
If you know what kind of account it is (and get the credentials from the user), you could sidetrack EventKit and directly create meetings on the server. Eg using EWS when the account is on Exchange or CalDAV when the account is on iCloud or Apple Calendar Server etc.
And finally you always have the option to send out meeting invites via iMIP. Though you would still need to get the event into the users calendar (so that replies have a target). Depends on your useless whether this is useful.
I am developing a Calendar App. In which calendars can be create by user and also need the iCloud Syncing feature so that user can get the same calendars on his/her other device. Now according to Apple Document:
A full sync with the calendar will lose this identifier. You should have a plan for dealing with a calendar whose identifier is no longer fetchable by caching its other properties.
CalendarIdentifier property of EKCalendar is not reliable. And using other properties we can not differentiate the calendar as well that it is made by iOS Native Calendar App or My Calendar App. So I am stuck here and trying to find any reliable solution. But not able to find till now so please help me for this to get the solution. I will be thankful to you.
I am curious if there is a way to use the capabilities of EventKit - creating events, recurrence rules, etc. - without actually having to interface with the Calendar and Reminders apps?
A little more detail on requirements and such:
A user launches my app, and creates a new event-style entry there
The event-style entry does not actually appear in the Reminders or Calendar app
My app can still access the event-style entry and its related options
Note: There could/would be a preference option to make the created event-style entries visible in the Reminders/Calendar app.
Basically, to achieve the ability to use or not use the Reminders/Calendar apps, I don't want to have to write two versions of the code - one using my own EventKit-esque implementation - and the other using the real EventKit framework APIs.
Nope—EventKit is designed to work with the existing calendar stores that Calendar and Reminders have access to. If you want to create events that they don’t know about, you have to roll your own calendar store. You can certainly model it after EventKit for relative ease of switching between the two, but you’ll need to reimplement whatever parts of the API’s functionality you’re planning to use.
I have a question about EKCalendar's calendarIdentifier property. Is this ID unique on a global level, or on a per-source level? E.g. can I safely store the calendarIdentifier in my app to smoothly identify a calendar across all calendars in the event store (no matter what EKSource they're in) or do I also need to save the EKSource's identifier associated with the calendar?
I have a calendar selection feature in my app, and I want to safely store and load the correct calendar (within the correct account) upon app restart.
Thanks in advance.
From my personal experience and from the description of the property in EKCalendar's class reference it is local to the EKEventStore. An EKCalendar has an EKSource as it's property at the same level as the calendarIdentifier string.