Получение информации об учетной записи для EKCalendar - PullRequest
4 голосов
/ 16 мая 2011

Я использую EventKit в своем приложении и хотел бы узнать, к какой учетной записи относится календарь.

Приложение iPhone Calendar отображает все календари, сгруппированные по учетным записям, с именем учетной записи, например, «myname @ me»..com 'или' Gmail myname '.Где я могу получить эти имена учетных записей?

Я могу получить список EKCalendar s из EKEventStore, и я могу получить название каждого календаря, но я не знаю, где можно получить имя учетной записи.,Есть ли официальный API для этого?Как еще я могу получить эту информацию?Некоторые приложения в App Store отображают имена учетных записей, поэтому должен быть способ (который также проскальзывает в процессе утверждения ...)

Спасибо, Томас

Обновление: Где-то еще я нашел ссылки на частную собственность.Прежде чем я сам начну искать это, кто-нибудь знает, как называется это свойство?

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

Обновление 2: Я обнаружил, что есть частная собственность (и ее имя), и она, кажется, работает нормально.

Ответы [ 2 ]

2 голосов
/ 24 мая 2011

Я просмотрел документацию Apple, и имя учетной записи, похоже, не доступно через общедоступный API.Ваше приложение будет немедленно отклонено, если вы используете частную собственность, поэтому я полагаю, что другие приложения в App Store используют метод анализа дескрипции.

Я предлагаю вам опубликовать отчет об ошибке в Apple и попросить их создать учетную записьимя доступно через публичный API.Пока они этого не сделают (если они это сделают), я думаю, что ваш единственный вариант - проанализировать описание, если вы хотите, чтобы ваше приложение в App Store

0 голосов
/ 06 февраля 2014

Начиная с iOS 5.0, вы можете получить доступ к EKSource из EKCalendar.Вы можете получить имя и тип этого источника.

    EKEventStore * eventStore = [[EKEventStore alloc] init];
    NSArray * calendars = [eventStore calendarsForEntityType:EKEntityTypeEvent];
    NSArray * typeNames = [[NSArray alloc] initWithObjects:@"TypeLocal",@"TypeExchange",@"TypeCalDAV",@"TypeMobileMe",@"TypeSubscribed",@"TypeBirthdays", nil];
    for (EKCalendar * calendar in calendars) {
        NSString * calendarTitle = calendar.title;
        EKSource * source = calendar.source;
        NSString * accountName = source.title;
        EKSourceType type = source.sourceType;
        NSLog(@"%@ : %@ (%@)", calendarTitle, accountName, typeNames[type]);
    }

Сгенерированный журнал выглядит следующим образом:

  • CalHotmail: Exchange (TypeExchange)
  • BirthHotmail (Чтениетолько): Exchange (TypeExchange)
  • MyCoolAccountCal: Yahoo! (TypeCalDAV)
  • Calendrier: Default (TypeLocal) Дни рождения: Другие (TypeBirthdays)
  • Calendrier: john.doe@ mycooldomain.fr (TypeExchange)
  • ArnoTest: Gmail (TypeCalDAV)
  • Дни рождения и события контактов: Gmail (TypeCalDAV)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...