2012-10-16 3 views
0

js 및 CSS 애셋을 사용하는 iOS 웹보기에 원격 웹 페이지를로드하고 있습니다. 특히 3G 네트워크에서 성능을 향상시키기 위해 iOS 기기의 로컬 파일에서 이러한 애셋을 호출하고 싶습니다.로컬 리소스를 사용하여 iOS에서 웹보기의 속도를 향상시키는 방법은 무엇입니까?

iOS 앱을 지원하는 웹 사이트는 iOS 앱뿐만 아니라 휴대 전화 브라우저에서도 사용되므로 내 URL 접두어 (myurl : //)를 등록하기 위해 NSURLRequest를 서브 클래 싱하는 것이 이상적이지 않습니다. 이 방법은 다음과 같은 코드로 동일한 컨트롤러 구현에서 호출

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSURL *url = [request URL]; 
    NSString *hostname = [url host]; 

    if (![hostname hasSuffix:@".mysite.com"] && navigationType == UIWebViewNavigationTypeLinkClicked) { 
     [[UIApplication sharedApplication] openURL:url]; 
     return NO; 
    } 
    return YES; 
} 

: 내가 검토 한

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // ... 
    webView.delegate = self; 

    // ... 

     NSURL *url = [[NSURL alloc] initWithString:([path length] > 0 ? path : @"http://mysite.com/mobile/index")]; 
     NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
     [webView loadRequest:request]; 

    // ... 

} 

나는 이미 내 도메인 외부 URL에 대한 mobileSafari을 실행 코드가 몇 가지 다른 질문 (How to use an iPhone webView with an external HTML that references local images?, Dynamically loading javascript files in UIWebView with local cache not working, iOS WebView remote html with local image files, Using local resources in an iPhone webview)하지만 모두 내 문제의 핵심 요소가 누락 된 것 같습니다. 그 분별있는 방법이라면 내가 fileToLoad NSBundle는 웹보기의 loadRequest로, 그 이후 URL을 기대하고 있다고 통과하는 방법에 붙어,

if ([url isEqualToString:@"http://path-to-cdn.com/jquery-1.8.2.min.js"]) { 
    fileToLoad = [[NSBundle mainBundle] pathForResource:@"jquery-1.8.2.min" ofType:@"js"]; 
} 

:

첫 번째 링크는 유망 무언가의 시작을 가지고 .

답변

0

나는 (이것은 아직

if (![hostname hasSuffix:@".mysite.com"] && navigationType == UIWebViewNavigationTypeLinkClicked) { 

    NSString *urlString = [url absoluteString]; 
    if ([urlString isEqualToString:@"http://path-to-cdn.com/jquery-1.8.2.min.js"]) { 
     NSString *tempurl = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"js/jquery-1.8.2.min.js"]; 
     [webView loadRequest:[NSMutableURLRequest requestWithURL:tempurl]]; 
    } else { 
     [[UIApplication sharedApplication] openURL:url]; 
    } 
    return NO; 
} 
return YES; 

내가 아직 작동하지 않습니다 ... 나는과 같이, URL로 stringByAppendingPathComponent의 출력을 사용할 수 실현 오른쪽 길을 생각 해요 원격 URL로드)하지만 나는 올바른 방향으로 가고 있다고 생각합니다.

+0

이 프로젝트를 가이드로 삼아 중요한 발전을 이루고 있습니다. http://www.cocoawithlove.com/2010/09/substituting-local-data-for-remote.html – user1214836

+0

좋아요, 코코아 쓰 로브 자원으로 저 자신의 질문에 대답 할 수있었습니다. – user1214836