De cara a futuros proyectos, exponemos la investigación realizada sobre distintas librerías de escaneo de códigos QR para la plataforma iOS de Apple. En él se realiza una comparativa entre las mismas que puede resultar de interés.
ZXing
Llama la atención que aparentemente la librería (ZXing) que más se menciona en Google es la que peores resultados ha obtenido. No ha funcionado ningún código QR de los que teníamos en la oficina en su aplicación de ejemplo. Eso sí, es la más llamativa a la hora de mostrar la cámara al usuario ya que muestra varios cuadrados verdes que tratan de buscar sus homólogos en el QR. Nos ha servido también para hacer una prueba en una aplicación y obtener una vista que pinte lo que esté enfocando la cámara.
Shopsavvy
La aplicación de ejemplo posee un botón para lanzar la cámara y una pantalla de ajustes para configurar el tipo de código a escanear (EAN13 & UPCA, EAN8, UPCE, QR CODES). Por defecto viene desactivado éste último. En el inicio de la aplicación se ajustan los valores de tipo por defecto y luego a la hora de mostrar la cámara los recupera para ver exactamente qué ha pedido el usuario que escanee. La pantalla es agradable visualmente para el usuario ya que dibuja una vista poligonal y aplica una imagen que es una línea roja con una animación; también utiliza un icono de una mano para indicar al usuario cuando está escaneando y cuándo ha obtenido algún resultado. No tuvimos mayores problemas en reproducirlo en un proyecto de prueba salvo uno e importante que despista mucho al principio. Si de primeras se compila empezará a dar errores de constantes y/o variables que faltan referentes a un fichero .a; buscando en Stack Overflow gente con errores similares encontramos la opción de añadir una especie parámetros de compilación adicionales. Al principio pensamos en comparar los parámetros de ambos proyectos aunque los valores a revisar eran bastantes. Gracias al foro encontramos la línea exacta que había que modificar para añadir 2 parámetros y poder compilar sin problemas.
Una pega que le encontramos a esta librería es que aparentemente no se puede cambiar el “powered by Shopsavvy” que aparece en la pantalla de la vista de escaneo. A una malas modificando la vista o quitando la imagen se podrá pero no encontramos un parámetro que lo quitara por defecto.
La velocidad de escaneo es bastante alta. Nada más poner la cámara han aparecido los resultados. Viene con documentación de sus clases y demás en formato HTML.
ZBar
Nos ha parecido la más completa y no sólo por los tipos de ejemplo que trae. Viene con 4 en concreto:
- EmbedReader: una vista que tiene un botón y en la misma la ventana de escaneo.
- ReaderSample: una vista con un botón que llama a otra que tiene la ventana de escaneo.
- ReaderTest: una vista con todos los parámetros configurables que posee (por ejemplo tiene 2 tipos de controladores; uno que llama a la cámara del móvil y otro que crea una vista con la imagen de la cámara) y que muestra los resultados del escaneo.
- TabReader: similar a la segunda pero en la vista se incluyen pestañas inferiores. En una escaneas y automáticamente llama a la otra con los resultados.
Creíamos que tendríamos el mismo problema a la hora de compilar que tuvimos con Shopsavvy así que revisamos las opciones que traía el proyecto pero no hizo falta. No hubo problemas en compilar los ejemplos ni en hacer alguno de prueba. Al igual que la anterior viene también con documentación HTML aunque a diferencia de la anterior, que sólo menciona los métodos y las clases, en ésta viene algún ejemplo.
RedLaser
No la hemos probado por ser de pago aunque tenía una versión de prueba. Creo que con ZBar o en su defecto con Shopsavvy tenemos lo necesario para obtener datos de un código externo.
Conclusión
Tanto Shopsavvy como ZBar se basan fundamentalmente en un par de métodos que se lanzan cuando se llama a la opción de escaneo y cuando éste ha obtenido los resultados.
Para aligerar las aplicaciones sería buena idea tratar de incluir sólo lo necesario para el escaneo de códigos QR ya que todas estas aplicaciones requieren aparte de los propios ficheros de la librería diversos frameworks de iOS como CoreMedia, CoreAudio, etc.
Ninguna de las librerías probadas ha reconocido tampoco el código que aparece en la tarjeta de contacto de prueba que tenemos (el código es pequeñito y con alta redundancia de datos), cosa que si hace la aplicación Barcode Scanner para Android. Esas pruebas las hemos hecho tanto con las aplicaciones de ejemplo como con proyectos simples que hemos creado basándonos en las de ejemplo.
La que nos ha parecido más completa y fácil de usar es ZBar.
A continuación puedes ver el código QR que dirige a nuestra presentación: