Don’t Disconnect Me! The challenges of building offline-enabled web apps Matthias Oßwald,

Slides:



Advertisements
Similar presentations
Yokogawa Network Solutions Presents:
Advertisements

COMOS Mobile Solutions 1.0 Simplified global collaboration
OVERVIEW TEAM5 SOFTWARE The TEAM5 software manages personnel and test data for personal ESD grounding devices. Test and personnel data may be viewed/reported.
GEN2 Touch: Version GEN3: Version
WEB HOSTING. WHAT IS WEB HOSTING? A web host is a company with several computers that are connected to the internet at all times. The computers they have.
Fòmasyon Itilizatè Ayiti Office 365 Fòmasyon. Why the Change? Partners in Health's new hosted Microsoft Office 365 solution allows users to access their.
Using EWD to re-purpose a UI Rob Tweed. The Concept You have an existing well-designed and functional web user interface You want to re-purpose it to.
© 2009 Research In Motion Limited Methods of application development for mobile devices.
New UI Changes for Endpoint Security in LDMS 9.6 SP2.
TRIRIGA Anywhere 10.4 Beta Registration Steps
Generic Simulator for Users' Movements and Behavior in Collaborative Systems.
Tips for working with disconnected web mapping apps Andy Gup, Javier Abadia.
Trimble Access Training
©Kwan Sai Kit, All Rights Reserved Windows Small Business Server 2003 Features.
6.1 Using AMO After this class, you will be able to: Install AMO
Guide Demo Program installation SOP ePAD SW PM. Before you start Check “Guide” version is latest ( or ) * follow next page Latest version.
In addition to Word, Excel, PowerPoint, and Access, Microsoft Office® 2013 includes additional applications, including Outlook, OneNote, and Office Web.
LiveCycle Data Services Introduction Part 2. Part 2? This is the second in our series on LiveCycle Data Services. If you missed our first presentation,
06/10/2015AJAX 1. 2 Introduction All material from AJAX – what is it? Traditional web pages and operation Examples of AJAX use Creating.
Chapter 5 HTTP Request Headers. Content 1.Request headers 2.Reading Request Headers 3.Making a Table of All Request Headers 4.Sending Compressed Web Pages.
Ideas to Improve SharePoint Usage 4. What are these 4 Ideas? 1. 7 Steps to check SharePoint Health 2. Avoid common Deployment Mistakes 3. Analyze SharePoint.
Microsoft FrontPage 2003 Illustrated Complete Finalizing a Web Site.
2 Copyright © 2004, Oracle. All rights reserved. Running a Forms Developer Application.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Presentation. Recap A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate. Taken advantage of Spring’s multi layer.
Knowledge Sharing Program The purpose of our knowledge sharing program is to continue the process of opening the communication lines between those who.
The Mobile CRM Conference 2015 September 14-15, 2015 in Boston, MA Take Your CRM to the Next Level.
Audio Check 1. Wait for the support person to call your name 2. Say “Hello”. To talk, either: Click the TALK button on the screen, OR Press CTRL+F2 (COMMAND+F2.
Database Handling, Sessions, and AJAX. Post Back ASP.NET Functionality The IsPostBack method in ASP.NET is similar to the BlackBerry.refresh method –IsPostBack.
1 The System Menu. 2 The System menu Dashboard Page displayed upon every login. It encompasses several boxes organised in two columns that provide a complete.
AJAX Compiled from “AJAX Programming” [Sang Shin] (Asynchronous JavaScript and XML)
.  A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate.  Taken advantage of Spring’s multi layer injection.
{ Cloud computing. Exciting and relatively new technologies allow computing to be a part of our everyday lives. Cloud computing allows users to save their.
Moving Web Apps From Synchronous to Asynchronous Processing Jason Carreira Architect, ePlus Systems OpenSymphony member.
Offline Web Apps - an offline web application is a list of URLs for HTML, CSS, JavaScript, images, or any other kind of resource. Most browsers have offline.
Cloud Applications Cloud Applications  A cloud app is the evolved web app.  It's equally used to access online services over the Internet like web apps.
Internet Applications (Cont’d) Basic Internet Applications – World Wide Web (WWW) Browser Architecture Static Documents Dynamic Documents Active Documents.
Presentation.
When connection basiafusinska.com barbarafusinska.com Going offline on mobile.
Rich Internet Applications 9. HTML 5 and RIAs. HTML 5 Standard currently under development by W3C Aims to improve the language with support for the latest.
30 Copyright © 2009, Oracle. All rights reserved. Using Oracle Business Intelligence Delivers.
François Briard GS-AIS-HR Database Developers Forum, APEX 6th May 2014 APEX Mobile Application Development 101.
ITS Lunch & Learn November 13, What is Office 365? Office 365 is Microsoft’s software as a service offering. It includes hosted and calendaring.
 Follow the steps in order to solve the sync issue with the best fitness trackers;best fitness trackers  1. Reboot your Fitness Tracker and the device.
2 Copyright © 2004, Oracle. All rights reserved. Running a Forms Developer Application.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Using HTML5 to Build Offline Applications Woody Pewitt Icenium
MICROSOFT AJAX CDN (CONTENT DELIVERY NETWORK) Make Your ASP.NET site faster to retrieve.
IPEmotion License Management PM (V1.2).
111 State Management Beginning ASP.NET in C# and VB Chapter 4 Pages
Phonegap Bridge – Storage CIS 136 Building Mobile Apps 1.
«Alfa-Avto: Mobile advisor»
REDCap Mobile Application
Geospatial Research & Solutions GIS.ASU.EDU
Information Systems and Network Engineering Laboratory II
What is next for the REDCap Mobile App?
Data Virtualization Tutorial… CORS and CIS
Contact for iCloud Support Services For iCloud Help
Web Caching? Web Caching:.
RR RR Problems Along With Solutions For iPhone And iPad Toll Free ( )
APIs and Synchronization
What is Cookie? Cookie is small information stored in text file on user’s hard drive by web server. This information is later used by web browser to retrieve.
The Application Lifecycle
Using K2 applications How can users interact with K2 applications?
About us Gmail is a famous service which we use on a daily basis for sending s, getting promotional messages of certain products, receiving.
Technical Integration Guide
Implementation Methodology
Revision PowerPoint By Nicole Davidson.
Running C# in the browser
Presentation transcript:

Don’t Disconnect Me! The challenges of building offline-enabled web apps Matthias Oßwald,

Murphy’s Law says: There will be no Connection when you need it most.

Web Apps going offline App Webserver Resources / Assets Remote DB yesno Offline ? Request

Offline Enablement - Why should you care?  Having an offline-enabled app would just be so much better… -On the train / on a plane -In a building -Somewhere in the middle of nowhere -In another country (and you don’t have roaming enabled) -In your basement -In the middle of a large crowd -When your internet connection sucks for other reasons. -Because serving files from your own device is just faster

Use Cases – When you should care?  Collaboration -To-do lists -Document handling -CRM / Customer Care -…  Multimedia  Shopping Carts  Timetables/Schedules  …

Web Apps going offline App Webserver Resources / Assets Remote DB yesno Offline ? Local Cache Local data User Device Request

Real World Samples

A basic To-Do App

What you should care about  The Frontend – UX patterns for online/offline apps -  Don‘t treat offline as an error  Detecting online/offline  Caching the right resources – improving performance  Storing data offline  Syncing data when online  Resolving conflicts  Browser-specific limitations

UX Patterns  Signaling online/offline state to your users  Disabling actions in offline mode if necessary  Syncing and optionally highlighting new items  Showing and solving conflicts

UX Patterns – Online/Offline State  Create awareness: -Your users know their devices  Rely on signals already present, but: -If state changes during app usage  Signal to user something has happened

Syncing Data - Modes of Sync User InitiatedAutomatically Initiated Automatically trigger a sync when… there is network connectivity, the user is in an active browser session AND… A new record is created or an existing one is updated After a certain amount of time of use of the app A new page is called Trigger a sync when the user… Pulls to refresh in a list Presses a Sync Button in an Application (e.g. in a Search Container)

Resolving Conflicts – Check and Show  When?  On sync  What?  Versions of documents / data  How to react?  Signal conflict to the user, but: -Try to distract the user as little as possible! -Only notify if a user action is required

Resolving Conflicts – Offering Solutions  Users need to be able to solve conflicts by -Comparing their changes to the conflicting version -Accepting other users’ changes -Overwriting other users’ changes  needs to be supported properly on UI

Detecting Online/Offline  Reacting on status changes is necessary:  navigator.onLine is not always reliable  XMLHttpRequests can help detecting (health check) window.addEventListener("offline", function(e) { alert("offline"); }, false); window.addEventListener("online", function(e) { alert("online"); }, false);

Service Workers  Runs in a separate JavaScript thread  Controls the web page (intercepting requests, caching, indexedDB, …)  Allows to build an enhanced user experience  Installs silently on first page load

Caching / Data handling  Cache the GET response(s)  Update the cache when new data was loaded  Use it as fallback when offline  Store offline changes e.g. in indexedDB  Communicate with app via postMessage

Static Caching

Service Worker Offline Data Handling  Service Worker can “simulate” the server when offline  App behaves just like it would be online -can be done as “enhancement” for browsers supporting it  Background-Sync on mobile devices is possible even when App is not in use

Cache Data within “fetch” event

Resolving Conflicts  Increase revision number for each entry update  Updates need to include latest number -Otherwise it returns a conflict

Resolving Conflicts – Technical Solution

Questions, anyone?

Resources  Service Worker   OpenUI5   learnui5

Thanks for your attention!