mobile web apps

98
Patrick Crowley the.railsi.st

Upload: patrick-crowley

Post on 16-May-2015

2.671 views

Category:

Technology


1 download

DESCRIPTION

Patrick Crowley dives into the world of mobile app development and shows how to use the new jQTouch framework to quickly build awesome mobile-optimized web apps.

TRANSCRIPT

Page 1: Mobile web apps

Patrick Crowleythe.railsi.st

Page 2: Mobile web apps

Mobile web appsusing jQTouch

Page 3: Mobile web apps

What’s yourmobile strategy?

Page 4: Mobile web apps
Page 5: Mobile web apps

• Website (aka “give up”)

Page 6: Mobile web apps

• Website (aka “give up”)

• Website + mobile stylesheet

Page 7: Mobile web apps

• Website (aka “give up”)

• Website + mobile stylesheet

• Native apps for iPhone and Android (awesome, but $$$)

Page 8: Mobile web apps
Page 9: Mobile web apps

• Optimize for mobile displays

Page 10: Mobile web apps

• Optimize for mobile displays

• Reduce page load time

Page 11: Mobile web apps

• Optimize for mobile displays

• Reduce page load time

• Reduce network traffic

Page 12: Mobile web apps

• Optimize for mobile displays

• Reduce page load time

• Reduce network traffic

• Support gestures

Page 13: Mobile web apps

35%

28%

19%

9%

9%

Smartphone Market ShareRIM iPhone Windows Android Other

Source: Nielsen for Q1 2010

Page 14: Mobile web apps

58%23%

13%

6%

Mobile Browser UsageiPhone Android RIM Other

Source: Net Applications for May 2010

Page 15: Mobile web apps

What does this mean?

Page 16: Mobile web apps
Page 17: Mobile web apps

• Website (aka “do nothing”)

Page 18: Mobile web apps

• Website (aka “do nothing”)

• Website + mobile stylesheets

Page 19: Mobile web apps

• Website (aka “do nothing”)

• Website + mobile stylesheets

• Native apps for iPhone and Android (awesome, but $$$)

Page 20: Mobile web apps

• Website (aka “do nothing”)

• Website + mobile stylesheets

• Native apps for iPhone and Android (awesome, but $$$)

• Website + mobile web app

Page 21: Mobile web apps

Mobile strategy = Webkit

Page 22: Mobile web apps

Target mobile browsers people actually use.

Page 23: Mobile web apps
Page 24: Mobile web apps

• More than 81% of mobile browser traffic

Page 25: Mobile web apps

• More than 81% of mobile browser traffic

• iOS (iPhone + iPod Touch)

Page 26: Mobile web apps

• More than 81% of mobile browser traffic

• iOS (iPhone + iPod Touch)

• Android (1.5 and up)

Page 27: Mobile web apps

• More than 81% of mobile browser traffic

• iOS (iPhone + iPod Touch)

• Android (1.5 and up)

• WebOS (Palm -> HP)

Page 28: Mobile web apps

• More than 81% of mobile browser traffic

• iOS (iPhone + iPod Touch)

• Android (1.5 and up)

• WebOS (Palm -> HP)

• Blackberry (future)

Page 29: Mobile web apps

What about... ?!?!

Page 30: Mobile web apps
Page 31: Mobile web apps
Page 32: Mobile web apps
Page 33: Mobile web apps
Page 34: Mobile web apps

TOAS

T

Page 35: Mobile web apps

Who cares?

Page 36: Mobile web apps

Browsing already sucks on these phones

Page 37: Mobile web apps

So optimize for awesome phones!

Page 38: Mobile web apps

Why Webkit?

Page 39: Mobile web apps
Page 40: Mobile web apps

• Web standards

Page 41: Mobile web apps

• Web standards

• Consistent rendering

Page 42: Mobile web apps

• Web standards

• Consistent rendering

• Support for HTML5

Page 43: Mobile web apps

• Web standards

• Consistent rendering

• Support for HTML5

• Animation

Page 44: Mobile web apps

• Web standards

• Consistent rendering

• Support for HTML5

• Animation

• Offline caching

Page 45: Mobile web apps

jQTouch

Page 46: Mobile web apps

Web apps with native look and feel

Page 47: Mobile web apps

jQuery + jQTouch + HTML

Page 48: Mobile web apps

jQTouch 101

Page 49: Mobile web apps

1. Getting started

Page 50: Mobile web apps
Page 51: Mobile web apps

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

Page 52: Mobile web apps

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

<script type="text/javascript"> google.load("jquery", "1.3.2");</script>

