As you might now I have an dual interest in product barcodes. First, there is my book treating all kinds of barcode symbologies supported by iOS. Second, there is ProductLayer where we are building a crowd-sourced product database via the prod.ly social network.
At first I thought that the problem would only exist for really low quality bar codes (rdar://19438067) but now I found a perfectly good looking specimen that has the same issue: iOS does not recognize it.
Filed as rdar://22048146 and on Open Radar. I am hoping that Apple can fix this issue before iOS 9 is done.
This is troubling me a lot since we see more and more grocery manufacturers switching to Code 128 (away from GTIN) so that they can also represent a sell-by date for the POS. I found eggs and read-to-eat salad bowls in my local supermarket using these. Read up on GS1-128 application identifiers in the free first chapter of my book.
AVFoundation unable to recognize GS1-128 Codes
Summary
More and more manufacturers of groceries switch from GTIN (aka UPC) to GS1-128 because next to the product code they can include a best-before date. AVFoundation’s metadata object detector has a serious issue with these Code128 barcodes as it does not recognize them. At least not in the range of quality that can be found on product packages.
Steps to Reproduce
- Print out the provided barcode
- Try to scan it with a AVCaptureMetadataOutput set up to detect AVMetadataObjectTypeCode128Code
Expected Results
- The metadata object should be delivered
- It’s content’s should be (01)09002233023062(15)150720
In this case 01 is the product GTIN
Actual Results
- No metadata object is delivered to the delegate
- … regardless of how you rotate the device around
- the crummy zBar app (free on app store) is able to detect it and opens a google search for 9002233023062
Notes
This is a severe problem because this weakness still exists in iOS 9 making the iPhone effectively unusable for scanning GS1-128 barcodes which are getting more and more prevalent in Europe.
Categories: Bug Reports