【问题标题】:How can I open calendar .ics files in ios?如何在 ios 中打开日历 .ics 文件?
【发布时间】:2014-08-10 12:28:23
【问题描述】:

我正在尝试在我的应用中下载并打开 .ics 文件。

我发现了一些问题,这是我正在使用的一些代码

// NSString *path = [[NSBundle mainBundle] pathForResource:@"http://www.nmsd.wednet.edu//site/handlers/icalfeed.ashx?MIID=607" ofType:@"ics"];
NSURL *url = [NSURL fileURLWithPath:@"http://www.nmsd.wednet.edu//site/handlers/icalfeed.ashx?MIID=607"];
UIDocumentInteractionController *dc = [UIDocumentInteractionController interactionControllerWithURL:url];
dc.delegate = self;
[dc presentPreviewAnimated:YES];

什么都没有发生。完全没有错误。寻找一个库来实现这一点会更容易吗?

【问题讨论】:

  • 仅供参考 - 您的 http URL 不是文件 URL。 UIDocumentInteractionController 用于本地文件,而不是远程文件。
  • 下载 ics 文件后您真正希望发生什么?
  • @rmaddy 是的,我都试过了,我想在我的应用程序中实现日历功能。我正在尝试使用这些链接来填充本机日历。老实说,我不知道,我在正确的道路上吗?请指教

标签: ios objective-c icalendar


【解决方案1】:

如果您有指向远程.ics 文件的链接,请为Safari 准备它。

假设您有一个指向iCal 文件的链接:

"pl-dev2.office.org/events/sync.ics?t=90613b6c7f8". 

只需在链接中添加前缀webcal://

斯威夫特

let link = "webcal://pl-dev2.office/events/sync.ics?t=90613b6c7f8"

let webcal = NSURL(string: link)
UIApplication.sharedApplication().openURL(webcal)

Objective-C

NSString *link = "webcal://pl-dev2.office/events/sync.ics?t=90613b6c7f8"

NSUrl *webcal = [NSURL URLWithString:link];
[[UIApplication sharedApplication] openURL:webcal];

Safari 会在您的日历应用中为您同步它。

【讨论】:

  • 如何将http url改为webcal://??
  • calshow:// 用于从应用打开日历 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"calshow://"]];
  • 似乎没有其他方法可以使用所需的 ics 文件打开日历应用程序。请告诉我如何打开我从 app / UIWebView 下载的 ics 文件并显示日历应用程序显示下载的 ics 文件的内容..
  • 可行,但它使用 URL 作为日历名称。是否有任何查询参数我可以添加到 webcal url 以传递自定义日历名称,还是必须来自 ics 文件本身?
  • 但这要求您添加日历,但是如何从 .ics 文件在当前日历中添加事件? (在 swift 代码中执行与 Safari 在打开指向 .ics 文件的 URL 时执行的相同操作)
【解决方案2】:

您使用带有 URL 字符串的 NSURL fileURLWithPath 作为参数,尽管它需要文件路径。将其更改为NSURL URLWithString

【讨论】:

    【解决方案3】:

    @Bartłomiej Semańczyk 正在添加日历,如果您想添加活动,可以使用 SFSafariController 打开 url

    let link = "https://www.apple.com/v/apple-events/home/p/built/assets/event.ics?d=3213214324313"
    let url = URL(string: link)!
    let safariVC = SFSafariViewController(url: url)
    present(safariVC, animated: true, completion: nil)
    

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 2014-08-16
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多