Page 53: Mobile web apps

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

<script type="text/javascript"> google.load("jquery", "1.3.2");</script>

<script src="jqtouch/jqtouch.min.js" type="application/x-javascript" charset="utf-8"></script>

Page 54: Mobile web apps

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

<script type="text/javascript"> google.load("jquery", "1.3.2");</script>

<script src="jqtouch/jqtouch.min.js" type="application/x-javascript" charset="utf-8"></script>

<style type="text/css" media="screen">@import "jqtouch/jqtouch.min.css";</style>

Page 55: Mobile web apps

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

<script type="text/javascript"> google.load("jquery", "1.3.2");</script>

<script src="jqtouch/jqtouch.min.js" type="application/x-javascript" charset="utf-8"></script>

<style type="text/css" media="screen">@import "jqtouch/jqtouch.min.css";</style>

<style type="text/css" media="screen">@import "themes/jqt/theme.min.css";</style>

Page 56: Mobile web apps

$.jQTouch({ icon: 'jqtouch.png', statusBar: 'black-translucent', preloadImages: [ 'themes/jqt/img/chevron_white.png', 'themes/jqt/img/bg_row_select.gif', 'themes/jqt/img/back_button_clicked.png', 'themes/jqt/img/button_clicked.png' ]});

Page 57: Mobile web apps

2. Basic page layout

Page 58: Mobile web apps

<body> <div class="current" id="home"> <div class="toolbar"> <h1>jQTouch Demo</h1> </div>

<!-- CONTENT GOES HERE --> </div></body>

index.html

Page 59: Mobile web apps

index.html

#about

#blog

#contact

/video

Page 60: Mobile web apps

<div id="about"> <div class="toolbar"> <h1>About Us</h1> </div></div> <div id="blog"> <div class="toolbar"> <h1>Blog</h1> </div></div>

<div id="about"> <div class="toolbar"> <h1>Contact Us</h1> </div></div>

index.html

Page 61: Mobile web apps

index.html

#about

#blog

#contact

/video

Page 62: Mobile web apps

<div id="video"> <div class="toolbar"> <h1>Video</h1> </div></div>

video.html

Page 63: Mobile web apps

Markup-based UI

Page 64: Mobile web apps

Classes => behavior

Page 65: Mobile web apps
Page 66: Mobile web apps

• Toolbars

Page 67: Mobile web apps

• Toolbars

• Lists

Page 68: Mobile web apps

• Toolbars

• Lists

• Buttons

Page 69: Mobile web apps

• Toolbars

• Lists

• Buttons

• Forms

Page 70: Mobile web apps

• Toolbars

• Lists

• Buttons

• Forms

• Navigation

Page 71: Mobile web apps

Toolbar

Page 72: Mobile web apps

<div id="about"> <div class="toolbar"> <h1>About Us</h1> </div></div> <div id="blog"> <div class="toolbar"> <h1>Blog</h1> </div></div>

<div id="about"> <div class="toolbar"> <h1>Contact Us</h1> </div></div>

Page 73: Mobile web apps

List

Page 74: Mobile web apps

<ul class="rounded"> <li class="arrow"><a href="#about">About Us</a></li> <li class="arrow"><a href="#blog">Blog</a></li> <li class="arrow"><a href="#contact">Contact Us</a></li> <li class="arrow"><a href="/video">Video</a></li></ul>

Page 75: Mobile web apps

UI Demo

Page 76: Mobile web apps

Sample app

Page 77: Mobile web apps

Debugging

Page 78: Mobile web apps
Page 79: Mobile web apps

• iPhone Simulator

Page 80: Mobile web apps

• iPhone Simulator

• Android Simulator

Page 81: Mobile web apps

• iPhone Simulator

• Android Simulator

• Actual devices!!!

Page 82: Mobile web apps

Mobile detection

Page 83: Mobile web apps

// Mobile clientsif (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i)) {

// Redirect to mobile app location.href = "/mobile"; }

Page 84: Mobile web apps

Version switching

Page 85: Mobile web apps

<--->

Page 86: Mobile web apps

Dynamic content filters

Page 87: Mobile web apps

// Disable links$('.page').live('pageAnimationStart', function(){ $('p a').attr("href", "");});

Page 88: Mobile web apps

Resources

Page 89: Mobile web apps
Page 94: Mobile web apps

Coming soon

Page 95: Mobile web apps

Sencha

Page 96: Mobile web apps

Ext JS + jQTouch + Raphaël

Page 97: Mobile web apps

New roadmap and maintainer for jQTouch

Page 98: Mobile web apps

The End