4

我在我的应用程序中使用 EventKit,并想找出日历所属的帐户。

iPhone 日历应用程序显示按帐户分组的所有日历,帐户名称例如“myname@me.com”或“Gmail myname”。我可以从哪里获得这些帐户名称?

我可以从中获取EKCalendars列表,EKEventStore并且可以获取每个日历标题,但我不知道从哪里获取帐户名称。这有官方的API吗?我还能如何检索这些信息?App Store 上的某些应用确实会显示帐户名称,因此必须有一种方法(也可以通过审批流程...)

谢谢,托马斯

更新: 我在其他地方发现了对私有财产的引用。在我自己开始寻找之前,有人知道该物业的名称是什么吗?

在其他地方,人们还建议解析description(包括帐户),但这不是一种非常安全或优雅的方式,所以我想避免这样做。

更新 2: 我确实发现有一个私有财产(及其名称),它似乎工作正常。

4

2 回答 2

2

我查看了 Apple 的文档,但似乎无法通过公共 API 获得帐户名。如果您使用私有财产,您的应用程序将立即被拒绝,因此我认为 App Store 上的其他应用程序使用描述解析方法。

我建议您向 Apple 发布错误报告,并请求他们通过公共 API 提供帐户名称。直到他们这样做(如果他们这样做),我认为如果您希望您的应用程序出现在 App Store 上,您唯一的选择是解析描述

于 2011-05-24T19:56:15.173 回答
1

从 iOS 5.0 开始,您可以从 EKCalendar 访问 EKSource。您可以获得该来源的名称和类型。

    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 : 交换 (TypeExchange)
  • BirthHotmail (只读) : Exchange (TypeExchange)
  • MyCoolAccountCal : Yahoo!‎ (TypeCalDAV)
  • 日历:默认(TypeLocal)生日:其他(TypeBirthdays)
  • 日历:john.doe@mycooldomain.fr (TypeExchange)
  • ArnoTest:Gmail (TypeCalDAV)
  • 联系人的生日和活动:Gmail (TypeCalDAV)
于 2014-02-06T13:27:41.813 回答