2013-12-19 9 views
9

Ich habe den Beispielcode zu öffnen Kalender aus meiner app gefunden, aber ich kann nicht zu einem bestimmten Zeitpunkt öffnen.URL-Schema für die Öffnung der nativen Kalender mit bestimmtem Datum

NSString* launchUrl = @"calshow://"; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: launchUrl]]; 

Gibt es eine Möglichkeit bestimmten Zeitpunkt am Ende der „lunchUrl“ string hinzufügen, damit, wenn der Benutzer den Kalender öffnet er das angegebene Datum angezeigt wird.

Ich habe bereits folgende Formate ausprobiert: @ "calshow: //? = 2013 12 19", @ "calshow: //? = 2013-12-19", @ "calshow: //? = 2013 + 12 + 19 ". Keiner von ihnen scheint für mich zu arbeiten ... irgendwelche Ideen, was ich bin ich falsch?

Antwort

25

ich mit diesem URL-Schema spielte ein wenig und fand den Weg, es zu tun. Die beiden wichtigsten Punkte sind:

  1. Verwenden Sie nicht "//" nach dem calshow:
  2. Pass Zeitstempel seit Stichtag (1 Jan 2001)

Hier ist der Code:

- (void)showCalendarOnDate:(NSDate *)date 
{ 
    // calc time interval since 1 January 2001, GMT 
    NSInteger interval = [date timeIntervalSinceReferenceDate]; 
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"calshow:%ld", interval]]; 
    [[UIApplication sharedApplication] openURL:url]; 
} 

Und das ist, wie ich es nennen:

// create some date and show the calendar with it 
- (IBAction)showCalendar:(id)sender 
{ 
    NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setDay:4]; 
    [comps setMonth:7]; 
    [comps setYear:2010]; 

    NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 

    [self showCalendarOnDate:[cal dateFromComponents:comps]]; 
} 

Vielleicht sollten Sie berücksichtigen, dass calshow: noch keine öffentliche URL-Schema ist, vielleicht würde Apple eine Stirnrunzeln auf sie auf diese Weise verwendet wird. Oder vielleicht würden sie nicht (ich habe das nicht erforscht).

+0

Hallo Andris, i obige Code verwendet haben, seine Arbeit perfekt für vergangenes Datum. Wenn ich ein zukünftiges Datum gebe, komme ich auf das aktuelle Datum zurück. Können Sie mir bitte einen Vorschlag für opent das Datum in der Zukunft geben. – Surfer

+0

ist dies möglich zu erhalten Datum von oben Standard-Kalender? – Alok

1

Dies funktioniert auf ios 8 - nur wenigen Sekunden hinzufügen seit 00.00 1. Januar 2001, so öffnen cal am 2. Jan 2001

NSString* launchUrl = @"calshow:86400"; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: launchUrl]]; 

ich RubyMotion bin mit, so sieht mein Code so etwas wie folgt aus:

url = NSURL.URLWithString("calshow:#{my_date - Time.new(2001,1,1)}") 
UIApplication.sharedApplication.openURL(url) 
0

Swift 3

UIApplication.shared.openURL(URL(string: "calshow:\(date.timeIntervalSinceReferenceDate)")!) 

Kommentare zu wHE Wenn Apple es erlaubt, dies zu nutzen, wäre das sehr zu empfehlen!

Verwandte Themen