Creación de aplicaciones móviles con PHP y Symfony2
1. Aplicaciones Móviles
Quién es Pablo Godel?
Creación de aplicaiones
móviles con
PHP y Symfony2
Pablo Godel
PHP Barcelona Conference 2011
Friday, October 28, 2011
2. Quién es Pablo Godel?"
• Argentino, viviendo en Miami, EE.UU. desde 1999
• Programador PHP, Symfony, entre otros
• Fundador de la lista de PHP en español
http://news.php.net/php.general.es/3 )Julio 2000(
• Pasé el control a php.net con más de 1000 subscriptos
• Co-fundador de ServerGrove Networks
⁃ fundada en 2005
⁃ servicios de hosting especializado en PHP, Symfony,
Zend Framework, entre otros
Friday, October 28, 2011
5. Aplicaciones Móviles -
Quién es Pablo Godel? Por qué?
• Cada vez más personas tienen acceso a
Internet en el télefono móvil
• Los dispositivos son cada vez más potentes y
versátiles
• El acceso a Internet es más rápido y confiable
• El público demanda servicios y aplicaciones
en todo momento
Friday, October 28, 2011
6. Aplicaciones Móviles -
Quién es Pablo Godel? Por qué?
• No se pueden dar ventajas en el mercado
ultra-competitivo
• Tus competidores ya lo están haciendo o
implementando
Friday, October 28, 2011
7. Aplicaciones Móviles -
Quién es Pablo Godel? Por qué?
Algunos números...
Friday, October 28, 2011
8. Aplicaciones Móviles -
Quién es Pablo Godel? Por qué?
• 5.300 millones de usuarios a nivel mundial
• 370 millones de teléfonos móviles vendidos en
Q1 2011 a nivel mundial
• + 850 millones de usuarios en China
• 54 millones de usuarios en España )2010(
• 300 mil aplicaciones móviles con 10.900
millones de instalaciones
Friday, October 28, 2011
9. Aplicaciones Móviles -
Quién es Pablo Godel? Por qué?
Teléfonos celulares
por Paises
Fuente:
http://www.nationmaster.com/graph/med_mob_pho-media-mobile-phones
Friday, October 28, 2011
10. Aplicaciones Móviles -
Quién es Pablo Godel? Por qué?
¿Cómo llegamos hasta aquí?
Friday, October 28, 2011
11. Aplicaciones Móviles -
Quién es Pablo Godel? Por qué?
Un poco de historia...
Friday, October 28, 2011
12. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
1979 Primera red celular )1G - primera generación(
comercial del mundo lanzada en Japón
Friday, October 28, 2011
13. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
1983 Motorola DynaTAC
El teléfono “móvil”
Motorola DynaTAC -
también conocido como
LA BOTA - costaba
US$ 3995 y pesaba 793
gramos!
Friday, October 28, 2011
14. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
1997 WAP - Wireless Application Protocol
Estandard común para conectar distintas redes y
aplicaciones en dispositivos
• Cliente WAP
• Servidor envia WML )XML(
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML
1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml" >
<wml>
<card id="main" title="First Card">
<p mode="wrap">This is a sample WML
page.</p>
</card>
</wml>
Friday, October 28, 2011
21. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
2007 iPhone
• Revolución en el
mercado de
telefonía móvil
• Cliente Web Safari
Friday, October 28, 2011
22. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
2007 iPhone App Store
Friday, October 28, 2011
23. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
2008 Primer dispositivo Android
Friday, October 28, 2011
24. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
2010 iPad
Friday, October 28, 2011
25. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
¿Qué significa todo esto?
Friday, October 28, 2011
26. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
Generación móvil
La PC no está muerta
Friday, October 28, 2011
27. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
Generación móvil
Pero el consumo de información pasó a
teléfonos y tabletas
Friday, October 28, 2011
28. Aplicaciones Móviles -
Quién es Pablo Godel? Historia
Generación móvil
Y esto es sólo el comienzo...
Friday, October 28, 2011
30. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
¿Qué es Symfony?
Friday, October 28, 2011
31. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Definición por Fabien Potencier:
⁃ Symfony2 es un grupo de componentes
independientes, reusables y cohesivos, para
solucionar problemas comunes de
desarrollo web.
⁃ Symfony2 es también un framework full-
stack, gracias a estos componentes
Fuente: http://fabien.potencier.org/
Friday, October 28, 2011
32. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
21 componentes
de alta calidad
Friday, October 28, 2011
33. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Componentes: • DependencyInjection
• EventDispatcher
• HttpFoundation
• DomCrawler
• ClassLoader
• CssSelector
• HttpKernel
• BrowserKit
• Templating
• Translation
• Serializer
• Validator
• Security
• Routing
• Console
• Process
• Config
• Finder
• Locale
• Yaml
• Form
Todos en GitHub: http://github.com/symfony
Friday, October 28, 2011
34. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Proyectos usando componentes de Symfony2:
• Silex: BrowerKit, CssSelector, DomCrawler, EventDispatcher, HttpFoundation,
HttpKernel, Routing, Form, Translation, Validator
• Goutte: BrowserKit, DomCrawler, CssSelector, Process, ClassLoader, Finder
• Behat: Console, DependencyInjection, EventDispatcher, Finder, Yaml, Config,
Translation
• Doctrine2: Console, Yaml Propel2: Console, ClassLoader, Yaml
• PHPUnit: Yaml
• FLOW3: Yaml
• Midguard CMS: most of them in their next version?
• phpBB 4: most of them?
• Drupal 8*: ClassLoader, HttpFoundation, HttpKernel?
Fuente: http://fabien.potencier.org/
Friday, October 28, 2011
35. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
¿Conoces o usaste
symfony 1.x?
Friday, October 28, 2011
36. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Mejor olvídate...
Friday, October 28, 2011
37. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Lo único en común entre
symfony 1.x y Symfony2
es el nombre...
Friday, October 28, 2011
38. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Bueno, la carpeta web
también...
Friday, October 28, 2011
39. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Características
• Escrito completamente desde cero para PHP 5.3 o superior.
• Basado en los estandares del protocolo HTTP
• API sólido y estable.
• Extensible mediante creación de bundles (en sf1 eran llamados plugins)
• Configuración flexible con archivos Yaml, XML, anotaciones, y/o código PHP.
• Toda la configuración es convertida a PHP y cacheada.
• Creación y manejo de formularios
• Muchos unit tests
• Código auditado por compañia de seguridad profesional gracias a las
donaciones de la comunidad Symfony.
Friday, October 28, 2011
40. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Comunidad Symfony
• 312 personas han contribuido a Symfony2 hasta la
fecha
• ~2500 pull requests en GitHub
• 705 bundles en http://symfony2bundles.org
• Canales IRC en Freenode: #symfony-es, #symfony
y #symfony-dev
• Listas de discusión: symfony-es, symfony y
symfony-devs en Google Groups
Friday, October 28, 2011
41. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
Características
• Excelente integración con:
• Doctrine2 ORM y ODM
• Propel2
• Assetic - manejo de assets (css, js, imágenes, etc)
• Twig - motor de plantillas
• Swiftmailer - envío de emails
Friday, October 28, 2011
42. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
¿Por qué Symfony?
Friday, October 28, 2011
43. Aplicaciones Móviles -
Quién es Pablo Godel? Symfony
• Gracias a la base sólida se pueden crear buenas
APIs HTTP / Restful
• Twig facilita la creación de plantillas para
dispositivos móviles
• Es posible re-utilizar mucho código para distintas
aplicaciones o dispositivos gracias a las plantillas,
los controladores y el ruteo
Friday, October 28, 2011
44. Aplicaciones Móviles -
Quién es Pablo Godel? Tipos
1.Aplicaciones nativas
2.Aplicaciones SMS
3.Aplicaciones web
4.Aplicaciones híbridas )mezcla de nativas & web(
Friday, October 28, 2011
45. Aplicaciones Móviles -
Quién es Pablo Godel? Tipos
Aplicaciones Nativas
Friday, October 28, 2011
46. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? nativas
• iPhone - Objective-C
• Android - Java
• Windows Mobile - .NET
• Frameworks multi-plataform
⁃ PhoneGap http://phonegap.com
⁃ rhomobile http://rhomobile.com
⁃ Appceledator http://appcelerator.com
⁃ Corona http://anscamobile.com/corona/
Friday, October 28, 2011
47. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? nativas
PHP o Symfony no corren en estos
dispositivos pero las aplicaciones
nativas comúnmente necesitan
conectarse a un servidor.
Usos comunes:
• envío de mensajes
• carga de datos de una DB
• autenticación/autorización
• chats
Friday, October 28, 2011
48. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? nativas
Consideraciones:
• Diseñar API )RESTful, HTTP, XML-RPC(
temprano en el ciclo de desarrollo
• Una API se puede utilizar para otro tipo de
clientes )ej. Desktop como Adobe AIR(
• Reutilizar controladores y aprovechar el
_format para generar distintos formatos de
contenido )XML, json, etc(
Friday, October 28, 2011
49. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Nativas
Symfony2 Bundle para crear una API
- FOSRestBundle
https://github.com/FriendsOfSymfony/FOSRestBundle
Friday, October 28, 2011
50. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? nativas
Notificaciones PUSH
Un servidor envía mensajes a la red celular
con destino teléfono/aplicación
- El servidor puede estar desarrollado con
Symfony
Ejemplo en PHP: http://easyapns.com/
Friday, October 28, 2011
51. Aplicaciones Móviles
Quién es Pablo Godel?
Aplicaciones SMS
Friday, October 28, 2011
52. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? SMS
Symfony puede recibir y enviar mensajes de
texto a través de un gateway
Usos comunes:
- Envío de alertas
- Chats
- Pagos electrónicos
- Avisos publicitarios
Friday, October 28, 2011
53. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? SMS
Friday, October 28, 2011
54. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? SMS
Recibo de SMS
1.El usuario envía un mensaje de texto a un "short code" )ej. 12334(
2.El mensaje se rutea a través del proveedor de telefonía
3.El mensaje llega al gateway registrado para procesar el short code
4.El gateway convierte el mensaje y lo envía por internet utilizando
HTTP/HTTPS
5.Nuestro servidor recibe el "request" con la siguiente información:
⁃ número de télefono
⁃ operador / carrier
⁃ contenido del mensaje
6.Procesamos el mensaje
7.Si es necesario enviamos una respuesta
Friday, October 28, 2011
55. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? SMS
Envío de SMS
1.Generamos el contenido del mensaje
2.Se envía el mensaje al gateway con la siguiente información
⁃ número de teléfono
⁃ operador / carrier )opcional(
⁃ contenido del mensaje
3.El gateway recibe el mensaje y responde si puede aceptarlo
4.Una vez que el mensaje es enviado, es posible recibir un acuse de
recibo. Este aviso puede ser un “request” aparte.
Friday, October 28, 2011
56. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? SMS
Proveedores de SMS gateway:
• Twilio
http://twilio.com
)lanzanzando servicio internacional pronto(
• Clickatell
http://www.clickatell.com
• SMSpubli
http://www.smspubli.com
Friday, October 28, 2011
57. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? SMS/MMS
MMS son mensajes multimedia con texto,
imágenes, video y audio
Usos comunes:
- Procesamiento de fotos
- Envío de código de barras 2D
Friday, October 28, 2011
58. Aplicaciones Móviles
Quién es Pablo Godel?
Aplicaciones Web
Friday, October 28, 2011
59. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
Frameworks HTML / Javascript
• iui
http://code.google.com/p/iui/ )uno de los primeros(
• JQuery Mobile
http://jquerymobile.com/ )Open source(
• JQTouch
http://jqtouch.com/ )Open source(
• DHTMLX Touch
http://dhtmlx.com/touch/ )Open source(
• The M Project
http://www.the-m-project.org/ )Open source(
• Sensa Touch
http://www.sencha.com/products/touch/
Friday, October 28, 2011
60. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile
Friday, October 28, 2011
61. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile
Soporta:
- IOS )iPhone/iPad(
- Android
- Blackberry
- Windows Phone
- palm webOS
- symbian
Friday, October 28, 2011
62. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile
Friday, October 28, 2011
63. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Características
• Basado en jQuery
• Liviano )12KB comprimido(
• HTML5
• Accesible )funciona con lectores de
páginas(
• Eventos, plugins y themes
• Patrocinado por Mozilla, Adobe, Palm,
Nokia, Blackberry entre otros.
Friday, October 28, 2011
64. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Características
• Manejo de páginas
• Transiciones
• Ventanas de dialogo
• Enlances y botones
• Barras de navegación
• Encabezados / Pies de páginas
• Formularios
• Listas
Friday, October 28, 2011
65. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Manejo de páginas
<body>
<!-- Start of first page -->
<div data-role="page" id="foo">
! <div data-role="content">!
! ! <p>I'm first in the source order so I'm shown as the page.
</p>!!
! ! <p>View internal page called <a href="#bar">bar</a></p>!
! </div><!-- /content -->
</div><!-- /page -->
</body>
Friday, October 28, 2011
66. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Manejo de páginas
<body>
<!-- Start of first page -->
<div data-role="page" id="foo">
! <div data-role="content">!
! ! <p>I'm first in the source order so I'm shown as the page.</p>! !
! ! <p>View internal page called <a href="#bar">bar</a></p>!
! </div><!-- /content -->
</div><!-- /page -->
<!-- Start of second page -->
<div data-role="page" id="bar">
! <div data-role="content">!
! ! <p>I'm first in the source order so I'm shown as the page.</p>! !
! ! <p><a href="#foo">Back to foo</a></p>!
! </div><!-- /content -->
</div><!-- /page -->
</body>
Friday, October 28, 2011
67. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Transiciones
<a href="foo.html" data-rel="dialog" data-transition="pop">Open dialog</a>
<a href="foo.html" data-rel="dialog" data-transition="slidedown">Open dialog</a>
<a href="foo.html" data-rel="dialog" data-transition="flip">Open dialog</a>
<a href="foo.html" data-rel="dialog" data-transition="fade">Open dialog</a>
Friday, October 28, 2011
68. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Ventanas de dialogo
Friday, October 28, 2011
69. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Barras de navegacion
<div data-role="header" data-position="inline">
! <a href="index.html" data-icon="delete">Cancel</a>
! <h1>Edit Contact</h1>
! <a href="index.html" data-icon="check">Save</a>
</div>
Friday, October 28, 2011
70. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Forms
Friday, October 28, 2011
71. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Forms
Friday, October 28, 2011
72. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile - Listas
Friday, October 28, 2011
73. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile y Symfony
Friday, October 28, 2011
74. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
Friday, October 28, 2011
75. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
Friday, October 28, 2011
76. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
Plantillas
Friday, October 28, 2011
84. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile y Symfony / Rutas opción 3
m_portada:
pattern: /m
defaults: { _controller: DesymfonyBundle:Movil:index }
Friday, October 28, 2011
85. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
Controladores y acciones
Friday, October 28, 2011
86. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile y Symfony / Controlador & Acción
public function indexAction()
{
$em = $this->get('doctrine')->getEntityManager();
$ponenciasDiaUno = $em->getRepository('DesymfonyBundle:Ponencia')-
>findTodasDeFecha('2011-07-01');
$ponenciasDiaDos = $em->getRepository('DesymfonyBundle:Ponencia')-
>findTodasDeFecha('2011-07-02');
$format = $this->get('request')->getRequestFormat();
return $this->render('DesymfonyBundle:Default:index.'.$format.'.twig', array(
'ponenciasDiaUno' => $ponenciasDiaUno,
'ponenciasDiaDos' => $ponenciasDiaDos,
));
}
Friday, October 28, 2011
87. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
Testing
Friday, October 28, 2011
88. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
• Podemos utilizar los functional
tests de Symfony2 ya que el
contenido es HTML
• Si utilizamos el modo AJAX para
transiciones y carga dinámica,
no podemos usar los functional
tests
• Alternativas: Selenium RC
• Behat )BDD(
Friday, October 28, 2011
89. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? Web
jQuery Mobile y Symfony
DEMO !
Aplicación desymfony:
• http://desymfony.qa.servergrove.com
• http://desymfony.qa.servergrove.com/m
Panel de Control:
• https://control.servergrove.com/
• https://control.servergrove.com/m
login: demo@servergrove.com
password: Demo2010
Friday, October 28, 2011
90. Aplicaciones Móviles
Quién es Pablo Godel?
Aplicaciones Híbridas
Friday, October 28, 2011
91. Aplicaciones
Aplicaciones Móviles
Quién es Pablo Godel? híbridas
Aplicaciones que combinan aspectos de
aplicaciones nativas y web
Framework PhoneGap
- Desarrollo de aplicación con HTML y JavaScript
- Integración con XCode
- Compila en código nativo
- Acceso a acelerómetro, cámara, geolocation,
notificaciones
Friday, October 28, 2011