QR Code Erkennung in Objective C

Geschrieben am August 31, 2012 von Simon Jenny

Ob CR Code nun ein Hype, blösdinnig oder nützlich sein soll, darüber scheiden sich die Geister. Ich finde, dass dieser kleine Barcode durchaus noch potential hat, vor allem da er sich, durch seine Gestaltbarkeit, sehr gut für Marketing eignet.

Codecentric hat ja unlängst einen QR Code Reader als kostenloses App veröffentlicht und dieser Beitrag soll nun die Integration der QR Code Recognition Library erläutern so dass er anderen Entwicklern hilft, CR Code in die eigenen Apps einzubinden.

Für unser Beispiel verwende ich die, auch in QuickQR verwendete ZBarSDK Library, welche auch die geeignete Lizenz für den professionellen Einsatz bietet.

Nach der Integration der Library gemäss der Anleitung auf der Webseite kann die Library im Code aufgerufen werden.

Der Sourcecode für dieses kleine Tutorial kann hier heruntergeladen werden. Dieses Tutorial orientiert sich hauptsächlich am Tutorial der ZBarLibrary.

Als erstes muss der Support für das Delegate Protokoll in der Header Datei definiert werden und die Library Header Datei inkludiert werden :

@interface ViewController : UIViewController  

Da die ZBarLibrary eine Subklasse der UIImagePickerController Klasse erstellt, kann mann auch die entsprechenden Methoden verwenden also fangen wir die Meldungen die der UIImagePickerController zurücksendet in der Hauptklasse ab :

- (void) imagePickerController: (UIImagePickerController*) reader
 didFinishPickingMediaWithInfo: (NSDictionary*) info
{
    id results = [info objectForKey: ZBarReaderControllerResults];
    ZBarSymbol *symbol = nil;
    for(symbol in results)
        break;
    
    resultText.text = symbol.data;
    
    scannedImage.image = [info objectForKey: UIImagePickerControllerOriginalImage];
    [reader dismissModalViewControllerAnimated: YES];
}

Zum öffnen des Scan Fensters verwenden wir

- (IBAction)scanCode:(id)sender {
    
    ZBarReaderViewController *reader = [ZBarReaderViewController new];
    reader.readerDelegate = self;
    reader.supportedOrientationsMask = ZBarOrientationMaskAll;
    
    ZBarImageScanner *scanner = reader.scanner;

    [scanner setSymbology: ZBAR_I25
                   config: ZBAR_CFG_ENABLE
                       to: 0];
    
    [self presentModalViewController: reader
                            animated: YES];
    
}

Das ist es auch schon. Der QR Code Reader kann nun kompiliert und mit jedem gängigen QR Code ausprobiert werden.
Falls Du Fragen zum Code hast oder etwas bei Dir nicht funktioniert, einfach in den Kommentaren nachfragen.