27
Appleless iPhone Apps

iPhone Appleless Apps

Embed Size (px)

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.

Citation preview

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