Mobile/iOS

[iOS]Web <-> App통신

out of coding 2016. 3. 29. 16:42

iOS의 Web <-> App통신


1. App -> Web

1) 사용법

[webView stringByEvaluatingJavaScriptFromString:(Javascript명)];

2) 예제

    [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"callJavascriptFromObjectiveC('%@')", @"Example"]];

   

    3) Javascript

    function callJavascriptFromObjectiveC(text) {

alert('text : ' + text);

    }

    

2. Web -> App


1) 사용법

.h file

<UIWebViewDelegate> 선언

.m file

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

2) 예제

.h file

@interface ViewController : UIViewController <UIWebViewDelegate>

.m file

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

if([requestUrl hasPrefix:@"jscall://"]) {

        NSArray *components = [requestUrl componentsSeparatedByString:@"://"];

        NSString *functionName = [components objectAtIndex:1];

        

        if([self respondsToSelector:NSSelectorFromString(functionName)]) {

            SEL selector = NSSelectorFromString(functionName);

            IMP imp = [self methodForSelector:selector];

            void (*func)(id, SEL) = (void*)imp;

            func(self, selector);            

            return NO;

            }

        }

    return YES;

}

3) Javascript

function callObjectiveCFromJavascript(){

window.location="jscall://callObjectiveCFromJavascript";

        }

    

        callObjectiveCFromJavascript();


오늘도 즐거운 하루~