98
Patrick Crowley the.railsi.st

Mobile web apps

Embed Size (px)

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.

Citation preview

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