apis nativas: almacenamiento de datos y nfc

44
APIs Nativas: Almacenamiento de Datos Joel Ortíz Octubre 18 de 2013 @flashinstructor

Upload: joel-ortiz

Post on 12-Jun-2015

381 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: APIs Nativas: Almacenamiento de Datos y NFC

APIs Nativas: Almacenamiento de Datos

Joel OrtízOctubre 18 de 2013

@flashinstructor

Page 2: APIs Nativas: Almacenamiento de Datos y NFC

Joel Ortíz

BlackBerry Elite Member & Community Manager

Adobe Certified Instructor, Expert & Community Manager

StarWars FanBoy

BlackBerry, Activ Developing Experiences

2

Page 3: APIs Nativas: Almacenamiento de Datos y NFC

Archivos y Sistema de Archivos

No es tan aburrido como parece

Page 4: APIs Nativas: Almacenamiento de Datos y NFC

Datos, Datos y Más Datos

No es sorpresa: Nuestras aplicaciones requieren datos

siempre Es como si fuera la comida de las

aplicaciones XD

Cascades y aplicaciones nativas tienen diferentes medios para almacenar y obtener datos

Si es sorpresa: Tendremos perímetros para el acceso a

datos

4

Page 5: APIs Nativas: Almacenamiento de Datos y NFC

Archivos vs Bases de Datos

Las aplicaciones tiene la capacidad de: Leer y escribir hacia y desde el sistema de archivos Crear archivos y carpetas Crear bases de datos Crear consultas a bases de datos Obtener datos desde un servidor remoto o red local

5

Page 6: APIs Nativas: Almacenamiento de Datos y NFC

BlackBerry Balance

Aplicaciones de trabajo/empresariales: Pueden acceder a datos de trabajo y

visualizar datos personales Pueden adjuntar archivos personales a

emails o entradas del calendario de trabajo Pueden acceder a intranets usando

BlackBerry Bridge, VPNs corporativas o WiFi

Aplicaciones personales: No pueden acceder a datos de trabajo No pueden adjuntar archivos de trabajo a

emails o entradas de calendario personales

6

Page 7: APIs Nativas: Almacenamiento de Datos y NFC

BlackBerry Balance

7

Aplicaciones de Trabajo

Aplicaciones de Trabajo/Personales

Aplicaciones Personales

BES email, contactos, calendario, tareas etc.

Visor de fotos Social (Facebook, Twitter, etc.)

BlackBerry Bridge & Viewer Media Player App World

BlackBerry Browser Visor de documentos (Acrobat, Doc To Go) Web Browser

Aplicaciones de Trabajo

Aplicaciones de Archvios Video Chat

Page 8: APIs Nativas: Almacenamiento de Datos y NFC

Sistema de Archivos

Las aplicaciones corren sobre un “sandbox”

El “sandbox” tiene directorios tales como: Datos Activos Tu aplicación compilada Etc.

No todos los directorios son para nuestro uso

8

Page 9: APIs Nativas: Almacenamiento de Datos y NFC

Acceso a Archivos con C

9

FILE *fp; fp = fopen( "report.dat", "r" ); if( fp != NULL ) { /* rest of code goes here */ fclose( fp ); }

Page 10: APIs Nativas: Almacenamiento de Datos y NFC

Acceso a Archivos con Qt

10

QFile textfile("data/files/text/newfile.txt");textfile.open(QIODevice::WriteOnly | QIODevice::Text);QTextStream out(&textfile);out << "This is a text file\n";textfile.close();

Page 11: APIs Nativas: Almacenamiento de Datos y NFC

Rutas del Sistema de Archivo

Cascades tiene una clase que nos permite el acceso al “sandbox”:

Además provee funciones que nos permiten el acceso a diferentes rutas del sistema de archivos

11

QDir::currentPath() – ruta al directorio de trabajo de la appQDir::homePath() – retorna el directorio de datos de la appQDir::tempPath() – accede al directorio temporal de la app

QDir

Page 12: APIs Nativas: Almacenamiento de Datos y NFC

Permisos del sistema de archivos

No todos los directorios visibles son accesibles: app

Aplicación compilada, activos, source data

Este es donde se almacenan tus datos. Variable $HOME db

Archivos de bases de datos de la aplicación logs

Sistema de logs para una aplicación shared

