我的 iPhone 应用程序(支持 iOS 6+)有一个 Web 视图,其中列出了每个事件的“添加到日历”按钮。“添加到日历”按钮是指向服务器上 .ics 文件的超链接。我已修改 IIS 以使用“文本/日历”作为 .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]];
}
帮助!!!