30.05.2012

iOS: Kalendereinträge aus einer WebView

von Philipp Honegger

Mit einer UIWebView lassen sich beim Erstellen von iOS-Apps einfach Inhalte in die App laden (z.B. via CMS). Man kann auch Funktionen des iPhones oder des iPads via URL in der UIWebView ansteuern. So können zum Beispiel Einträge in den Kalender via URL gemacht werden.

Dazu definiert man in seinem Content Management System mit einem eigenen Protokoll (z.B. addcal://), welche Links den Kalender befüllen sollen. Startzeit, Endzeit und andere Informationen werden per URL-Parameter an die App geliefert. Im ViewController wird geprüft, wie die URL, die auf der CMS-Seite in der UIWebView angelickt wird, aussieht. Gehört die URL z.B. nicht zum eigentlichen CMS-Inhalt, kann so auf dem iOS-Gerät der Browser geöffnet werden. Bei der Prüfung der URL kann auch direkt das Protokoll (scheme) geprüft werden. Wenn also ein Link mit addcal:// beginnt, wird die Funktion (addevent) zum Eintrag eines Kalenderereignisses aufgerufen:

…

if ([scheme isEqualToString:@“addcal“]) {

  [webView stopLoading];

  [self addevent:url];

  return NO;

}

…

Dabei wird die URL an die Funktion übergeben, welche dann die entsprechenden Parameter ausliest und den Kalendereintrag macht. Mit dem EventKit.framework kann das Eintragen eines Ereignisses in den Kalender wie folgt geschehen:

...

EKEventStore *eventDB = [[EKEventStore alloc] init];

EKEvent *event = [EKEvent eventWithEventStore:eventDB];

event.title = @”Titel”;

event.startDate = [Datum1];

event.endDate = [Datum2];

event.location = @”Ort”;

 

[event setCalendar:[eventDB defaultCalendarForNewEvents]]; NSError *err;

[eventDB saveEvent: event span:EKSpanThisEvent error:&err];

 

if (err == 0) {

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@“Titel“ message:@"Die 
Veranstaltung wurde im Kalender eingetragen" delegate:nil cancelButtonTitle:@"OK" 
otherButtonTitles:nil];

[alert show];

}

...

Meier + Cie AG
SOBAG
Vordergasse 58
8201 Schaffhausen

Tel. +41 52 633 35 55
E-Mail: infosobagch

Unsere Portale:

nordagenda.ch schaffhausen.ch