34
© 2010 Mayflower GmbH iPhone Apps with HTML5 Thorsten Rinne I June 12th 2010 Dutch PHP Unconference 2010

iPhone Apps with HTML5

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: iPhone Apps with HTML5

© 2010 Mayflower GmbH

iPhone Apps with HTML5

Thorsten Rinne I June 12th 2010

Dutch PHP Unconference 2010

Page 2: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Thorsten RinneSenior Developer - Team Lead - Head of Open Source Labs

‣Diplom-Informatiker (FH)‣Zend Certified Developer‣Certified Scrum Master‣PHP since PHP 3.0.16‣phpMyFAQ since 2001

Page 3: iPhone Apps with HTML5

iPhone!iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

iPhone?

Android?Blackberry?

Palm Pre? Maemo?

Windows Mobile?

Page 4: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Why iPhone?

Page 5: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Why iPhone?

App Store99%

Android Market & Co.1%

Daten: Gartner

Sales volume mobile apps in 2009

Page 6: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

400x more sales in App Store than in Android Market.

Daten: Gamneloft

Page 7: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

WebKit Rendering Engine

Page 8: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Web App vs. Native App

Page 9: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

What‘s a Web App?

Page 10: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

What‘s a native app?

Page 11: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I Foto: James Jordon

$$$$Advantages of native apps

Page 12: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

http://www.flickr.com/photos/acaben/

$$$$Disadvantages of native apps

Page 13: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

http://www.flickr.com/photos/30046478@N08/Advantages of web apps

Page 14: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Disadvantages of web apps

Page 15: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Which solution is best for you?

(c) Chris Owens

Page 16: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

HTML 5

Page 17: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

<!DOCTYPE html><html lang="de"><head>

<meta charset=utf-8 /><meta name="viewport" content="user-scalable=no,width=device-width" /><title>HTML 5</title>

</head><body><section id="wrapper">

<header><h1><abbr>HTML</abbr> 5</h1>

</header><article>

<p>iPhone Apps with HTML5</p></article><footer>

<a href="http://www.mayflower.de">(c) 2010 Mayflower GmbH</a></footer>

</section></body></html>

Page 18: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

CSS 3

Page 19: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

<div id="preview-multi_text_shadows"><p>Multiple shadows are Hot</p>

</div>

#preview-multi_text_shadows p {background:none repeat scroll 0 0 black;color:white;font-size:30px;margin:10px;padding:40px 0 10px;text-align:center;text-shadow:0 0 4px white, 0 -5px 4px #FFFF33, 2px -10px 6px #FFDD33, -2px -15px 11px #FF8800, 2px -25px 18px #FF2200;

}

Page 20: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

JavaScriptDOM 5

Page 21: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

function saveSettings(){

localStorage.location = $('#setting').val();return false;

}! ! function loadSettings(){

$('#setting').val(localStorage.location);}

localStorage with jQuery<section>

<div> <label for="setting">localStorage:</label> <input type="text" name="setting" value="" id="setting" />

</div></section>

Page 22: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Look & Feel with CSS and JavaScript

Page 23: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Demo jQTouch: Animationen and localStorage

Page 24: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Page 25: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Page 26: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Examples

Beep, Vibrate und Alert

Page 27: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Beep, Vibrate and Alert

function onAlertButton(){! navigator.notification.alert("Message","Title", "Label");}

function onVibrateButton(){! navigator.notification.vibrate(100); // not supported by iPhone} function onBeepButton(){! navigator.notification.beep();}

Page 28: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Demo

Geolocation

Page 29: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Geolocation

function getCurrentLocation(){! $('#location').append = "Get current position ...";

! var funk = function(position)! {

! $('#location').append = "Latitude: " + position.coords.latitude + " Longitude: " + position.coords.longitude;

! };

! var fail = function(error)! {! ! alert("Error " + error);! }

navigator.geolocation.getCurrentPosition(funk,fail);}

Page 30: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Demo

Play & Record

Page 31: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Play ...

function playRecord(){        if (navigator.audio) {

            $('#play-button').attr('src','stop.png');        navigator.audio.play();

        } else {

            alert("No audio file found.");        }}

Page 32: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Record ...

function startRecord(){        navigator.audio = new Media(null, recordingSuccess, recordingFailure);        $('#cd-button').attr('src','cd.png');        navigator.audio.startAudioRecord();        navigator.notification.activityStart();        $('#record-button').attr('src','stop.png');        navigator.audio.startAudioRecord();}

function stopRecord(){        $('#record-button').attr('src','record.png');        navigator.notification.activityStop();        $('#cd-button').attr('src','cd_remove.png');        navigator.audio.stopAudioRecord();}function recordingSuccess(url){        navigator.notification.activityStop();          // Tu etwas}    function recordingFailure(error){        navigator.notification.activityStop();          alert("Aufnahme fehlgeschlagen: " + error);}

Page 33: iPhone Apps with HTML5

iPhone Apps with HTML5 I Mayflower GmbH I June 12th 2010 I

Questions?

Page 34: iPhone Apps with HTML5

Thank you very much!

© 2010 Mayflower GmbH

Thorsten [email protected]+49 89 242054 31

Mayflower GmbHMannhardtstraße 680538 München

Contact