SlideShare uma empresa Scribd logo
Web Mobile
 @SAPO - Multiplataformas
• Bruno Carreira
• SAPO Multiplataforma @ WEB Mobile
• bruno.d.carreira@co.sapo.pt
m.sapo.pt
Sapo Sessions - Web Mobile
Vamos falar sobre
• enquadramento de mobile WEB
• boas práticas em mobile WEB
• HTM5 (para mobile)
• debugging
• optimizações
Os problemas ...
• browsers (terminais e versões)
• conectividade (custos e limitações)
• ambiente (ecrã e navegação)
• poucos recursos (memória, cpu, etc)
Browsers
• Safari iOS    • Nokia   • Palm
                  Browser   Blazer
• Android
  Webkit        • Opera        • Iris
                 Mobile
• RIM                          • NetFront
  Blackberry    • Opera Mini   • etc.
• S60 Webkit    • IE
Browsers
• ainda temos os tablets,
• pseudo-browsers
• e as diferentes versões de cada um
Browsers
• são muitos
• uns são limitados, outros inovadores
• alguns sem nome (e sem
  documentação)

• ferramentas de debug ? o que é isso ?
Browsers
• cada browser tem os seus problemas
  com CSS e JS

• coisas simples como:
 •   font-style: italic

 •   document.body.offsetWidth
Sapo Sessions - Web Mobile
Browsers
• detectar o terminal server-side
 •   Device Atlas

 •   WURFL


• melhor experiência para cada contexto
• markup simples
• CSS no topo, JS no fim
m.sapo.pt
  Ambientes / Experiências de utilização


No JavaScript                  JavaScript


          touch       touch     touch
pointer                                     Tablet
           CSS         Light     Full
Browsers
• a melhor experiência.
Browsers


• os mesmos conteúdos
 mas agora numa versão
 mais simplista.
Conectividade
• diferentes tipos:
 •   GPRS, 3G, 4G, WIFI


• latência
• custos
• Browsers (parallel downloads)
E tudo fica mais lento ...
Conectividade
• reduzir o numero de requests
• reduzir o overhead dos requests
• usar cache e evitar redirects
• JS e CSS minificado e compactado
• usar hostnames diferentes para conteúdo estático
• usar imagens redimensionadas para o terminal
LazyLoad
• reduz drasticamente o tráfego
• reduz o número de requests
• imagens redimensionadas para o
 terminal
LazyLoad
Ajax/Hijax
• redução de trafego drástica
• minimizar alterações no DOM
• menos consumo de processamento
 server-side
Ajax/Hijax
Ajax/Hijax - Exemplo


        Texto
Ajax/Hijax - Exemplo


        Texto
Ajax/Hijax
• pedido completo: 3466 bytes
• pedido parcial: 1264 bytes
• menos: 2202 bytes
• reduzimos 63% tráfego de markup
markup
Ajax Request   Sim
                     parcial
    Não




  markup
 completo
HTML5
• geo location
• history
• video
• storage (session & local)
• orientation
Geo Location
• suporte nos smartphones mais recentes
• fácil de usar
• permite contextualizar o utilizador
 rapidamente
Sapo Sessions - Web Mobile
geoLocation




Ajax request to
    server




 Lança evento
     para a
 framework JS
History
• permite manipular o histórico de sessão
  do browser (útil para quando usamos
  Hijax)

• podemos alterar a entrada actual do
  histórico, como podemos adicionar
  nova entrada.
History
• iOS e Android >= 2.2 suporta
• Windows Phone 7.5 não suporta
• workaround:
 •   location.hash

 •   onhashchange
Video
• só o iOS suporta a 100% esta
 funcionalidade.

• permite ver um video directamente na
 página WEB sem recorrer a plugins.

• podemos especificar diferentes tipos de
 source por codec

• podemos também utilizar media queries
Video
Video
Storage (local e session)
• para guardar dados do utilizador
 •   favoritos

 •   preferencias

 •   etc


• para guardar cache
Storage (local e session)
Storage (local e session)
Debug
• poucas ferramentas disponíveis
• terminais mais antigos não têm
  ferramentas de debug remoto

• não existe emuladores para terminais
  mais antigos, e nem sempre são 100%
  compativeis
Debug
• alert
• console.log (Android e iOS)
• document.write (Nokia, Windows
 Phone)

• tcpdump
Remote debugging
• iWebInspector ( )iOS


• Safari Web Inspector ( )  iOS 6


• DragonFly (          )
             Opera Mobile


• Logcat ( )
         Android


• Chrome remote debug (          )
                               Android >= 4.0


• http://www.mobilexweb.com/emulators
Optimizações
• Evitar redirects
  •   se tiver de ser: “301 Moved Permanently”


