Monotouch - добавить событие в календарь iphone из моего приложения - PullRequest
2 голосов
/ 03 марта 2010

возможно ли мое приложение программно добавлять события (с разрешения пользователя) в календарь iphones?

ура

ш: //

Ответы [ 4 ]

5 голосов
/ 28 июня 2010

Он доступен в iPhone 4 SDK, поэтому в Monotouch. Взгляните на EKEventStore и EKEvent. Вот документы Apple .

Вот пример из страницы фрагментов Я держу:

public void CalendarEvents()
{
    EKEventStore store = new EKEventStore();
    EKCalendar calendar = store.DefaultCalendarForNewEvents;

    // Query the event
    if (calendar != null)
    {
        // Searches for every event in the next year
        NSPredicate predicate = store.PredicateForEvents(NSDate.Now,DateTime.Now.AddDays(360),new EKCalendar[] {calendar});

        store.EnumerateEvents(predicate, delegate(EKEvent currentEvent, ref bool stop)
        {
            // Perform your check for an event type
        });


        // Add a new event
        EKEvent newEvent = EKEvent.FromStore(store);
        newEvent.Title = "Lunch at McDonalds";
        newEvent.Calendar = calendar;
        newEvent.StartDate = DateTime.Now.Today;
        newEvent.EndDate = DateTime.Now.Today.AddDays(1);
        newEvent.Availability = EKEventAvailability.Free;
        store.SaveEvent(newEvent, EKSpan.ThisEvent, new IntPtr());
    }
}
2 голосов
/ 10 марта 2010

В качестве альтернативы можно подумать о создании файла ICS, а затем о создании электронного письма (что можно сделать программно), а затем об отправке его пользователю или тому, кому он захочет. Вот как я обхожу эту проблему в своем коде. Прелесть этого в том, что у пользователя также нет ощущения, что ваше приложение будет управлять датами, т. Е. Если они изменят что-то в вашем приложении, вы отмените его и перебронируете вещи на лету.

1 голос
/ 03 марта 2010

Это невозможно в официальном API iPhone, поэтому я сомневаюсь, что это возможно с помощью моно касания.

0 голосов
/ 03 марта 2010

Невозможно напрямую с SDK. Вы можете попытаться заставить пользователя подписаться на онлайн-календарь, опубликованный на вашем сервере, а затем загрузить на него события, но вы, вероятно, столкнетесь с различными проблемами синхронизации.

...