Desenvolvimento de aplicações mobile (iOS e Android) com Drupal e Titanium

Drupal + Titanium

Aqui ficam os slides e o código da nossa apresentação, Renato Ribeiro (Genehome) e José Fernandes (Bloomidea), no DrupalCamp Porto 2012.

Se precisar dos nossos serviços de desenvolvimento de apps mobile estamos disponíveis através da Bloomidea.

> Download do PDF "Desenvolvimento de aplicações mobile (iOS e Android) com Drupal e Titanium"

> Download do código pronto a importar para o Titanium

 


Outline dos slides

A importância do Mobile

  • 87% das pessoas no mundo são utilizadores de Mobile

  • Foram vendidos 488,5 milhões de Smart Phones em 2011

  • Foram desenvolvidas mais de 300,000 Apps nos últimos 3 anos

  • 10,9 mil milhões de downloads...

  • O Facebook reportou 425 milhões de utilizadores ativos via Mobile

  • 200 milhões de reproduções de vídeo no Youtube por dia

A importância do Mobile

  • Só no último trimestre:

    • 31,5 Milhões de iPhones vendidos
    • 11,8 milhões de iPad vendidos
    • 850,000 sistemas Android ativados por dia!
  • 40% de todo o tráfego da internet vai ser mobile em 1013!

Quanto custa uma App

  • “Most apps take at least six months of full-time work and cost between $20,000 and $150,000 to develop” Fonte: Forrester Research

Workflow Tradicional

WOOOOPS!

  • Duplicação/fragmentação do código, para atingir um mesmo fim

  • Duplicação dos recursos:

    • Duas equipas de desenvolvimento ou,

    • Uma equipa de desenvolvimento a trabalhar o dobro do tempo...

  • Duplicação dos problemas:
    • Todos queremos evitar resolver problemas...

    • Mas é inevitável que eles apareçam...

10 razões para usar o Drupal

  1. Comunidade apaixonada e dedicada

  2. Desenvolvimento rápido

  3. Desenvolvimento flexível

  4. Altamente extensível

  5. Escalabilidade garantida

  6. Construído para ser social

  7. Aberto para a sua marca

  8. Sem custos de aquisição ou de licenciamento

  9. Segue os standards

  10. Segurança máxima

Porquê usar o Drupal no Mobile?

  • Gere todos os conteúdos, dados e utilizadores

  • O Drupal funciona como a Cloud, armazenando todos os dados da aplicação

  • Temos o Views + Services Views

Porquê usar o Titanium?

  • Grátis!
  • Compilação nativa
  • Open Source
  • Muito rápido (desenvolvimento e performance)
  • API extensa e estruturada
  • Cloud services
  • Development tools

Porquê usar o Titanium?

  • Escrevemos código uma vez
  • Fazemos o deployment para as múltiplas plataformas
  • Não precisamos de utilizar múltiplas linguagens (a maior parte do tempo...)
  • Muito bom! Todos os programadores conhecem Javascript/HTML(5)/CSS!
  • Nem todos sabem Java...
  • Quase ninguém sabe Objective-C...
  • Só temos que resolver problemas num único projeto

Workflow (Titanium)

Porquê usar Titanium + Drupal?

  • Ambas têm como característica serem “fast deployment”

  • Ambas têm comunidades fortes e ativas

  • Ti.Network + Drupal Services

  • Encontro de Titãs!!

    • O maior na Web (Drupal)
    • Os maiores no mobile (iOS + Android)

Receita

Services

  • Consiste em três “layers”

    • Services: services são métodos
    • Servers: servers são a forma como responde
    • Authentication layer: autenticação

Preparar o Drupal

Instalar/ativar os módulos:

  • Services 3.x
    • Ativar o REST server
    • Requer a lib spyc.php
  • Views 3.x
  • Services Views
  • Devel

Preparar o Titanium

  • Instalar a Cocoa Touch (Mac, instalar o Xcode é o mais simples...)
  • Instalar a Android SDK
  • Criar conta na Appcelerator (www.appcelerator.com)
  • Descarregar e instalar o Titanium
  • Definir a localização da Android SDK no Titanium
  • Em Windows, vai fazer falta:
    • Instalar JAVA 6
    • Adicionar JAVA_HOME nas variáveis de ambiente
    • Adicionar %JAVA_HOME% e %JAVA_HOME%\bin na PATH

Como usar

  • Titanium API

    • UI
    • Network
    • JSON
    • Location APIs
    • Rich Media APIs
    • ...

Windows and Views

  • Uma App tem sempre pelo menos uma Window

    • Uma Window pode conter várias Views

    • Os controles são também Views

      • Botões

      • TableViews

      • ImageViews

      • ScrollViews

      • Pickers

      • ...

Namespaces

  • Titanium.UI: componentes gráficos
  • Titanium.Platform: dados da plataforma (p.ex. Sistema Operativo)
  • Titanium.Database: dados persistentes da aplicação (Data Base)
  • Titanium.Properties: dados persistentes da aplicação (não Data Base)
  • Titanium.Gesture: gestão de gestos e orientações (“acelerómetro”)
  • Titanium.Geolocation: GPS!
  • Titanium.Map: mapas
  • Titanium.Network: WEB!
  • Titanium.Cloud: cloud services
  • Titanium.Android: específico do Android
  • Titanium.UI.iOS: específico do iOS
  • ...

Factory Methods

Método

  • Ti.UI.createView({ ... })
  • Ti.UI.createTextField({ ... })
  • Ti.UI.createButton({ ... })
  • Ti.UI.createTableView({ ... })
  • Ti.UI.createHTTPClient({ ... })
  • ...

Objecto

  • Ti.UI.View
  • Ti.UI.TextField
  • Ti.UI.Button
  • Ti.UI.TableView
  • Ti.Network.HTTPClient
  • ...

Criar uma App no Titanium

  • Criar o projeto
  • Escolher o ID da App
    • ATENÇÃO! Em Android, é importante que coincida com o nome da App e com o domínio, ou seja:

    • Nome: teste

    • Domínio: genehome.pt

    • ID: pt.genehome.teste

  • Escolher as plataformas suportadas e a versão Titanium SDK
    • Pode ser modificado mais tarde...

Comunicação

Demo

  • Três tabs

    • Login/logout
    • New post
    • View posts
  • Comunicação baseada em eventos
    • Carregamento da cache local efectuado ao levantar um evento
    • Carregamento da tableview de dados quando a cache muda

Saber mais...