• Simplifica
  •   semântica DOM

  •   usa HTML5 tags


• gzip, minify, etc, etc
Optimizações
• não usem frameworks; ok existe
  excepções

• não usem jQuery só por causa $(“”) , o
  HTML5 tem querySelector

• jQuery demora 8 segundos a fazer
  parse em alguns terminais.
Optimizações
• criem as vossas mini-frameworks, ou
 usem algumas já feitas:
 •   Zepto

 •   XUI

 •   micro.js


• jQuery Mobile = jQuery + GUI Library
Optimizações
• Achas que já está ok?

• Volta a rever tudo e a testar ...
Touch vs Click
• em terminais touch, click tem um delay
  de 300 a 500 ms

• usem ontouchend
• cuidado com o Ghost Click
Sapo Sessions - Web Mobile
Referencias
•   http://www.w3.org/TR/mobile-bp


•   http://www.html5rocks.com/pt/tutorials/


•   http://www.slideshare.net/pp.koch/google-presentation-the-open-web-goes-mobile


•   http://www.slideshare.net/firt/mobile-web-html5-performance-optimization


•   https://developers.google.com/speed/docs/best-practices/rules_intro


•   http://www.slideshare.net/firt/mobile-web-html5-performance-optimization


•   http://net.tutsplus.com/tutorials/html-css-techniques/html5-audio-and-video-what-you-must-know/
Duvidas e questões

Mais conteúdo relacionado

PPTX
Novidades do VS11, .Net 4.5 e EF5
PPTX
Browsers como vivem o que fazem
PPTX
Umbraco para desevovedores
PPTX
Curso de WordPress - Não Sei Programar - Cristiano Santos
PDF
Curso JavaScript - Aula jQuery
PPTX
Curso de WordPress para não programadores - Aula 002 - Cristiano Santos
PDF
Sass - Syntactically Awesome Style Sheets
PDF
Minicurso Ruby e Rails (RailsMG UNA)
Novidades do VS11, .Net 4.5 e EF5
Browsers como vivem o que fazem
Umbraco para desevovedores
Curso de WordPress - Não Sei Programar - Cristiano Santos
Curso JavaScript - Aula jQuery
Curso de WordPress para não programadores - Aula 002 - Cristiano Santos
Sass - Syntactically Awesome Style Sheets
Minicurso Ruby e Rails (RailsMG UNA)

Semelhante a Sapo Sessions - Web Mobile (20)

PDF
Jquery Mobile
KEY
Best pratices para desenvolvimento mobile
PPT
PDF
Mobile, por onde começar
PDF
Desenvolvimento Mobile Web & Software Livre - Flisol cg
PDF
Seminário de Desenvolvimento Mobile - Etec Cafelândia
PDF
BKRender: mobile made easy
PDF
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
PDF
Phonegap
PPT
Palestra / SDD / Crossbrowsing
PDF
Desenvolvimento Mobile Web e PHP no Sinform2010
PDF
PHP e o Desenvolvimento Mobile Web no LinguAgil
PPTX
Phonegap - self RJ
PDF
Desenvolvimento Mobile Web
ODP
HTML5 & suas APIs
ODP
Html5,css3,javascript o lugar onde sonhos se tornam realidade.
ODP
Html5,css3,javascript: O lugar onde sonhos se tornam realidade.
PDF
Desenvolvimento Mobile Web na TechEdBr
PDF
HTML5 Mobile Aula 1
PDF
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Jquery Mobile
Best pratices para desenvolvimento mobile
Mobile, por onde começar
Desenvolvimento Mobile Web & Software Livre - Flisol cg
Seminário de Desenvolvimento Mobile - Etec Cafelândia
BKRender: mobile made easy
Sencha Touch, RhoMobile, AppMobi e jQuery Mobile um comparativo entre platafo...
Phonegap
Palestra / SDD / Crossbrowsing
Desenvolvimento Mobile Web e PHP no Sinform2010
PHP e o Desenvolvimento Mobile Web no LinguAgil
Phonegap - self RJ
Desenvolvimento Mobile Web
HTML5 & suas APIs
Html5,css3,javascript o lugar onde sonhos se tornam realidade.
Html5,css3,javascript: O lugar onde sonhos se tornam realidade.
Desenvolvimento Mobile Web na TechEdBr
HTML5 Mobile Aula 1
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Anúncio

