• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Creacion de aplicaciones moviles con symfony2
 

Creacion de aplicaciones moviles con symfony2

on

  • 9,955 views

 

Statistics

Views

Total Views
9,955
Views on SlideShare
6,180
Embed Views
3,775

Actions

Likes
3
Downloads
276
Comments
0

13 Embeds 3,775

http://www.symfony.es 2905
http://localhost 342
http://blog.dagrinchi.com 234
http://symfony.es 167
http://diapositiva.dev 43
http://practica.dev 40
http://127.0.0.1 15
http://www.sfexception.com 12
url_unknown 8
http://webcache.googleusercontent.com 3
http://translate.googleusercontent.com 3
http://www.slideshare.net 2
http://twitter.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Creacion de aplicaciones moviles con symfony2 Creacion de aplicaciones moviles con symfony2 Presentation Transcript

    • 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 )antes de 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 y Symfony• Advertencia! No soy experto en aplicaciones móviles, pero si he creado algunas con Symfony2.
    • Aplicaciones Móviles -Quién es Pablo Godel? Por qué? ¿Por qué?
    • 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
    • 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
    • Aplicaciones Móviles -Quién es Pablo Godel? Por qué? Algunos números...
    • 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
    • Aplicaciones Móviles - Quién es Pablo Godel? Por qué? Teléfonos celulares por PaisesFuente:http://www.nationmaster.com/graph/med_mob_pho-media-mobile-phones
    • Aplicaciones Móviles -Quién es Pablo Godel? Por qué?¿Cómo llegamos hasta aquí?
    • Aplicaciones Móviles -Quién es Pablo Godel? Por qué? Un poco de historia...
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia1979 Primera red celular )1G - primera generación( comercial del mundo lanzada en Japón
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia1983 Motorola DynaTAC El teléfono “móvil” Motorola DynaTAC - también conocido como LA BOTA - costaba US$ 3995 y pesaba 793 gramos!
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia1997 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 WML1.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 WMLpage.</p> </card></wml>
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia WAP/WML
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia WAP/WML
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia WAP/WML
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia WAP/WML Programador: “Renuncio!”
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia WAP/WML Usuario: “Esto no sirve!”
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia 2007...
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia2007 iPhone• Revolución en el mercado de telefonía móvil• Cliente Web Safari
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia2007 iPhone App Store
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia2008 Primer dispositivo Android
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia2010 iPad
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia ¿Qué significa todo esto?
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia Generación móvil La PC no está muerta
    • 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
    • Aplicaciones Móviles -Quién es Pablo Godel? Historia Generación móvil Y esto es sólo el comienzo...
    • Aplicaciones Móviles -Quién es Pablo Godel? Tipos1.Aplicaciones nativas2.Aplicaciones SMS3.Aplicaciones web4.Aplicaciones híbridas )mezcla de nativas & web(
    • Aplicaciones Móviles -Quién es Pablo Godel? Tipos Aplicaciones Nativas
    • AplicacionesAplicaciones MóvilesQuié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/
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? nativas PHP y Symfony? No... Symfony no corre en el teléfono, todavía!
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? nativas 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
    • AplicacionesAplicaciones MóvilesQuié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(
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Nativas Bundles para crear una API - ViewBundle - EverzetRestfulControllersBundle Ambos se convirtieron en - RestBundle https://github.com/FriendsOfSymfony/RestBundle
    • AplicacionesAplicaciones MóvilesQuié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/
    • Aplicaciones MóvilesQuién es Pablo Godel? Aplicaciones SMS
    • AplicacionesAplicaciones MóvilesQuié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
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? SMS
    • AplicacionesAplicaciones MóvilesQuié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
    • AplicacionesAplicaciones MóvilesQuié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.
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? SMS Consideraciones útiles: • Short codes son adminstrados por CSCA )Common Short Code Assoc( • Short codes: compartidos y dedicados ⁃ compartido: el mensaje debe incluir un "keyword" para definir como procesarlo • Short codes: números aleatorios o "elegidos / de vanidad" • Costo: entre $500 y $1000 por mes • Costo por mensaje recibido y enviado • Reglas definidas de comportamiento )código de conducta de MMA( • Comandos standard: join, stop, stop all • Aplicaciones son llamadas campañas y deben ser aprobadas antes de ser lanzadas
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? SMS Consideraciones técnicas: • Protocolos/Formatos: XML, SOAP, XML-RPC • Un mensaje recibido no puede ser recibido nuevamente, en consecuencia es importante guardar copia antes de ser procesado
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? SMS Proveedores de SMS gateway: • Twilio http://twilio.com • Clickatell http://www.clickatell.com • SMSpubli http://www.smspubli.com
    • AplicacionesAplicaciones MóvilesQuié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
    • Aplicaciones MóvilesQuién es Pablo Godel? Aplicaciones Web
    • AplicacionesAplicaciones MóvilesQuié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/
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile Soporta: - IOS )iPhone/iPad( - Android - Blackberry - Windows Phone - palm webOS - symbian
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile
    • AplicacionesAplicaciones MóvilesQuié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.
    • AplicacionesAplicaciones MóvilesQuié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
    • AplicacionesAplicaciones MóvilesQuié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>Im first in the source order so Im shown as the page. </p>!!! ! <p>View internal page called <a href="#bar">bar</a></p>!! </div><!-- /content --></div><!-- /page --></body>
    • AplicacionesAplicaciones MóvilesQuié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>Im first in the source order so Im 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>Im first in the source order so Im shown as the page.</p>! ! ! ! <p><a href="#foo">Back to foo</a></p>! ! </div><!-- /content --> </div><!-- /page --> </body>
    • AplicacionesAplicaciones MóvilesQuié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>
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile - Ventanas de dialogo
    • AplicacionesAplicaciones MóvilesQuié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>
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile - Forms
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile - Forms
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile - Listas
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile y Symfony
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web Plantillas
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web<!DOCTYPE html><html> layout_movil.html.twig<head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>{% block title %}Jornadas de Symfony{% endblock %} | Desymfony.com</title> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" /> <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script> <script src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script></head><body><div data-role="page" id="{% block pageid %}" class="type-{% block pagetype interior %}">{% block header %}{% endblock %}{% block contenido %}{% endblock %}{% block footer %}<div data-role="footer" class="ui-bar" data-theme="b"> <a href="{{ path(m_estatica, { pagina: copyright}) }}">&copy; {{ now | date(Y) }} - desymfony</a> <a href="{{ path(m_estatica, { pagina: privacidad}) }}"> Privacidad</a> <a href="{{ path(m_estatica, { pagina: condiciones}) }}"> Condiciones de uso</a></div>{% endblock %}</div></body></html>
    • Aplicaciones Aplicaciones Móviles Quién es Pablo Godel? Web{% extends "DesymfonyBundle::layout_movil.html.twig" %} ponencia.mhtml.twig{% block pageid ponencia %}{% block pagetype interior %}{% block header %} {% include DesymfonyBundle:Movil:header.mhtml.twig with {titulo: ponencia.titulo} %}{% endblock %}{% block contenido %}<div data-role="content"> <div class="content-primary"> <h2>{{ ponencia.titulo }}</h2> <p>{{ ponencia.descripcion }}</p> <ul data-role="listview" data-inset="true"> <li><strong>Fecha</strong><p class="ui-li-aside">{{ ponencia.fecha | date("d M") }}</p></li> <li><strong>Hora</strong><p class="ui-li-aside">{{ ponencia.hora | date("H:i") }} -{{ ponencia.horaFinalizacion | date("H:i") }}</p></li> <li><strong>Idioma</strong><p class="ui-li-aside">{{ idiomas[ponencia.idioma] }}</p></li> <li><a href="{{ path(m_ponentes) }}"><strong>Ponente</strong><p class="ui-li-aside">{{ ponencia.ponente }}</p></a></li> </ul> </div></div>{% endblock %}
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web header.mhtml.twig<div data-role="header" data-theme="b"> <h1>{{titulo}}</h1> <a href="#home" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home" data-ajax="false">Home</a></div><!-- /header -->
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web Rutas
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile y Symfony / Rutas portada: pattern: / defaults: { _controller: DesymfonyBundle:Default:index } ponencias: pattern: /ponencias.{_format} defaults: { _controller: DesymfonyBundle:Ponencia:index, _format: html } requirements: _format: html|xml|ics ponencia: pattern: /ponencia/{slug} defaults: { _controller: DesymfonyBundle:Ponencia:ponencia } estatica: pattern: /sitio/{pagina} defaults: { _controller: DesymfonyBundle:Default:estatica } requirements: pagina: contacto|copyright|condiciones|privacidad
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile y Symfony / Rutas m_portada: pattern: /m defaults: { _controller: DesymfonyBundle:Default:index, _format: mhtml } m_ponencias: pattern: /m/ponencias.{_format} defaults: { _controller: DesymfonyBundle:Ponencia:index, _format: mhtml } requirements: _format: mhtml|html|xml|ics m_ponencia: pattern: /m/ponencia/{slug} defaults: { _controller: DesymfonyBundle:Ponencia:ponencia, _format: mhtml } m_ponentes: pattern: /m/ponentes defaults: { _controller: DesymfonyBundle:Ponente:index, _format: mhtml }
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile y Symfony / Rutas opción 2 m_portada: pattern: /m defaults: { _controller: DesymfonyBundle:Default:index, movil: true } m_ponencias: pattern: /m/ponencias.{_format} defaults: { _controller: DesymfonyBundle:Ponencia:index, movil: true } requirements: _format: html|xml|ics m_ponencia: pattern: /m/ponencia/{slug} defaults: { _controller: DesymfonyBundle:Ponencia:ponencia, movil: true } m_ponentes: pattern: /m/ponentes defaults: { _controller: DesymfonyBundle:Ponente:index, movil: true }
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web jQuery Mobile y Symfony / Rutas opción 3 m_portada: pattern: /m defaults: { _controller: DesymfonyBundle:Movil:index }
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web Controladores y acciones
    • AplicacionesAplicaciones MóvilesQuié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, )); }
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? Web Testing
    • AplicacionesAplicaciones MóvilesQuié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
    • AplicacionesAplicaciones MóvilesQuié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
    • Aplicaciones MóvilesQuién es Pablo Godel? Aplicaciones Híbridas
    • AplicacionesAplicaciones MóvilesQuié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
    • AplicacionesAplicaciones MóvilesQuién es Pablo Godel? híbridas PhoneGap DEMO !
    • Aplicaciones MóvilesQuién es Pablo Godel? ¿Preguntas?
    • Aplicaciones MóvilesQuién es Pablo Godel? MUCHAS GRACIAS!Fuentes: https://github.com/pgodel/desymfony/tree/movil https://github.com/desymfony/desymfony Slides: http://slideshare.net/pgodel Twitter: @pgodel IRC Freenode: pgodel