4

アプリで EventKit を使用しており、カレンダーがどのアカウントに属しているかを調べたいと考えています。

iPhone カレンダー アプリには、すべてのカレンダーがアカウント別にグループ化されて表示されます。アカウント名は、たとえば「myname@me.com」または「Gmail myname」です。これらのアカウント名はどこから取得できますか?

EKCalendarから のリストを取得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 : Exchange (TypeExchange)
  • BirthHotmail (読み取り専用) : Exchange (TypeExchange)
  • MyCoolAccountCal : Yahoo! (TypeCalDAV)
  • Calendrier : Default (TypeLocal) Birthdays : その他 (TypeBirthdays)
  • Calendrier : john.doe@mycooldomain.fr (TypeExchange)
  • ArnoTest : Gmail (TypeCalDAV)
  • 連絡先の誕生日とイベント: Gmail (TypeCalDAV)
于 2014-02-06T13:27:41.813 に答える