Department of Computer Science Institute for System Architecture, Chair for Computer Networks Application Development for Mobile and Ubiquitous Computing 7. Web-based Mobile Applications Dr. Ing. Thomas Springer Technische Universität Dresden Chair of Computer Networks
38
Embed
Application Development for Mobile and Ubiquitous ...ts2/admuc/lecture1415/7. Web-based Mobi… · Ubiquitous Computing 7. Web-based Mobile Applications Dr. Ing. Thomas Springer Technische
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Department of Computer Science Institute for System Architecture, Chair for Computer Networks
Application Development for Mobile and Ubiquitous Computing
7. Web-based Mobile Applications
Dr. Ing. Thomas Springer Technische Universität Dresden
Chair of Computer Networks
Lecture Structure
Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications 2
Table of Contents
§ Motivation and Challenges § Main Principles
• Responsive Web design • Mobile First • Design patterns
§ Further Features in HTML5 § Server-side adaptation
3 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Technologies for Web Applications
4
§ Upcoming HTML5 and CSS 3 • advanced interface styling • plugin-less multimedia and computing capabilities • layout transformation for multiple screen sizes • offline application support • alternative media files
• quickly start new HTML5 project: www.initializr.com
Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Challenges of Mobile Web Design
§ Dependency to network connection § Heterogeneous device support (desktop, tablets, smartphones)
• Slower network and CPUs • Screen size can no longer be fixed • Native look and feel • Touch/gesture input • Access to native functions (e.g. location or camera)
Ø Flexible adaptation of information/media towards different
devices and networks required
http://line25.com/articles/showcase-of-outstanding-responsive-web-designs 5 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Responsive Web Design
§ Main adaptation problem: interface scaling over different device screens • inofficial default screen width for PCs: 1024 px • screen width range on mobile devices: 320 - 2048 px • classical approach: different versions of web site/app
(e.g. mobile.example.com)
§ Responsive Web Design • principle described by Ethan Marcotte • single HTML page markup
(avoid separate mobile version) • adapts to screen size through CSS • main concepts:
o Fluid grids o Flexible images o CSS Media Queries
6 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Fluid Grids
§ page-layout based on grid system • maximal layout width as starting point • layout defined by columns with fixed width / margins
§ translate fixed grid sizes to proportional values • % or em (relative font size) for block elements and font sizes • value for each element proportional to parent (context):
element size / parent size = relative size
960px69px
900px
12px
566px 331px
Article566 ÷ 900 = 62.8888889%
.article {width: 62.8888889%;float: left;}
Sidebar
.sidebar {width: 36.7777778%;float: right;}
331 ÷ 900 = 36.7777778%
Banner 900 ÷ 960 = 0.9375.banner {width: 93.75%;}
#page {width: 90%;} (90% of browser window -‐> equals to 960px)
7
960 Grid System (960.gs) 1200px Grid System (1200px.com) Blueprint (blueprintcss.org)
Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Flexible Images
§ large images don't automatically resize • break layout if larger than parent element
§ simple solution: • img {max-width: 100%;} • force image to match width of its container • resized proportionally in most browsers (keeps ratio) • also for other elements (video, object, embed)
§ low quality resizing in older Windows browsers • Workaround: img { -ms-interpolation-mode: bicubic; } • works in IE7 or higher
8 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Multi-resolution images
§ Problem: images don't scale across current screen resolutions (72 - 320 dpi) • recent problem due to high res (retina) screen on mobile devices • many mobile devices need higher resolution images than PCs • network bandwidth needs to be considered
§ Solution: <picture> element • currently developed by W3C, not implemented yet • similar to <video> • multiple sources bound to media attributes (e.g. min-width) • src-set attribute contains list of image files bound to device-pixel-ratios • device-pixel-ratio: ratio between physical pixels and pixels on device,
given in 1x, 1.5x, 2x iPhone: 320 physical px and 320 browser px => 1x re9na iPhone: 640 physical px and 320 browser px => 2x
9 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Multi-resolution images
§ <picture> not yet in browsers, but possible through Javascript • e.g. picturefill (http://scottjehl.github.com/picturefill/) • emulates <picture> element programmatically • uses <div> and data-* attributes
<div data-‐picture data-‐alt="A giant stone face at The Bayon temple in Angkor Thom, Cambodia"> <div data-‐src="small.jpg"></div> <div data-‐src="medium.jpg" data-‐media="(min-‐width: 400px)"></div> <div data-‐src="large-‐highres.jpg" data-‐media="(min-‐width: 800px) and (min-‐device-‐pixel-‐ra9o: 2.0)"></div> <div data-‐src="extralarge.jpg" data-‐media="(min-‐width: 1000px)"></div> <noscript> <img src="external/imgs/small.jpg" alt="A giant stone face at The Bayon temple in Angkor Thom, Cambodia"> </noscript> </div>
10 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
CSS Media Queries
§ Conditionally apply styles based on browser attributes • multiple CSS styles for the same elements
§ Mainly: style content based on the screen size • define multiple page layouts with CSS on same HTML markup • define breakpoints for different layouts (e.g. screen width) • show/hide/resize/move elements depending on layout
§ List of example sites: http://mediaqueri.es
Internet Images SRL, http://interim.it
11 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
CSS Media Queries
§ media types: • all | aural | braille | handheld | print | projection | screen | tv
§ limit scope of CSS properties by media type / feature: • <link rel="stylesheet" media="only screen and (color)“
§ any combination of single media type and chained media features (and operator) • @media screen and (min-‐device-‐width: 480px) and (orientation: landscape) • @media screen and (max-‐width: 1200px) and (min-‐resolution: 260dpi) and
12 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Multi-Device Layout Patterns
§ Luke Wroblewski has compiled list of popular responsive layouts: § Creation based on the principles of responsive web design § See examples at: http://www.lukew.com/ff/entry.asp?1514
Column Drop
Tiny Tweaks
Off Canvas 13 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Mostly Fluid
Layout Shifter
Example - Mostly Fluid
320px - Phone
1024px - large Tablet, Desktop
768px - large Tablet portrait
14 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
480px - small Tablet, Phone landscape
Example - Mostly Fluid
§ Mobile first - base CSS (320px): § 2nd media query (768px):
§ 1st media query (480px): § 3rd media query (1000px+):
body { margin: 10px 0; } header, nav, article, footer { width: 100%; } nav ul li { width: 100%; }
@media (min-‐width: 480px) { nav ul li { float: left; width: 25%; /* 4 Items */ } article div.list div { float: left; width: 50%; } }
@media (min-‐width: 768px) { body { margin: 20px 0; } header { float: left; } nav { float: right; width: auto; } }
15 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Mobile First
§ mobile web is the future market • "Mobile phones will overtake PCs as the most common Web
access devices worldwide by 2013" - Gartner • optimize content for mobile also benefits desktop
o Focus on most important content, tune content for limited resources • Mobile First approach promoted by Luke Wroblewski
§ Principle: start with mobile first • small screen
o condensed navigation / content (reduce to most important parts) o responsive layout
• slow network o reduce requests and file sizes o image sprites, single CSS/JS files, minfied (tools like Google Minify) o ApplicationCache, localStorage o CSS 3 / <canvas> / SVG instead of raster images
• mobile device usage o optimize for one-hand navigation / partial attention of user
16 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Mobile First - Innovation
§ touch input • touch target sizes:
o recommended: 9mm/34px o minimum: 7mm/26px
• visual size is 60-100% of target size • use multi-touch input:
o Tap | Double Tap | Drag | Flick | Pinch | Spread | Rotate • interface paradigms: drag to reveal, drag to refresh, ...
§ device features • location
o adapt content to user location • compass
o augmented reality based on user's location and direction • orientation (portrait, landscape)
o optimize layout (navigation, content) to device orientation • camera
o use images as input / output
17 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Mobile Enablers in HTML5
§ based on XHTML 1.1 and HTML 4 § authored by W3C and WHATWG § new elements and attributes § new technologies, modularized under sections:
• promoted under HTML5, but most are separate standards
§ more capabilities for web applications § reduce necessity of proprietary plugins
• plugins often not available on mobile devices
Semantics Multimedia
Offline & Storage 3D, Graphics & Effects
Device Access Performance & Integration
Connectivity CSS 3.0
18 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
• itemscope defines vocabulary o schema.org, Rich Snippets, WHATWG
• itemprop o assign word of vocabulary to element
(e.g. itemprop=„name“> John Doe)
19 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Multimedia
§ <video> and <audio> tag: § play video / audio files without plugin
• control via browser agent or Javascript • multiple file sources possible (codec alternatives) • attributes: autoplay, controls, muted, ... • varying codec support across browsers • video: theora / h.264 / webM • audio: ogg / wav / mp3 / webM / aac
<video id="myVideo"> //alternative sources <source src="http://media.w3.org/2010/05/sintel/trailer.mp4" type='video/mp4; codecs="avc1, mp4a"'> <source src="http://media.w3.org/2010/05/sintel/trailer.ogv" type='video/ogg; codecs="theora, vorbis"'> Your user agent does not support the HTML5 Video element. //fallback text </video> <button type="button" onclick="vid_play_pause()">Play/Pause</button> //Javascript video API <script> function vid_play_pause() { var myVideo = document.getElementById("myVideo"); if (myVideo.paused) {myVideo.play();} else {myVideo.pause();} } </script>
20 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Device Access
§ access device sensors and data sources: • Location, camera, microphone, screen orientation, motion /
acceleration, contacts, calendar § still early development
• currently only few APIs: o Javascript Geolocation API o deviceorientation, devicemotion DOM events
§ mobile frameworks (e.g. Phonegap) also offer similar device access
§ example: Geolocation API • provides highlevel interface to location information through
Javascript • adds navigator.geolocation element to DOM • User can allow/disallow location access! • http://caniuse.com/#feat=geolocation
21 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
// test if Geolocation is supported if (typeof navigator.geolocation === 'undefined'){ alert("Geolocation not supported by your web browser."); } else {geo = navigator.geolocation;} // get Position if (geo) {geo.getCurrentPosition(successFunction, errorFunction); } // read position object and display lat./long. function successFunction(position) { var lat = position.coords.latitude; var long = position.coords.longitude; var acc = position.coords.accuracy; var speed = position.coords.speed; var heading = position.coords.heading; alert('Your latitude is :'+lat+' and longitude is '+long); } // display error message function errorFunction(position) { alert('Error!'); }
22 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Connectivity
§ WebSockets: • bidirectional communication channel over TCP • WebSocket API + WebSocket • optimized, standardized version of Comet • long-lived, open connection allows server push instead of polling
• protocol: o IETF RFC 6455 o open WebSocket through HTTP upgrade request
• API (Javascript): o create new WebSocket object: new WebSocket(url, protocols) o send(data), close() methods o socket events: onopen, onclose, onmessage, onerror
23 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Performance & Integration
§ Web Workers: • client background Javascript tasks • long-running, multi-threaded, computationally expensive • independent from user-interface tasks • no access to DOM, uses message-passing
§ two types: • dedicated: linked to creator script • shared: accessible by all scripts from same origin/domain
§ XMLHTTPRequest 2: • additional functionality to XHR 1 • tracking data transmission progress through progress event • binary data uploads (not directly possible with XHR 1) • cross-domain AJAX requests
24 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Offline & Storage
§ ApplicationCache: • control caching of user agent (browser) • instruct with cache manifest file • list files in CACHE, NETWORK (online only) and FALLBACK
sections • Javascript API to force cache updates
§ Web Storage: • store named key/value pairs locally • Javascript API • value can be any data type supported by Javascript • size limitation per origin/domain (5-10MB)
§ two storage types: • localStorage: no expiration date for stored data • sessionStorage: data flushed after session
25 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Offline & Storage
§ IndexedDB: • noSQL transactional local storage • persist (complex) Javascript objects as key/value pair • indexing of value properties • no hard size limit (user permission needed for 50MB+)
§ asynchronous Javascript API: • transaction requests, retrieve data via callbacks • synchronous API for Web Workers planned
§ File API: • access local files in Javascript • user has to select files through <input> element or drag and drop • read single File, directory (FileList) or binary data (Blob) • uses FileReader interface • reference local files through Blob URIs
26 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
CSS 3.0
§ more advanced interface styling: • rounded borders • shadows • color alpha channel (RGBA) • multiple backgrounds
§ transitions and animations: • timed transition between two CSS styles • animations: complex transitions over multiple styles
§ web fonts: • Embed font types with @font-face • Embedded Open Type (.eot), TrueType (.ttf), OpenType (.otf)
§ reduce necessity for plugins (Flash, ...) and images (e.g. for rounded borders)
27 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
HTML5 – Current State
§ HTML5 • planned "Candidate Recommendation" status by end of 2014 • most standards further in the future (Working Draft)
§ use of features depend on two factors: • implementation across different browsers • standardized interface between implementations
§ www.caniuse.com: • check browser support for each technology
http://caniuse.com/#feat=websockets
28 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Mobile Web Application Development
§ Responsive CSS Frameworks: • Bootstrap (twitter.github.com/bootstrap) • jQuery UI (jqueryui.com) • Foundation (foundation.zurb.com) • many more...
§ Mobile Web Application Frameworks: • Sencha Touch (www.sencha.com/products/touch) • jQuery Mobile (jquerymobile.com) • M-Project (the-m-project.org) • LungoJS (www.lungojs.com) • Joshfire (framework.joshfire.com)
§ Component layout customized for each platform through Profiles
• e.g. Phone and Tablet profile
§ Further customization necessary to support platform-specific layout!
• e.g. iOS back-button vs. Android hardware button
// switch Theme depending on pla?orm Ext.setup({ onReady:func9on(){ if(Ext.is.Android){ Ext.get("myStylesheet").dom.href = "android.css"; } else if(Ext.is.iOS){ Ext.get("myStylesheet").dom.href = "apple.css"; } } }); // switch View depending on Profile // On a phone, fill complete viewport Ext.define('view.phone.Form', { extend: 'view.Form', config: { 9tle: 'Phone-‐specific version‘ } }); // On a tablet, use modal with fixed size Ext.define('view.tablet.Form', { extend: 'view.Form', config: { 9tle: 'Tablet-‐specific version', modal: true, height: 505, width: 480, centered: true } });
33 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Web Application Deployment
§ in browser (all platforms): • accessible through URL / browser bookmark • run inside device browser app • offline available when using ApplicationCache
§ on "home screen" (most platforms): • create bookmark on device home screen (next to native apps) • on iOS:
o opens in fullscreen browser: <meta name="apple-‐mobile-‐web-‐app-‐capable" content="yes" />
o additional splash screen: <link rel="apple-‐touch-‐startup-‐image" href="./startup.png" />
§ native bundle (most platforms): • bundle web application in native app through mobile application framework
(e.g. PhoneGap) • application is run in fullscreen WebView • more functionality through mobile application framework (e.g. PhoneGap)
34 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Server-side adaptation
§ Opera Mini • requested web page rendered on proxy server • rendered page compacted to binary Opera Binary Markup
Language (OBML) and send to client • reduces download sizes by up to 90%
• limitations: o only onLoad-events (server-side Javascript) are fully supported o on client, only user-input events (onclick, onchange, ...) supported o limited Ajax support -> page only changes if user clicks something
Opera Mini(Java ME)
Opera Mini Server
Web Server1
Web Server2
Web Servern
...
HTMLOBML
12
3
45
6
35 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Server-side adaptation
§ Amazon Silk • browser on Kindle® devices • browser subsystems (fetching, Javascript, rendering) also
implemented in Amazon Web Services cloud (EC2) • dynamically split which subsystems executed in EC2
and on device: • cloud advantages:
o computationally expensive tasks (rendering, scripts) done in cloud o faster fetch of referenced files (CSS, Javascript, images, ...) o predictive caching, through all Silk users o optimized image compression
(since Silk knows browser/device) Dynamic Split
36 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
Summary
§ Adaptive Web applications for mobile devices
§ Major principles: • Responsive Web design
Ø Scalable layout and images Ø Alternative layout and content based on Media Queries
• Mobile Device Layout Patterns Ø Adapt layout for different devices/view sizes
• Mobile First Ø optimize content for mobile -> also benefits desktop
§ HTML5 provides key enablers for mobile • Device access, CSS3, Multimedia, Offline and Storage,… • Extended browser capabilities
§ Content adaptation in the infrastructure Ø Reduce data volume for transfer Ø Support server-side processing/rendering
37 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications
§ Crowd-Docs of Web Standards: www1.webplatform.org § Ethan Marcotte: Responsive Web Design, A Book Apart, 2011 § Luke Wroblewski: Mobile First, A Book Apart, 2011 § Luke Wroblewski: Multi-Device Layout Patterns, http://
www.lukew.com/ff/entry.asp?1514 38 Dr. Thomas Springer Application Development - 7. Web-based Mobile Applications