CIS 136 Building Mobile Apps

Slides:



Advertisements
Similar presentations
Bruce Scharlau, University of Aberdeen, 2012 Data storage options for mobiles Mobile Computing.
Advertisements

Cookies, Sessions. Server Side Includes You can insert the content of one file into another file before the server executes it, with the require() function.
HTML5 Storage. Why Local Storage? Data accessed over the internet can never be as fast as accessing data locally Data accessed over internet not secure.
HTML5 Applications with ASP.NET Web Forms Stephen Walther Superexpert.com
Programming with App Inventor Storing Data
Tracking & Login Data persistence User tracking.
HTML5 JavaScript Storage for Structured Data Andy Gup, Esri
Web Storage IDIA 619 Spring 2013 Bridget M. Blodgett.
Session Management A290/A590, Fall /25/2014.
Phonegap Bridge – File System CIS 136 Building Mobile Apps 1.
 A cookie is a piece of text that a Web server can store on a user's hard disk.  Cookie data is simply name-value pairs stored on your hard disk by.
Chapter 25 Utilizing Web Storage.
Phonegap Bridge – File System CIS 136 Building Mobile Apps 1.
Martin Kruliš by Martin Kruliš (v1.0)1.
Tips for working with disconnected web mapping apps Andy Gup, Javier Abadia.
Lecture 3 – Data Storage with XML+AJAX and MySQL+socket.io
How a little code can help with support.. Chris Barba – Developer at Cimarex Energy Blog:
MongoDB An introduction. What is MongoDB? The name Mongo is derived from Humongous To say that MongoDB can handle a humongous amount of data Document.
State Management. What is State management Why State management ViewState QueryString Cookies.
CS378 - Mobile Computing Persistence. Saving State We have already seen saving app state into a Bundle on orientation changes or when an app is killed.
Lecture Set 14 B new Introduction to Databases - Database Processing: The Connected Model (Using DataReaders)
HTML5. HTML5’s overall theme The browser as a rich application platform rich, cross-device user interfaces offline operation capability hardware access.
CHAP 6. USING THE HTML5 WEB STORAGE API.  Cookie - Are a built-in way of sending text values back and forth from server to client.  Servers can use.
Android Storage. There are several options for storage of data with Android We can put data into a preferences file. We can put data into a ‘normal’ file.
DBMS Implementation Chapter 6.4 V3.0 Napier University Dr Gordon Russell.
BlackBerry Persistent Storage Models Persistent Storage APIs and Record Management System.
STATE MANAGEMENT.  Web Applications are based on stateless HTTP protocol which does not retain any information about user requests  The concept of state.
Creating Databases Local storage. join & split Classwork: show 1 table application. Share designs for oscars application. Adaptive select. Homework: [Catch.
Phonegap Bridge – File System CIS 136 Building Mobile Apps 1.
Efficient RDF Storage and Retrieval in Jena2 Written by: Kevin Wilkinson, Craig Sayers, Harumi Kuno, Dave Reynolds Presented by: Umer Fareed 파리드.
The Problem of State. We will look at… Sometimes web development is just plain weird! Internet / World Wide Web Aspects of their operation The role of.
Don’t Disconnect Me! The challenges of building offline-enabled web apps Matthias Oßwald,
CS2550 Dr. Brian Durney. SOURCES  JavaScript: The Definitive Guide, by David Flanagan  Dive into HTML5, by Mark Pilgrim
Fundamentals of Web DevelopmentRandy Connolly and Ricardo HoarFundamentals of Web DevelopmentRandy Connolly and Ricardo Hoar Fundamentals of Web DevelopmentRandy.
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.
JavaScript: Objects 1 © by Pearson Education, Inc. All Rights Reserved.
CSCI 6962: Server-side Design and Programming Shopping Carts and Databases.
© 2016 Cengage Learning®. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part. Android Boot Camp.
Module 6: Administering Reporting Services. Overview Server Administration Performance and Reliability Monitoring Database Administration Security Administration.
CS520 Web Programming Object-Relational Mapping with Hibernate and JPA (I) Chengyu Sun California State University, Los Angeles.
CHAPTER 9 File Storage Shared Preferences SQLite.
Using HTML5 to Build Offline Applications Woody Pewitt Icenium
Mobile Application Development Data Storage. Android provides several options for you to save persistent application data. The solution you choose depends.
111 State Management Beginning ASP.NET in C# and VB Chapter 4 Pages
Phonegap Bridge – Storage CIS 136 Building Mobile Apps 1.
Web Storage and Cookies Cookies, Local and Session Storage SoftUni Team Technical Trainers Software University
Data Storage in Android Димитър Н. Димитров. Why talk about data? Why not 3D graphics or network connectivity? Data as fundamental term in computer science.
Chengyu Sun California State University, Los Angeles
Android Application Data Storage 1.
Key-Value Store.
Creating Databases Local storage. join & split
By Dan Gotlund & Eric Acierto
CIS 136 Building Mobile Apps
Mobile Application Development Chapter 5 [Persistent Data in Android]
CIS 136 Building Mobile Apps
Open Source Programming
Android Storage.
ISC440: Web Programming 2 Server-side Scripting PHP 3
CIS 136 Building Mobile Apps
CIS 136 Building Mobile Apps
Access Lesson 2 Creating a Database
CIS 136 Building Mobile Apps
Developing a Model-View-Controller Component for Joomla Part 3
Web DB Programming: PHP
JavaScript & jQuery AJAX.
HTML5 and Local Storage.
Chapter 10 ADO.
HTML5 and Local Storage.
PHP Forms and Databases.
PHP and JSON Topics Review JSON.
Presentation transcript:

CIS 136 Building Mobile Apps Storage CIS 136 Building Mobile Apps

Storage Options

Storage Options Many storage API’s Local Storage & session storage Simple storage technique using key/value pairs WebSQL (android, blackberry, iOS) full-featured database tables accessed via SQL queries IndexedDB (windows, blackberry) more features than LocalStorage but fewer than WebSQL Plug-in Based File Plug-In - allows you to cache data on the local file system Downloader Plug-In- Downloads files to persistent Storage SQLLite Plug-In- more storage and more flexibility than the standard Web SQL database

Local Storage

Local/Session Storage most basic storage option available allows you to store up to 5MB of data Unreliable Data can get wiped out use it where data loss is not an issue never use it to store sensitive data since it can be easily accessed

Local Storage Reasons we might want to store some data locally: The application is completely self contained and there is no interaction with other users, so all data can be stored locally Need to store data locally for some specific functionality like a “Remember Me” feature Skip unnecessary calls to a server by storing preference settings locally Skip unnecessary calls to a server by caching other data locally Sync online and offline data so that the user can continue using the application even when they are offline Evernote /Facebook

Local Storage a simple key-value system, using setters and getters localStorage.setItem('key', ‘value'); var someSetting = localStorage.getItem(‘key'); can only store strings to store an object or array, must convert it to a JSON string var myConvertedArray = JSON.stringify(array); to retrieve it later, decode JSON string back into an array or object var myDecodedArray = JSON.parse(myConvertedArray);

Local Storage vs Session Storage Permanent – localStorage() method Data is saved even when app is closed Temporary – sessionStorage() method Data is not saved when app is closed

Methods Works off of key/value pairs Set an item - Assigns a keyed item's value window.localStorage.setItem("key", "value"); Get a key - Returns the name of the key at the specified position var keyName = window.localStorage.key(0); Get an item - Returns the item identified by the specified key var value = window.localStorage.getItem("key"); Remove an item - Removes the item identified by the specified key Window.localStorage.removeItem("key"); Clear - Removes all of the key/value pairs Window.localStorage.clear();

<script> // Wait for device API libraries to load $(document).on("deviceready", onDeviceReady); //uses named function // device APIs are available function onDeviceReady() { window.localStorage.setItem(“hobby", “sailing"); var keyname = window.localStorage.key(0); // keyname is now = “hobby" var value = window.localStorage.getItem(“hobby"); // value is now = “sailing“ var value2 = window.localStorage.getItem(keyname); // value is now = “sailing" window.localStorage.removeItem(“hobby"); window.localStorage.setItem(“hobby2", “riding"); window.localStorage.clear(); // localStorage is now empty } </script>

IndexedDB

IndexedDB IndexedDB combines the strengths of the LocalStorage and WebSQL supports the storage of structured data rather than key/value pairs The basic pattern that IndexedDB encourages is the following: Create/Open a database Create/Open an object store in the database (similar to a table) Start a transaction and make a request to do some database operation, like adding or retrieving data. Wait for the operation to complete by listening for the event Do something with the results (which can be found on the request object).

Creating/Opening a Database When you open a database, you get a DB object, which provides error and success events, and properties such as result, error and readyState var db; var dbName = 'myDB'; var databaseVersion = 1 var openRequest = window.indexedDB.open(dbName [,databaseVersion]); openRequest.onerror = function (e) { console.log(e.target.errorCode); }; openRequest.onsuccess = function (event) { // Existing Database is open and initialized db = event.target.result; … NOTE: The database is created if a database with the specified name does not exist. Only a single version of a database can exist at a time. When a database is first created, its initial version is zero

New database When you create a new database or increase the version number of an existing database (by specifying a higher version number than you did previously, the onupgradeneeded event will be triggered

Creating a new object store function createObjectStore() { var openRequest = window.indexedDB.open(dbName, 2); openRequest.onerror = function(e) console.log("Database error: " + e.target.errorCode); }; openRequest.onupgradeneeded = function (evt) db = event.target.result; var employeeStore = db.createObjectStore("employees", {keyPath: "id"}); }

Indexes Can retrieve records in an object store using its key or indexed fields can have one or more indexes, and they can either be unique or non- unique function createIndex() { var openRequest = window.indexedDB.open(dbName, 2); openRequest.onsuccess = function(event) { db = event.target.result; }; openRequest.onupgradeneeded = function (evt) { var employeeStore = db.createObjectStore("employees", {keyPath: "id"}); employeeStore.createIndex("emailIndex", "email", { unique: true }); employeeStore.createIndex("zipCodeIndex", "zip_code", { unique: false }) }

Transactions Used to perform reading and writing operations on an object store Three modes:

Creating records Data is a string literal array var empData = [ { id: "444-44-4444", name: "Bill", zip: 35022, email: "bill@company.com" }, { id: "555-55-5555", name: “Dave", zip: 32034, email: "dave@home.org" }, ]; Store values in the newly created objectStore. var employeeStore = db.transaction(“employees“,”readwrite").objectStore(“employees"); empData.forEach(function(empRec) { employeeObjectStore.add(empRec); }

Retrieve a specific record using key function fetchEmployee() { var result = document.getElementById("result"); result.innerHTML = ""; if (db != null) { var txn = db.transaction(["employees“]) var objStore = txn. objectStore("employees"); var request = objStore.get("E3") request.onsuccess = function(event) var employee = request.result; if (employee == null) { result.value = "employee not found"; } else { var jsonStr = JSON.stringify(employee.id); result.innerHTML = jsonStr;

Delete A Database function deleteDatabase() { var deleteDbRequest = window.indexedDB.deleteDatabase(dbName); deleteDbRequest.onsuccess = function (event) { // database deleted successfully }; deleteDbRequest.onerror = function (e) { console.log("Database error: " + e.target.errorCode); }