Sapo Sessions - Web Mobile

  • 1. Web Mobile @SAPO - Multiplataformas
  • 2. • Bruno Carreira • SAPO Multiplataforma @ WEB Mobile • bruno.d.carreira@co.sapo.pt
  • 5. Vamos falar sobre • enquadramento de mobile WEB • boas práticas em mobile WEB • HTM5 (para mobile) • debugging • optimizações
  • 6. Os problemas ... • browsers (terminais e versões) • conectividade (custos e limitações) • ambiente (ecrã e navegação) • poucos recursos (memória, cpu, etc)
  • 7. Browsers • Safari iOS • Nokia • Palm Browser Blazer • Android Webkit • Opera • Iris Mobile • RIM • NetFront Blackberry • Opera Mini • etc. • S60 Webkit • IE
  • 8. Browsers • ainda temos os tablets, • pseudo-browsers • e as diferentes versões de cada um
  • 9. Browsers • são muitos • uns são limitados, outros inovadores • alguns sem nome (e sem documentação) • ferramentas de debug ? o que é isso ?
  • 10. Browsers • cada browser tem os seus problemas com CSS e JS • coisas simples como: • font-style: italic • document.body.offsetWidth
  • 12. Browsers • detectar o terminal server-side • Device Atlas • WURFL • melhor experiência para cada contexto • markup simples • CSS no topo, JS no fim
  • 13. m.sapo.pt Ambientes / Experiências de utilização No JavaScript JavaScript touch touch touch pointer Tablet CSS Light Full
  • 14. Browsers • a melhor experiência.
  • 15. Browsers • os mesmos conteúdos mas agora numa versão mais simplista.
  • 16. Conectividade • diferentes tipos: • GPRS, 3G, 4G, WIFI • latência • custos • Browsers (parallel downloads)
  • 17. E tudo fica mais lento ...
  • 18. Conectividade • reduzir o numero de requests • reduzir o overhead dos requests • usar cache e evitar redirects • JS e CSS minificado e compactado • usar hostnames diferentes para conteúdo estático • usar imagens redimensionadas para o terminal
  • 19. LazyLoad • reduz drasticamente o tráfego • reduz o número de requests • imagens redimensionadas para o terminal
  • 21. Ajax/Hijax • redução de trafego drástica • minimizar alterações no DOM • menos consumo de processamento server-side
  • 25. Ajax/Hijax • pedido completo: 3466 bytes • pedido parcial: 1264 bytes • menos: 2202 bytes • reduzimos 63% tráfego de markup
  • 26. markup Ajax Request Sim parcial Não markup completo
  • 27. HTML5 • geo location • history • video • storage (session & local) • orientation
  • 28. Geo Location • suporte nos smartphones mais recentes • fácil de usar • permite contextualizar o utilizador rapidamente
  • 30. geoLocation Ajax request to server Lança evento para a framework JS
  • 31. History • permite manipular o histórico de sessão do browser (útil para quando usamos Hijax) • podemos alterar a entrada actual do histórico, como podemos adicionar nova entrada.
  • 32. History • iOS e Android >= 2.2 suporta • Windows Phone 7.5 não suporta • workaround: • location.hash • onhashchange
  • 33. Video • só o iOS suporta a 100% esta funcionalidade. • permite ver um video directamente na página WEB sem recorrer a plugins. • podemos especificar diferentes tipos de source por codec • podemos também utilizar media queries
  • 34. Video
  • 35. Video
  • 36. Storage (local e session) • para guardar dados do utilizador • favoritos • preferencias • etc • para guardar cache
  • 37. Storage (local e session)
  • 38. Storage (local e session)
  • 39. Debug • poucas ferramentas disponíveis • terminais mais antigos não têm ferramentas de debug remoto • não existe emuladores para terminais mais antigos, e nem sempre são 100% compativeis
  • 40. Debug • alert • console.log (Android e iOS) • document.write (Nokia, Windows Phone) • tcpdump
  • 41. Remote debugging • iWebInspector ( )iOS • Safari Web Inspector ( ) iOS 6 • DragonFly ( ) Opera Mobile • Logcat ( ) Android • Chrome remote debug ( ) Android >= 4.0 • http://www.mobilexweb.com/emulators
  • 42. Optimizações • Evitar redirects • se tiver de ser: “301 Moved Permanently” • Simplifica • semântica DOM • usa HTML5 tags • gzip, minify, etc, etc
  • 43. Optimizações • não usem frameworks; ok existe excepções • não usem jQuery só por causa $(“”) , o HTML5 tem querySelector • jQuery demora 8 segundos a fazer parse em alguns terminais.
  • 44. Optimizações • criem as vossas mini-frameworks, ou usem algumas já feitas: • Zepto • XUI • micro.js • jQuery Mobile = jQuery + GUI Library
  • 45. Optimizações • Achas que já está ok? • Volta a rever tudo e a testar ...
  • 46. Touch vs Click • em terminais touch, click tem um delay de 300 a 500 ms • usem ontouchend • cuidado com o Ghost Click
  • 48. Referencias • http://www.w3.org/TR/mobile-bp • http://www.html5rocks.com/pt/tutorials/ • http://www.slideshare.net/pp.koch/google-presentation-the-open-web-goes-mobile • http://www.slideshare.net/firt/mobile-web-html5-performance-optimization • https://developers.google.com/speed/docs/best-practices/rules_intro • http://www.slideshare.net/firt/mobile-web-html5-performance-optimization • http://net.tutsplus.com/tutorials/html-css-techniques/html5-audio-and-video-what-you-must-know/

