최근 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 |
댓글