Subfolders que contienen datos compartidos agrupados por tipos. Todas las aplicaciones pueden leer este directorio. Una aplicación puede escribir en este directorio especificando el permiso access_shared

tmp12

Page 13: APIs Nativas: Almacenamiento de Datos y NFC

1 Demo5 Minutos

Page 14: APIs Nativas: Almacenamiento de Datos y NFC

Cascades: Modelo y Acceso a Datos

¡MVC! si, como lo escuchas ¡MVC!

Page 15: APIs Nativas: Almacenamiento de Datos y NFC

DataAccess y DataModel

Cascades ofrece un “data model” que permite el consumo y presentación de datos de forma fácil

Los datos externos (JSON o bases de datos) son cargados por un objeto DataAccess

Los datos cargados son organizados por la clase DataModel Cascades provee clases “ListView” para presentar los

DataModel

15

Page 16: APIs Nativas: Almacenamiento de Datos y NFC

DataModel

Un “data model” provee la información para ser desplegada en una lista

El DataModel puede ser extendido por una representación personalizada de los datos

16

Page 17: APIs Nativas: Almacenamiento de Datos y NFC

ListView

Un ListView determina como serán desplegados los datos en tu aplicación

Pueden ser asociados con un DataModel

17

Page 18: APIs Nativas: Almacenamiento de Datos y NFC

2 Demo5 Minutos

Page 19: APIs Nativas: Almacenamiento de Datos y NFC

Bases de Datos

¡Integremos Bases de Datos!

Page 20: APIs Nativas: Almacenamiento de Datos y NFC

SQLite, QtSql, Cascades API

20

Page 21: APIs Nativas: Almacenamiento de Datos y NFC

C y libsqlite

Empaquetad con las herramientas SQLite Definido como libsqlite Esta disponible, pero se recomienda usar QtSql si se esta

empleando C++ Para aplicaciones creadas en Cascades también existe una

interfaz para interactuar con bases de datos

21

Page 22: APIs Nativas: Almacenamiento de Datos y NFC

Código QtSQL... ¿fácil?

22

#include <QSqlDatabase>

...

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");

db.setHostName("myserver");

db.setDatabaseName("mydb");

db.setUserName("myusername");

db.setPassword("mypassword");

bool ok = db.open();

if(ok)

{

QSqlQuery query("SELECT * FROM *");

}

Page 23: APIs Nativas: Almacenamiento de Datos y NFC

3 Demo5 Minutos

Page 24: APIs Nativas: Almacenamiento de Datos y NFC

APIs Nativas: NFC

Joel OrtízOctubre 18 de 2013

@flashinstructor

Page 25: APIs Nativas: Almacenamiento de Datos y NFC

Introducción

25

Near Field Communications es una tecnología mágica

Con solo chocar los dispositivos NFC puedes...

Disparar Acciones

Transferir Estados

Transferir Objetos

Ejecutar Transacciones

Buscar llegadas de Bus

Juegos... ¡Tu Turno!

Fotos, Contactos, etc.

Pagos

Page 26: APIs Nativas: Almacenamiento de Datos y NFC

Oportunidad

26

Enriquece tus aplicaciones con NFC

Táctiles Sin Gestos Conveniente Diversión

Seguro

“NFC Móvil... Espera un crecimiento de usuarios 16.7 M a más de 250 M en 4 años (2011 - 2015)”

Forecast from Juniper Research (Abril 2011)

Page 27: APIs Nativas: Almacenamiento de Datos y NFC

Enriqueciendo Tus Aplicaciones

27

Disparar Acciones

Transferir Estados

Transferir Objetos

Ejecutar Transacciones

Tags

Punto a Punto

Page 28: APIs Nativas: Almacenamiento de Datos y NFC

Lectura de NFC Tags

Page 29: APIs Nativas: Almacenamiento de Datos y NFC

NFC Tags

29

Tarjetas de memoria que almacenan datos

Tiene una interfaz sin contacto

Leídas por un dispositivo llamado

“Lector”

Aplicaciones toman una acción en

respuesta al mensaje

Page 30: APIs Nativas: Almacenamiento de Datos y NFC

NFC Tags

30

4 tipos de tags estándar NFC Forum

Formato de mensaje estándar (NDEF)

Tipos de mensaje estándar incluyen Smart

poster, Texto, URI

Tipos personalizados son permitidos

(“external”)

