iPhone Appleless Apps

27
Appleless iPhone Apps

description

A talk that demonstrates how to exploit the technology inside Safari on the iPhone to create rich apps without having to go through the app store.

Transcript of iPhone Appleless Apps

Page 1: iPhone Appleless Apps

Appleless iPhone Apps

Page 2: iPhone Appleless Apps

...without the App Store

Page 3: iPhone Appleless Apps

...without Objective-C

Page 4: iPhone Appleless Apps

...using web technology

Page 5: iPhone Appleless Apps

HTML5 & CSS3

Page 6: iPhone Appleless Apps

And it works without a

connection!

Page 7: iPhone Appleless Apps

Demo

Page 9: iPhone Appleless Apps

Technology

Page 10: iPhone Appleless Apps

•HTML & CSS

•HTML5 offline applications

•Meta tags to hide status bar

•Touch icon

•Touch events

Page 11: iPhone Appleless Apps

Offline Applications

<html manifest="rubiks.manifest">

Page 12: iPhone Appleless Apps

CACHE MANIFEST

/demo/rubiks/style.css/demo/rubiks/jquery.min.js/demo/rubiks/rubiks.js

# version (busting)

Page 13: iPhone Appleless Apps

1. Requests all resources

2. Parses manifest

3. Reloads and stores/caches all resources (not sure why)

4. Now ready

First Load

Page 14: iPhone Appleless Apps

Subsequent load1. Request manifest

2. Checks for changes in manifest

3. If changed:

• Reload all resources and cache locally

4. else

• Load client with local resources

Page 15: iPhone Appleless Apps

Home Screen App

•Touch icon 73x73:<link rel="apple-touch-icon" href="apple-touch-icon.png" />

•Web app capable meta tags

Page 16: iPhone Appleless Apps

<meta name="apple-mobile-web-app-capable" content="yes" />

<meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" />

Page 17: iPhone Appleless Apps

Touch Events

•mousedown => touchstart

•mouseup => touchend

•mousemove => touchmove

•within event.touches[0]

Page 18: iPhone Appleless Apps

Simple jQuery

$(document).bind('touchstart',

function (evt) {

// jQuery creates a bespoke event

evt = evt.originalEvent.touches[0];

}

);

Page 19: iPhone Appleless Apps

Simple jQuery

$(document).bind('touchstart',

function (evt) {

// jQuery creates a bespoke event

evt = evt.originalEvent.touches[0];

}

);

Page 20: iPhone Appleless Apps

Detecting iPhonesvar iPhone =

RegExp(" AppleWebKit/")

.test(navigator.userAgent)

&&

RegExp(" Mobile/")

.test(navigator.userAgent);

Page 21: iPhone Appleless Apps

Detecting iPhonesvar iPhone =

RegExp(" AppleWebKit/")

.test(navigator.userAgent)

&&

RegExp(" Mobile/")

.test(navigator.userAgent);

Page 22: iPhone Appleless Apps

Native Look

Page 23: iPhone Appleless Apps

•iUi - older, doesn't do native CSS transforms

•jqTouch - jQuery does do native CSS transforms

Page 25: iPhone Appleless Apps

But also:

Page 26: iPhone Appleless Apps

•Geolocation

•Offline storage: web database or storage

•Off/Online detection

•CSS 3D transforms & CSS transitions

•Canvas

Page 27: iPhone Appleless Apps

Thanks!

Remy Sharp / @rem

http://icanhaz.com/rubiks