2012-06-14 27 views
0

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

Spotify Mac应用程序通过其应用程序执行此操作,允许开发人员使用类似于上述//app/style.css方法的地址访问Spotify样式。当从应用程序内调用该方法时,将返回样式文件,而在应用程序之外调用该方法时,则会简单地启动该应用程序。

如何通过将Web视图位置设置为customProtocol://app/style.css将我的主应用程序包中的文件包含到Web视图中?

+0

什么问题吗? –

+0

如何通过将Web视图位置设置为'customProtocol:// app/style.css'或类似的东西将我的主应用程序包中的文件包含到Web视图中。 –

回答

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]; 
} 
+0

我会尝试这个,但我觉得像框架中的网页也是沙盒,让他们无法访问系统或其他应用程序的文件。我还没有检查过,所以我可能是错的。 –