iPhone - 从协议请求访问文件

时间:2012-06-14 19:15:00

标签: iphone ios file protocols

我正在构建一个iPhone应用程序,我正在尝试使用嵌入内容的Web视图,并且我正在尝试从Web视图从应用程序协议请求文件时返回一个文件。例如,protocol://app/style.css将返回Application Bundle中style.css的内容,而protocol://documents/folder/image.png将从应用程序文档目录中访问文件folder/image.png

Spotify Mac应用程序使用他们的应用程序,允许开发人员使用类似于上面//app/style.css方法的地址访问Spotify样式。当从app中调用该方法时,将返回样式文件,而当在应用程序外部调用时,则只需启动应用程序。

如何将网络视图位置设置为customProtocol://app/style.css,将主应用程序包中的文件包含到网页视图中?

1 个答案:

答案 0 :(得分:0)

你可以使用JS替换函数,用实际路径字符串

替换protocol://

设置webView.delegate = self; 然后在webViewDidFinishLoad中用实际路径替换protocol://

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //Get the real path
    NSString *exactPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Document/CorrectPath/"];

    //In head replace protocol with real path
    NSString *js = [NSString stringWithFormat:@"document.head.innerHTML = document.head.innerHTML.replace('protocol://','%@')", exactPath];

    //Execute javascript replace on head
    [webView stringByEvaluatingJavaScriptFromString:js];
}