Varias capacidades del tag

Page 31: APIs Nativas: Almacenamiento de Datos y NFC

El Proceso de 3 Pasos

31

RegistrarRegistrar

Declarativo bar-descriptor.xml

ConectarConectar

InvokeManager Qt signals y slots

Procesar

ndefMessage = QtMobilitySubset::QNdefMessage::fromByteArray(data)

Page 32: APIs Nativas: Almacenamiento de Datos y NFC

Registrar

32

<invoke-target id="com.example.NfcRaceTime"> <require-source-permissions>invoke_across_perimeters</require-

source-permissions> <type>APPLICATION</type> <filter> <action>bb.action.OPEN</action> <mime-type>application/vnd.rim.nfc.ndef</mime-type> <property var="uris" value="ndef://4/my.rim.com/myrecordtype"/

> </filter></invoke-target>

Page 33: APIs Nativas: Almacenamiento de Datos y NFC

Invocation Framework

33

Page 34: APIs Nativas: Almacenamiento de Datos y NFC

Conectar

34

bb::system::InvokeManager* _invokeManager = new bb::system::InvokeManager();

QObject::connect(_invokeManager, SIGNAL( invoked(const bb::system::InvokeRequest&)), this, SLOT( receivedInvokeRequest( const bb::system::InvokeRequest&)));

Page 35: APIs Nativas: Almacenamiento de Datos y NFC

Procesar

35

// SLOT methodvoid App::receivedInvokeRequest( const bb::system::InvokeRequest& request) {

QByteArray data = request.data();

QtMobilitySubset::QNdefMessage ndefMessage = QtMobilitySubset::QNdefMessage::fromByteArray(data);

handleNdefRequest(ndefMessage);}

Page 36: APIs Nativas: Almacenamiento de Datos y NFC

Procesar

36

// look for NDEF records of our special typeQList<QtMobilitySubset::QNdefRecord>::const_iterator ndefRecord;

for ( ndefRecord = ndefMessage.begin(); ndefRecord != ndefMessage.end(); ndefRecord++) {

if (ndefRecord->typeNameFormat() == QtMobilitySubset::QNdefRecord::ExternalRtd) {

if (QString( ndefRecord->type()).compare("my.rim.com:myrecordtype") == 0 ){ emit raceTagDetected(QString(ndefRecord->payload())); } }}

Page 37: APIs Nativas: Almacenamiento de Datos y NFC

NFC Modo Punto a Punto

Page 38: APIs Nativas: Almacenamiento de Datos y NFC

Oportunidad

38

Transferir datos de un dispositivo a otro

Sin Gestos Interactivo

Comparte solo tocando ambos dispositivos

Comparte

Crea experiencias interactivas/físicas

Page 39: APIs Nativas: Almacenamiento de Datos y NFC

Opciones de Protocolos

39

SNEP

Protocolo de intercambio simple de

NDEFHigher level

LLCP

Orientado a mensajes

Protocolo de control lógico de link Lower levelOrientado a

conexiones

Page 40: APIs Nativas: Almacenamiento de Datos y NFC

Opciones de la API

40

Invocation Framework

Menos código Puede proveer UI para el usuario

Uso directo de la API

Otra app proporciona el servicio a la tuya

Algunas API son llamadas en

iteraciones de eventos

Control completo encima del UI

Todas las opciones disponibles para tu

app

Page 41: APIs Nativas: Almacenamiento de Datos y NFC

Compartir con Invocation Framework

41

Button { id: shareButton

text: "Share vCard - Press and Hold!" contextActions: [

ActionSet { title: "Share NDEF Data"

InvokeActionItem { id: sharedNdefData

query { mimeType: "application/vnd.rim.nfc.ndef"

invokeActionId: "bb.action.SHARE" } } } ]

Page 42: APIs Nativas: Almacenamiento de Datos y NFC

Compartir con Invocation Framework

42

Button {.... contextMenuHandler: ContextMenuHandler { onShowing: { // make NDEF message as byte array in C++ sharedNdefData.data = _ndefFactory.getNdefVcardMessage(sendVcard.ndefFirstName, sendVcard.ndefLastName, sendVcard.ndefAddress, sendVcard.ndefEmail, sendVcard.ndefMobile); } }}

Page 43: APIs Nativas: Almacenamiento de Datos y NFC

4 Demo5 Minutos