오늘은 UIWebView를 통해 QR 코드 리더를 넣도록 해보겠습니다.
제가 사용한 QR코드 라이브러리는 ZBar 입니다.
이전엔 레드레이져를 이용해보았습니다만... 실제 QR코드 혹은 바코드 인식율은 레드레이져가 더 좋은것 같습니다.
무료로는 ZBar도 괜찮습니다.
http://zbar.sourceforge.net/
여기서 다운받았고 xcode에 추가하면 아래 이미지와 같이 적용됩니다.
이제는 UIWebView에 연동하는 부분인데... 웹 페이지에서 바코드 리더를 호출하는 구조로 개발하여 자바스크립트를 통해 바코드 리더를 호출했습니다.
코드는 아래와 같습니다.
- (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
//----------------------------------------------------------------------
}
대강 보시면 아시겠지만 URL을 호출하고 자바스크립트에서 callmyapp 펑션을 호출하면 바코드 리더가 실행되는 형태로 구현했습니다.
읽어들인 내용을 다시 웹으로 보내는 부분은 아래와 같습니다.
//----------------------------------------------------------------------
// 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' 카테고리의 다른 글
UIWebView facebook 인증 연결 (0) | 2016.08.30 |
---|---|
IOS UIWebView와 Web의 연결 (0) | 2016.08.29 |
테이블 목록 및 데이터 건수 (0) | 2016.05.26 |
간단한 페이징 쿼리 (0) | 2016.04.16 |
Visual Studio 빌드시 "'OSVersion'의 값이 잘못되었습니다." (0) | 2016.04.14 |
댓글