objective-c - メールからアプリ起動 - カスタムurlスキーム 廃止




特定の日付でネイティブカレンダーを開くためのURLスキーム (3)

アプリからカレンダーを開くためのサンプルコードが見つかりましたが、特定の日に開くことができません。

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

ユーザーがカレンダーを開いたときに特定の日付を表示するように、 "lunchUrl"文字列の末尾に特定の日付を追加する方法はありますか。

@ "calshow://?= 2013 12 19"、@ "calshow://?= 2013-12-19"、@ "calshow://?= 2013 + 12 + 19"の形式を既に試しました。 。 これらのどれも私のために働くようではありません...私が何を間違っているのですか?



スイフト3

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

Appleがこれを使用することを許可しているかどうかについてのコメントはありがたいです!


私はこのURLスキームで少し遊んでそれを行う方法を見つけました。 主な2つのポイントは以下のとおりです。

  1. calshow:後に "//"を使用しないでくださいcalshow:
  2. 参照日からのタイムスタンプを渡す(2001年1月1日)

これがコードです:

- (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];
}

そしてこれが私の呼称です。

// 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]];
}

calshow:は一般的なURLスキームではないことを考慮に入れる必要があるかもしれません。そのため、Appleはこの方法でそれを使用することに眉をひそめてしまうでしょう。 それともそうでないかもしれません(私はそれを研究していません)。





icalendar