Aplicación de iPhone¶
Idiomas¶
Esta página se puede leer en los siguiente idiomas:
Objetivo¶
El Objetivo de este tutorial es crear tu primera App de iPhone integrando la tecnología de Beeping.
Para ello seguiremos los siguientes pasos:
-
Creación de un beep
-
Creación de un proyecto de iPhone
-
Instalación del SDK de iPhone
-
Uso del SDK de iPhone
-
Usar el simulador para capturar el conenido del beep
Descargar la SDK¶
A continuación os dejamos los pasos que debes seguir para crear vuestra primera App.
Lo primero que debemos hacer es descargar el SDK de iPhone.
Hacer click aquí para descargar el framework
Una vez descargado lo descomprimimos y dejamos accesible el framework beeping-framework para más adelante.
Creación del Beep¶
Para crear el beep sigue los pasos del anterior tutorial.
Haz click aquí para acceder a la creación de tu primer beep
Una vez hayamos creado el Beep tendremos un fichero llamado ultrasound.wav con el contenido qa020. Dejamos accesible el fichero para reproducirlo más adelante.
Creación de app¶
A continuación creamos nuestra aplicación del iPhone.
Vamos a llamar a nuestra aplicación beeping-hello.
Instalación del framework¶
- Seleccionamos el target beeping-hello ( Figura 1 )
- Arrastramos el Framework de iPhone al siguiente directorio ( Figura 2 ):
- Asegurar que la instalación se ha hecho correctamente:
Para ello debemos asegurarnos de que nuestro Framework está linkado correctamente.
- El Framework debe estar presente en la sección "Frameworks, Libraries, and Embedded Content"
Opción Embed
It is very possible that by dragging the Framework the Embed option default to Do not Embed. If applicable we must change the option to Embed & Sign
- El Framework también debe estar presente en la sección Build Phases y revisar el apartado Link Binary With Libraries
Opción Status
El parámetro Status debe tener como valor Required
Una vez se cumpla todo lo que hemos explicado con anterioridad, el Framework de Beeping estará bien instalado.
Implemetar la SDK¶
El código que debemos escribir para implementar el protocolo de Beeping es muy simple.
A continuación os dejamos los pasos para implementar el código fuente en vuestra app.
-
Abrir el fichero ViewController.h
-
Incluir el header del Framework
// // ViewController.h // beeping-hello // // Created by ---- on 07/03/2020. // Copyright © 2020 ----. All rights reserved. // #import <UIKit/UIKit.h> #import <Beeping/Beeping.h> @interface ViewController : UIViewController @end
- Declarar el objeto Beeping
// // ViewController.h // beeping-hello // // Created by ---- on 07/03/2020. // Copyright © 2020 ----. All rights reserved. // #import <UIKit/UIKit.h> #import <Beeping/Beeping.h> @interface ViewController : UIViewController @property (strong, nonatomic) Beeping *beepingManager; @end
- Añadir el protocolo de Beeping
// // ViewController.h // beeping-hello // // Created by ---- on 07/03/2020. // Copyright © 2020 ----. All rights reserved. // #import <UIKit/UIKit.h> #import <Beeping/Beeping.h> @interface ViewController : UIViewController <beepingDelegate> @property (strong, nonatomic) Beeping *beepingManager; @end
-
Abrir el fichero ViewController.m
-
Crear la instancia de Beeping y asignar el protocolo de la SDK en el delegate
// // ViewController.m // beeping-hello // // Created by ----- on 07/03/2020. // Copyright © 2020 -----. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. if ( _beepingManager == NULL ) { // Instance Creation _beepingManager = [Beeping instance]; // Self reference _beepingManager.delegate = self ; } } @end
- Abrir la consola para visualizar los logs
- Arrancar el simulador
En este punto la aplicación aparecerá en blanco, pero fijaros en las líneas de la consola.
2020-03-07 14:13:28.180636+0100 beeping-hello[3865:16310305] BeepingCoreLib version 0.9.7 [31052017] 2020-03-07 14:13:28.180767+0100 beeping-hello[3865:16310305] Configuration NONAUDIBLE 2020-03-07 14:13:28.181241+0100 beeping-hello[3865:16310305] C++ DecoderNonAudibleMultiTone 2020-03-07 14:13:28.422437+0100 beeping-hello[3865:16310525] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x600002041680> F8BB1C28-BAE8-11D6-9C31-00039315CD46 2020-03-07 14:13:28.464858+0100 beeping-hello[3865:16310305] BeepingCore.framework version 1.0.4 [20012017]
Lo que os están diciendo estas líneas es que el objeto de Beeping se ha inicializado correctamente
- Implementar el protocolo.
// // ViewController.m // beeping-hello // // Created by ----- on 07/03/2020. // Copyright © 2020 -----. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. if ( _beepingManager == NULL ) { // Instance Creation _beepingManager = [Beeping instance]; // Self reference _beepingManager.delegate = self ; } } // BEEPING DELEGATE IMPLEMENTATION - (void) beepIdWith:(NSString *)beep_id { NSLog(@"The Beep data is: %@", beep_id ); } @end
Callback
Cuando la SDK detecte un beep esta función será llamada automáticamente, y recibirá como parámetro el contenido del beep. Cuando esto suceda en nuestra App, lo que hacemos es mostrar el contenido del beep en nuestra consola.
-
Abrimos el fichero Info.plist
-
Añadimos un campo String
-
El parámetro que hay que añadir es: Privacy - Microphone Usage Description
-
El valor que añadiremos será: We need acces to your microphone to use Beeping
Microphone
Para poder escuchar el ultrasonido y decodificar su contenido, la SDK necesita acceso al micrófono para poder oir lo que le estamos enviando.
- Le decimos a Beeping que se ponga a escuchar
// // ViewController.m // beeping-hello // // Created by ----- on 07/03/2020. // Copyright © 2020 -----. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. if ( _beepingManager == NULL ) { // Instance Creation _beepingManager = [Beeping instance]; // Self reference _beepingManager.delegate = self ; } // Listening ... [_beepingManager listen] ; } // BEEPING DELEGATE IMPLEMENTATION - (void) beepIdWith:(NSString *)beep_id { NSLog(@"The Beep data is: %@", beep_id ); } @end
- Le decimos a Beeping que deje de escuchar, una vez hemos leído el contenido del beep
// // ViewController.m // beeping-hello // // Created by ----- on 07/03/2020. // Copyright © 2020 -----. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. if ( _beepingManager == NULL ) { // Instance Creation _beepingManager = [Beeping instance]; // Self reference _beepingManager.delegate = self ; } // Listening ... [_beepingManager listen] ; } // BEEPING DELEGATE IMPLEMENTATION - (void) beepIdWith:(NSString *)beep_id { NSLog(@"The Beep data is: %@", beep_id ); if ( _beepingManager != NULL ) { // Stop Listening ... [_beepingManager stop] ; } } @end
La magia¶
Lo que vamos a hacer ahora es probar nuestra aplicación.
Para probar nuestra aplicación debemos tener a mano dos elementos:
-
Nuestro fichero ultrasound.wav que es nuestro beep que contiene el valor qa020
-
La aplicación que acabamos de crear
Lo primero que debemos hacer es ejecutar nuestra aplicación de iPhone.
Si nos fijamos en nuestra consola veremos una nueva línea que nos indica que la aplicación está en modo de escucha:
2020-03-07 14:13:28.180636+0100 beeping-hello[3865:16310305] BeepingCoreLib version 0.9.7 [31052017] 2020-03-07 14:13:28.180767+0100 beeping-hello[3865:16310305] Configuration NONAUDIBLE 2020-03-07 14:13:28.181241+0100 beeping-hello[3865:16310305] C++ DecoderNonAudibleMultiTone 2020-03-07 14:13:28.422437+0100 beeping-hello[3865:16310525] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x600002041680> F8BB1C28-BAE8-11D6-9C31-00039315CD46 2020-03-07 14:13:28.464858+0100 beeping-hello[3865:16310305] BeepingCore.framework version 1.0.4 [20012017] 2020-03-07 14:43:01.821260+0100 beeping-hello[4001:16327281] [Beeping [info]] Listening ...
Ahora ejecutamos nuestro beep y la magia se convierte en realidad.
Fijaros lo que ha pasado en nuestra consola:
2020-03-07 14:44:15.199810+0100 beeping-hello[4023:16328812] BEGIN TOKEN FOUND! 2020-03-07 14:44:15.199971+0100 beeping-hello[4023:16328812] [Beeping [info]] BEEP_TOKEN_END_OK 2020-03-07 14:44:15.304691+0100 beeping-hello[4023:16328812] Token found! 26 2020-03-07 14:44:15.408884+0100 beeping-hello[4023:16328812] Token found! 10 2020-03-07 14:44:15.513293+0100 beeping-hello[4023:16328812] Token found! 0 2020-03-07 14:44:15.618080+0100 beeping-hello[4023:16328812] Token found! 2 2020-03-07 14:44:15.722645+0100 beeping-hello[4023:16328812] Token found! 0 2020-03-07 14:44:15.826769+0100 beeping-hello[4023:16328812] Token found! 0 2020-03-07 14:44:15.931384+0100 beeping-hello[4023:16328812] Token found! 0 2020-03-07 14:44:16.036250+0100 beeping-hello[4023:16328812] Token found! 0 2020-03-07 14:44:16.140386+0100 beeping-hello[4023:16328812] Token found! 5 2020-03-07 14:44:16.244719+0100 beeping-hello[4023:16328812] Token found! 11 2020-03-07 14:44:16.349270+0100 beeping-hello[4023:16328812] Token found! 25 2020-03-07 14:44:16.454256+0100 beeping-hello[4023:16328812] Token found! 29 2020-03-07 14:44:16.558209+0100 beeping-hello[4023:16328812] Token found! 5 2020-03-07 14:44:16.662571+0100 beeping-hello[4023:16328812] Token found! 0 2020-03-07 14:44:16.767269+0100 beeping-hello[4023:16328812] Token found! 20 2020-03-07 14:44:16.871958+0100 beeping-hello[4023:16328812] Token found! 26 2020-03-07 14:44:16.976103+0100 beeping-hello[4023:16328812] Token found! 16 2020-03-07 14:44:17.080627+0100 beeping-hello[4023:16328812] Token found! 19 2020-03-07 14:44:17.092184+0100 beeping-hello[4023:16328812] END DECODING OK! qa0200005 2020-03-07 14:44:17.092360+0100 beeping-hello[4023:16328812] [Beeping [info]] BEEP_TOKEN_END_OK 2020-03-07 14:44:17.092474+0100 beeping-hello[4023:16328812] The Beep data is: qa020 2020-03-07 14:44:17.092549+0100 beeping-hello[4023:16328812] [Beeping [info]] Stopped
Si os fijáis bien en la consola, la primera línea nos informa de que Beeping ha detectado un ulltrasonido, con información.
En la segunda línea se nos indica que el formato del beep es correcto, y las líneas siguientes lo que hacen es leer el contenido y desenciptan la información.
Una vez finalizo el proceso, se nos informa que la desencriptación ha funcionado correctamente e internamente lo que hace ls SDK es llamar a la función que hemos creado y que por lo tanto recibe el callback.
Esta función lo que hace es escribir en nuestra consola en contenido del beep que le hemos enviado. En nuestro caso la siguiente información: qa020.
Una vez hemos mostrado la información por la consola lo que hemos hecho es parar la escucha de nuestra app y eso es lo que nos muestra nuestro log en la última línea.
API¶
A continuación os mostramos el API del framework de Beeping para iPhone:
Object¶
Name | Object | Type |
---|---|---|
Beeping | Beeping * | Pointer |
Methods¶
Object | Method | Return | Description |
---|---|---|---|
Beeping | [Beeping instance] | instance | Object creation |
Beeping | listen() | void | Ready to listen beeps |
Beeping | stop() | void | Stop listening beeps |
Protocol¶
Object | Type | Callback | Return |
---|---|---|---|
Beeping | beepingDelegate | beepIdWith:(NSString *)beep_id | void |
Links¶
Aquí te dejamos una serie de links relacionados con la SDK de iPhone:
Frase¶
Ralph Waldo Emerson
Un gran hombre siempre está dispuesto a ser pequeño.