从UIWebView或Calendar App中的文档目录打开一个ics文件

时间:2013-10-24 23:17:37

标签: ios uiwebview calendar icalendar

我的iPhone应用程序(支持iOS 6+)有一个Web视图,其中列出了每个事件的“添加到日历”按钮的事件。 “添加到日历”按钮是指向服务器上.ics文件的超链接。我已修改IIS以使用“text / calendar”作为.ics文件的MIME类型,并在我的UIWebView委托的shouldStartLoadWithRequest中使用以下代码:当请求URL包含“.ics”路径扩展名时

[[UIApplication sharedApplication] openURL:ics_url];

点击事件的“添加到日历”按钮时,我收到“无法订阅!事件名称!来自!环境路径!”。但是,我可以在设备的safari浏览器中打开该文件。

所以我尝试了一些没有效果的东西

1)将文件内容加载到NSData并尝试使用

在webview中加载数据

尝试了这个 -

[mywebview loadData:webData MIMEType:@"text/calendar" textEncodingName:@"utf-8" baseURL:RequestURL];

和 -

[myWebView loadData:webData MIMEType:@"text/calendar" textEncodingName:@"utf-8" baseURL:nil];

- 我可以在NSLog时查看文件内容。但webview:didFailLoadWithError被调用,没有任何加载。如果我将MIME类型更改为text / html,webview将加载vcalendar文件的文本。

2)下载文件内容并将其保存到文档目录并尝试打开文件

[webDataString writeToFile:pathToFileInDocumentDirectory atomically:NO encoding:4 error:&error];
[myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:pathToFileInDocumentDirectory]]];

- 再次,正确保存文件内容。我可以重新加载它们并查看内容。但是Web视图不会加载请求。

3)我甚至尝试过在canOpenUrl失败的(如预期的那样)

if ([[UIApplication sharedApplication] canOpenURL:[NSURL fileURLWithPath:pathToFileInDocumentDirectory]]) {
                    [[UIApplication sharedApplication] openURL:[NSURL fileURLWithPath:pathToFileInDocumentDirectory]];
                }

HELP !!!

1 个答案:

答案 0 :(得分:1)

问题似乎是网络摄像头(必须使用https,而不是)协议以及在IIS上进行MIME类型设置的方式的组合。幸运的是,我没有必要探索实现这一目标的其他方法。

[[UIApplication sharedApplication] openURL:ics_url]; 

上述似乎有效。