GoogleCalendarのデータ読込の3ステップ
イベントデータ取得までの呼び出しメソッド
1.全カレンダー情報取得をリクエスト
GDataServiceGoogleCalendar *gDataSrviceCalendar; // 初期化を行い、ユーザIDとパスワードをセット gDataSrviceCalendar = [[GDataServiceGoogleCalendar alloc] init]; [gDataSrviceCalendar setUserCredentialsWithUsername:Username password:Password]; // 取得条件を設定 [gDataSrviceCalendar setServiceShouldFollowNextLinks:YES]; [gDataSrviceCalendar setShouldServiceFeedsIgnoreUnknowns:YES]; // 全カレンダー情報取得をリクエスト GDataServiceTicket *ticket; ticket = [gDataSrviceCalendar fetchFeedWithURL:feedURL delegate:self didFinishSelector:@selector(ticket:finishedWithFeed:error:)]; // 取得処理が終了すると【ticket】メソッドが呼び出される
2.カレンダー情報リストから、それぞれのカレンダーに属するイベント情報取得をリクエスト
-(void)ticket:(GDataServiceTicket *) ticket finishedWithFeed:(GDataFeedCalendar *)feed // 全カレンダー情報が「feed」変数にセットされて返される for (GDataEntryCalendar *calendar in [feed entries]){ // カレンダー情報を一つずつ取り出す // イベントを取得したいカレンダーのURL(alternateLink)を指定して、イベント情報取得クエリを作成 GDataQueryCalendar *query = [GDataQueryCalendar calendarQueryWithFeedURL:calendarURL]; // イベント情報取得クエリを指定してイベント情報取得リクエストを送る [gDataSrviceCalendar fetchFeedWithQuery:query delegate:self didFinishSelector:@selector(eventsTicket:finishedWithFeed:error:)]; // 取得処理が終了するとカレンダー毎に【eventsTicket】メソッドが順次呼び出される } }
3.イベント情報リストから、イベント情報を一つずつ取り出す
-(void) eventsTicket:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedCalendar *)feed error:(NSError *) error { // イベント情報が「feed」変数にセットされて返される // カレンダー名を取得 NSString *calendarTitle = [[feed title] stringValue]; // どのカレンダーのイベント情報か判断するために使う for (GDataEntryCalendarEvent *gDataEvent in [feed entries]) { // イベント情報を一つずつ取り出す // Get Event Infos m_EventData = [[EventData alloc] init]; GDataTextConstruct *titleTextConstruct = [gDataEvent title]; NSString *title = [titleTextConstruct stringValue]; // イベントの日時取得 NSArray *times = [gDataEvent times]; // *** イベントデータを取得する *** } }
これらのプロジェクトファイル一式はここ。
yuriken27/GoogleCalendarAccessTest · GitHub