적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

초보 iOS 개발자의 일상/개발 업무

[Swift iOS] UPC-A barcode format scan & generate

hongssup_ 2022. 3. 16. 10:43
반응형

취급하는 상품이 늘어나면서 계속 새로운 바코드 형식들을 추가해주고 있다. 

UPC-A 형식의 바코드도 사용할 수 있도록 요청을 받았는데, iOS에서는 신기하게도 이 형식을 EAN-13으로 읽어들이는 것이었다. 

 

찾아보니 12자리의 UPC-A 바코드 형식을 iOS에서는 맨 앞자리에 0을 더해주어 13자리의 EAN-13 형식으로 인식하도록 되어있다고 한다. 신기하구만.

 

UPC-A barcode Scan

그래서 바코드 스캔할 때 AVCaptureMetadataOutput()의 metadataObjectTypes에서도 .upca 형식은 없고 .ean13 형식을 추가해주면 그걸로 읽힌다. 

그리고 바코드 인식결과 후처리로 다음과 같이 바코드 형식이 ean-13이고 시작하는 숫자가 0일 때 0을 제거하여 12자리의 upc-a 바코드로 변환을 해주어야 한다. 

let barcodeType = metaDataObject.type.rawValue
let typee = barcodeType.split(separator: ".")[2]
if typee == "EAN-13" && StringCodeValue.hasPrefix("0") {
    StringCodeValue = String(StringCodeValue.dropFirst())
}

찐 ean13 바코드의 맨 앞자리가 0일경우는 어떻게 구별하지? 걱정했는데 찾아보니 아마도 그런 경우는 없다고 봐도 될것 같다? ㅎ

 

UPC-A barcode Generate 

인식 뿐 아니라 생성할 때도 EAN13 바코드 형식으로 생성해주면 되더라. 

생성할 때는 다시 바코드 숫자 맨앞에 0을 추가해주고 ean13 형식 바코드를 생성해주면 된다. 

바코드 밑의 숫자는 알아서 열두자리로 만들어주기! 

 

 

참고 : StackOverflow - iOS UPCA barcode scanner,

728x90
반응형