Notas do Editor

  • #2: \n
  • #3: \n
  • #4: Perguntar a audiência se já foram ao m.sapo.pt\nQual a opinião ?\n
  • #5: O m.sapo.pt na sua versão tablet e mobile touch.\ndizer que esta apresentação resulta do conhecimento adquirido na realização do mobile\n
  • #6: muito se fala de mobile; que o mobile é o futuro; que temos de ter todos os conteúdos em mobile.\nO porque de ainda não termos todos os conteúdos em mobile e em sites responsive.\n\n
  • #7: perguntar à audiência quais são os terminais que têm\nBrowsers: -> se em desktop é complicado em mobile é 4x pior\nFalar dos diferentes tipos de terminal : touch vs pointer, pointer vs lowend, etc\n
  • #8: alguns exemplos do nosso parque de browsers.\n
  • #9: e como ainda não basta-se ...\n
  • #10: Em resumo:\nnão existe forma de satisfazer todo o parque que existe ...\n
  • #11: RIM não devolve resultado do document.body.offsetWidth\nfont-style: italic em alguns terminais mais antigos não interpretam este CSS\n
  • #12: é o caos !!!!\n
  • #13: falar que estamos a realizar um catalogo de devices no sapo\ndar como exemplo a versão pointer vs touch do m.sapo.pt em que a segmentação é realizada server-side, assim como a versão light e full do touch\n
  • #14: pointer: BlackBerry, Nokia, outros.\nno js touch: não disponível no m.sapo.pt mas irá ser utilizada nos internacionais (client-side load)\njs touch light: utilizada nos terminais Android < 3.0 e Windows Phone 7.5\njs touch full: utilizada nos terminais iOS > 4.2.1 e Android 4.0\njs touch tablet: utilizada em tablets: device-width > 640px\n
  • #15: quem tem um bom telemovel quer uma experiência óptima, muitas vezes quer uma experiência próxima à de uma aplicação nativa\n
  • #16: quem tem um telemovel de média gama, procura ter os conteúdos de forma rápida e simples\nÉ QUASE IMPOSSÍVEL TER 100% DE COMPATIBILIDADE EM TODOS OS TERMINAIS POR ISSO OPTEM PELO BEST EFFORT \n
  • #17: \n
  • #18: \n
  • #19: São as recomendações normais para qualquer site WEB; mas no contexto mobile são mais prementes dado a conectividade por norma ser mais lenta e com maiores latências. \n
  • #20: \n
  • #21: O que é o LazyLoad?\n\n
  • #22: no mobile utilizamos o lazyload nas imagens, simplemente trocando a src mas podemos fazer um carregamento progressivo da imagem, se o site for responsive com desktop\npor exemplo o src ser a imagem mobile de baixa qualidade e o data-src ser a imagem HD e só é utilizada em modo desktop ou com terminais retina que estejam sobre wifi.\n
  • #23: \n
  • #24: O que é Hijax?\n\n
  • #25: Howto ... como é simples interceptar todos os links!\n
  • #26: \n
  • #27: \n
  • #28: \n
  • #29: \n
  • #30: \n
  • #31: contextualizar\n
  • #32: \n
  • #33: \n
  • #34: \n
  • #35: \n
  • #36: \n
  • #37: testar se o browser suporta video e que tipos de formatos.\n
  • #38: \n
  • #39: \n
  • #40: \n
  • #41: \n
  • #42: \n
  • #43: \n
  • #44: \n
  • #45: \n
  • #46: \n
  • #47: Falar que inicialmente estávamos a usar o Zepto com alguns add-ons desenvolvidos por nós.\nCom a necessidade de suportar o Windows Phone 7.5 (Zepto incompatível porque usa o __proto), tivemos de migrar para o jQuery; no entanto está no roadmap criar a nossa core-framework\n
  • #48: Falar da experiência do m.sapo.pt:\n - 3dias antes do lançamento em Androids de baixa gama tudo estava muito lento.\n - criou-se um fork da framework, que se chamou SAPO.Mobile.Light só com o essencial para a navegação; deixou-se cair o lazyload, autoload, hijax, history, fast click, etc\n - experiência de navegação Android != iOS\n
  • #49: - o que ganho com o fast click?\n- o que é o ghost click?\n- como evitar?!\n
  • #50: \n
  • #51: \n
  • #52: \n