본문 바로가기
아빠방/Tech

IOS UIWebView와 Web의 연결

by 탱탱이아빠 2016. 8. 29.

최근 UIWebView를 통해 웹과 앱을 연결하는 일이 몇가지 생겨서 관련된 정보를 기술합니다.






우선... 웹에서는 앱을 아래와 같이 호출합니다.


function nativeAppCall(obj){

var os = checkMobile();

if( os == "android"){

window.nativeApp.setSearchBarCodeText(obj);

}else if( os == "ios" ){

window.location = "callmyapp:cmd=showCam&gbn=" + obj;

}

}


자바스크립트는 안드로이드와 IOS를 모두 호출합니다만... 실제 여기서는 IOS만을 사용합니다.


이렇게 호출된 callmyapp은 xcode에서 아래처럼 사용합니다.


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

    

    NSURL *URL = [request URL];

    //----------------------------------------------------------------------

    // Camera Handling : Start

    //----------------------------------------------------------------------

    if ([[URL scheme] isEqualToString:@"callmyapp"]) {

        

        NSString *urlString = [[request URL] absoluteString];

        NSArray *urlParts = [urlString componentsSeparatedByString:@":"];

        

        if ([urlParts count] > 1) {

            

            ZBarReaderViewController *reader = [ZBarReaderViewController new];

            

            reader = [ZBarReaderViewController new];

            reader.readerDelegate = self;

            

            ZBarImageScanner *scanner = reader.scanner;

            

            [scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];

            [self presentModalViewController:reader animated:YES];

        }

    }

    //----------------------------------------------------------------------

    // Camera Handling : End

    //----------------------------------------------------------------------

}


위 코드는 ZBar의 QR코드와 바코드 리더를 호출하는 역할을 하게 됩니다.


이후 QR코드 리더를 통해 전달받은 데이터는 아래와 같은 코드를 통해 웹에 전달합니다.


//----------------------------------------------------------------------

// Barcode Data Return : Start

//----------------------------------------------------------------------

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    id<NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults];


    ZBarSymbol *symbol = nil;

    for(symbol in results)

        break;

    

    [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setBarcodeToSearchText('search','\%@\');", symbol.data]];

    [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setBarcodeToSearchText('authCodeNo','\%@\');", symbol.data]];

    

    [self dismissModalViewControllerAnimated:YES];

}

//----------------------------------------------------------------------

// Barcode Data Return : End

//----------------------------------------------------------------------

반응형

'아빠방 > Tech' 카테고리의 다른 글

산출물 작성시 유용한 쿼리  (0) 2016.09.22
UIWebView facebook 인증 연결  (0) 2016.08.30
UIWebView에 QR코드 리더 넣기  (0) 2016.08.26
테이블 목록 및 데이터 건수  (0) 2016.05.26
간단한 페이징 쿼리  (0) 2016.04.16

댓글