2013-04-29 1 views
0

Gmail 또는 Yahoo!에 로그인 한 후 JSON URL을 확인하려고하지만 조건이 실패하면 아래 코드를 시도합니다.ios - ios에서 자바 스크립트를 호출하는 방법은 무엇입니까?

그 올바른 선언 방법은? javascript을 어떻게 선언할까요?

나는이 링크를하고있어,해야 그것을 http://www.stevesaxon.me/posts/2011/window-external-notify-in-ios-uiwebview/

- (BOOL)webView:(UIWebView *)webView 
shouldStartLoadWithRequest:(NSURLRequest *)request 
navigationType:(UIWebViewNavigationType)navigationType 

{ 
    //_url = [[NSURL alloc] initWithString:websiteUrl]; 
    _url = [[NSURL alloc] initWithString:@"JSON URL"]; 
    if(_url) 
    { 

     if([_url isEqual:[request URL]]) 
     { 
      return YES; 
     } 

     [_url release]; 
    } 

    _url = [[request URL] retain]; 
    NSString* scheme = [_url scheme]; 

    //Condition fails here after logged in 

    if([scheme isEqualToString:@"acs"]) 
    { 
     // parse the JSON URL parameter into a dictionary 
     NSDictionary* pairs = [self parsePairs:[_url absoluteString]]; 
     if(pairs) 
     { 
      WACloudAccessToken* accessToken; 
      accessToken = [[WACloudAccessToken alloc] initWithDictionary:pairs]; 
      [WACloudAccessControlClient setToken:accessToken]; 

      [self dismissModalViewControllerAnimated:YES]; 
     } 

     return NO; 
    } 

    [NSURLConnection connectionWithRequest:request delegate:self]; 

    return NO; 

} 



- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

{ 
    if(_data) 
    { 
     NSString* content = [[NSString alloc] initWithData:_data 
                encoding:NSUTF8StringEncoding]; 

     [_data release]; 
     _data = nil; 

     NSString *jsString = @"window.external =\ 
     {\ 
     'Notify': function(s) { document.location = 'acs://settoken?token=' + s; },\ 
     'notify': function(s) { document.location = 'acs://settoken?token=' + s; }\ 
     }"; 

     content = [jsString stringByAppendingString:content]; 

     //NSURL *url = [[NSURL alloc] initWithString:websiteUrl]; 
     NSURL *url = [[NSURL alloc] initWithString:@"JSON URL"]; 
     [webView loadHTMLString:content baseURL:url]; 
    } 

} 
+0

첫 번째 블록의 시작 부분에 {{_url = [[NSURL alloc] initWithString : @ "JSON URL"];}} 부분이 없습니다. 왜 거기에 그걸 맡기고 있니? – Amandir

+0

URL은 Windows Azure에 등록되어 있습니다. 죄송합니다. 그 URL을 공유 할 수있는 권한이 없으므로 "JSON URL"을 부여한 것입니다. –

답변

1
 NSString *jsString = @"window.external =\ 
     {\ 
     'Notify': function(s) { document.location = 'acs://settoken?token=' + s; },\ 
     'notify': function(s) { document.location = 'acs://settoken?token=' + s; }\ 
     }"; 

를 통해 이동하십시오 :

 NSString *jsString = @"<script type='text/javascript'>\ 
     window.external =\ 
     {\ 
     'Notify': function(s) { document.location = 'acs://settoken?token=' + s; },\ 
     'notify': function(s) { document.location = 'acs://settoken?token=' + s; }\ 
     }\ 
     </script>"; 

, BTW 피상적 인 눈은 메모리 관리 몇 가지 문제를 보여줍니다 (_url를 누출되면 content이 누출 됨). 수동 메모리 관리를 처리하는 방법을 잘 모르는 경우 ARC (Automatic Reference Counting)를 설정하는 것이 좋습니다.

+0

감사합니다. MarOux에게 감사드립니다. –