About this ebook
This book covers the necessary concepts you'll need to build useful, rich, secure enterprise apps for mobile devices, and also explains portions of an example enterprise app development so that you have a working demonstration of the concepts in the book.
The book focuses heavily on security concepts such as authorization, SSL and certificates, source code protection, local data store encryption, and so on, as ensuring a secure channel of communication between the user and the enterprise servers is critical.
The book explores the entire app's design, covering the data model and business logic you'll use for your app. It then moves on to cover how to build middle-tier communication between the middle tier and the mobile device, handling application and network events (such as a network going offline), and culminates by showing you how to work with various rich presentation technologies.
This book is invaluable for anyone looking to learn how to create secure mobile apps for enterprise environments in an easy way with lots of useful examples.
Read more from Shotts Kerri
Instant PhoneGap Social App Development Rating: 0 out of 5 stars0 ratingsMastering PhoneGap Mobile Application Development Rating: 0 out of 5 stars0 ratings
Related to PhoneGap for Enterprise
Related ebooks
Opa Application Development Rating: 0 out of 5 stars0 ratingsImplementing Cloud Design Patterns for AWS Rating: 0 out of 5 stars0 ratingsPhoneGap and AngularJS for Cross-platform Development Rating: 0 out of 5 stars0 ratingsImplementing AppFog Rating: 0 out of 5 stars0 ratingsPython for Google App Engine Rating: 0 out of 5 stars0 ratingsBuilding Progressive Web Applications with Vue.js: Reliable, Fast, and Engaging Apps with Vue.js Rating: 0 out of 5 stars0 ratingsInstant Play Framework Starter Rating: 0 out of 5 stars0 ratingsRaspberry Pi Android Projects Rating: 0 out of 5 stars0 ratingsSignalR – Real-time Application Development - Second Edition Rating: 0 out of 5 stars0 ratingsSproutCore Web Application Development Rating: 0 out of 5 stars0 ratingsMastering JavaScript Object-Oriented Programming Rating: 0 out of 5 stars0 ratingsMastering Android Application Development Rating: 5 out of 5 stars5/5Mastering JavaScript Design Patterns - Second Edition Rating: 5 out of 5 stars5/5Building Web Applications with Python and Neo4j Rating: 0 out of 5 stars0 ratingsGetting Started with Review Board Rating: 0 out of 5 stars0 ratingsWindows Phone 7.5: Building Location Aware Applications Rating: 0 out of 5 stars0 ratingsInstant Apache ActiveMQ Messaging Application Development How-to Rating: 0 out of 5 stars0 ratingsBuilding UIs with Wijmo Rating: 0 out of 5 stars0 ratingsInstant Microsoft Forefront UAG Mobile Configuration Starter Rating: 5 out of 5 stars5/5Symfony2 Essentials Rating: 0 out of 5 stars0 ratingsInstant Android Fragmentation Management How-to Rating: 0 out of 5 stars0 ratingsMastering Play Framework for Scala Rating: 0 out of 5 stars0 ratingsRubyMotion iOS Develoment Essentials Rating: 0 out of 5 stars0 ratingsGetting Started with WebRTC Rating: 0 out of 5 stars0 ratingsKnockoutJS Blueprints Rating: 0 out of 5 stars0 ratingsPHP 7 Programming Blueprints Rating: 0 out of 5 stars0 ratingsXamarin 4 By Example Rating: 0 out of 5 stars0 ratingsDjango Project Blueprints Rating: 0 out of 5 stars0 ratingsLearning Swift - Second Edition Rating: 0 out of 5 stars0 ratings
Enterprise Applications For You
Some Future Day: How AI Is Going to Change Everything Rating: 0 out of 5 stars0 ratingsQuickBooks 2023 All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsExcel All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsExcel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsQuickBooks 2024 All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsBitcoin For Dummies Rating: 4 out of 5 stars4/5Access 2019 For Dummies Rating: 0 out of 5 stars0 ratingsExcel Formulas That Automate Tasks You No Longer Have Time For Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5Excel Tables: A Complete Guide for Creating, Using and Automating Lists and Tables Rating: 5 out of 5 stars5/5Creating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5Learning Microsoft Endpoint Manager: Unified Endpoint Management with Intune and the Enterprise Mobility + Security Suite Rating: 0 out of 5 stars0 ratingsSharePoint For Dummies Rating: 0 out of 5 stars0 ratingsCode like a Pro in C# Rating: 0 out of 5 stars0 ratings50 Useful Excel Functions: Excel Essentials, #3 Rating: 5 out of 5 stars5/5Scrivener For Dummies Rating: 4 out of 5 stars4/5Teach Yourself VISUALLY Microsoft 365 Rating: 0 out of 5 stars0 ratingsExcel Data Analysis For Dummies Rating: 0 out of 5 stars0 ratingsExcel 2019 For Dummies Rating: 3 out of 5 stars3/5QuickBooks Online For Dummies Rating: 0 out of 5 stars0 ratingsAgile Project Management: Scrum for Beginners Rating: 4 out of 5 stars4/5M Is for (Data) Monkey: A Guide to the M Language in Excel Power Query Rating: 4 out of 5 stars4/5
Reviews for PhoneGap for Enterprise
0 ratings0 reviews
Book preview
PhoneGap for Enterprise - Shotts Kerri
Table of Contents
PhoneGap for Enterprise
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. PhoneGap and Enterprise Mobility
Why PhoneGap/Cordova?
History behind PhoneGap and Cordova
Easy cross-platform development
Cordova app architecture
Cordova app structure
Summary
2. Building the Data Store and Business Logic
Introducing Tasker
Server architecture
Designing your data models
Designing the business logic
Permissions model
Summary
3. Securing PhoneGap Apps
General security precautions
Filtering and validating input
Encoding and escaping output
JavaScript/browser security
Avoiding JavaScript cryptography in the browser
Avoiding the use of JavaScript eval
Using strict mode
Avoiding untrusted HTML injection
Using Strict-Transport-Security
Securing your cookies
Using Content-Security-Policy
Avoiding JSONP
Avoiding the use of iframes
Using TLS/SSL always
Authentication
Server-specific security precautions
Securing your backend
Hardening your backend against attack
Avoiding SQL injection
Preventing cross-site request forgeries
Avoid trusting your client's state
Verify message integrity with HMACs
Quick Node.js and Express server security settings
Cordova-specific security precautions
Targeting modern mobile devices
Source code protection
Using InAppBrowser for external links
Whitelisting domains
Avoiding self-signed certificates
Using a well-known certificate authority
Man-in-the-middle attacks
Local data store security/encryption
Summary
4. Building the Middle-Tier
Middle-tier architecture
Designing a RESTful-like API
Building our API using Node.js
Connecting to the backend database
Executing queries
Using Passport to handle authentication and sessions
Building API handlers
Summary
5. Communicating between Mobile and the Middle-Tier
Getting started
Promises
Ensuring secure communication
Communicating with the backend using XHR
Authenticating the user with the backend
Summary
6. Application Events and Storage
Getting ready
Determining network connectivity
Getting the current network type
Detecting changes in connectivity
Handling connectivity issues
Handling changes in the application state
Responding to application-level events
Storing local data using SQLite
Storing data in the iOS Keychain
Summary
7. Push Notifications
Delving into Push Notification architecture
Boxcar Universal Push Notifications Platform
Setting up Apple Push Notifications with Boxcar
Setting up Google Cloud Messages with Boxcar
Downloading the Boxcar PhoneGap SDK
Integrating Boxcar with PhoneGap/Cordova
Additional iOS configuration steps
Additional Android Configuration steps
Receiving Pushes from Boxcar
Background vs foreground Push Notifications
Sending a Push via Boxcar
Summary
8. Building the Presentation Tier
Mock-up design tools
Libraries and frameworks
Common patterns
MVC (Model-View-Controller)
The publish-subscribe pattern
The observables pattern
The templates pattern
The data binding pattern
The URL routing pattern
Presentation of the app
User Interface frameworks
View management
Forms and the validation
Data visualization
Seeing it in action
Summary
A. Useful Resources
Chapter 1 – PhoneGap and Enterprise Mobility
Chapter 2 – Building the Data Store and Business Logic
Database servers
Designing Data Models
Chapter 3 – Securing PhoneGap Apps
Security resources
Chapter 4 – Building the Middle-Tier
RESTful-like API resources
Chapter 5 – Communicating between Mobile and the Middle-Tier
Communication with the backend
Chapter 7 – Push Notifications
Push Notification services and BaaS
Chapter 8 – Building the Presentation Tier
Additional utility libraries and frameworks
User Interface frameworks
Index
PhoneGap for Enterprise
PhoneGap for Enterprise
Copyright © 2014 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: December 2014
Production reference: 1191214
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78355-475-1
www.packtpub.com
Credits
Author
Kerri Shotts
Reviewers
Steve Husting
Tony Radford
Julio César Sánchez
Commissioning Editor
Kunal Parikh
Acquisition Editor
Reshma Raman
Content Development Editor
Vaibhav Pawar
Technical Editors
Veronica Fernandes
Rohith Rajan
Copy Editor
Relin Hedly
Project Coordinator
Kranti Berde
Proofreaders
Simran Bhogal
Joyce Littlejohn
Joanna McMahon
Indexer
Rekha Nair
Graphics
Disha Haria
Production Coordinator
Alwin Roy
Cover Work
Alwin Roy
About the Author
Kerri Shotts has worked with computers for nearly 25 years. Her love for technology and programming started when she was introduced to her first computer, which was a Commodore 64. She obtained a degree in computer science at college and eventually became a software test engineer. Later on, she worked as an Oracle Database Administrator for several years. Now, she owns her own company and works as a technology consultant. Kerri is responsible for creating, designing, and maintaining custom applications (both desktop and mobile), websites, graphics, and logos for her clients. She has been actively involved with PhoneGap for several years, and has written several native and hybrid applications. You can find her blog posts at http://www.photokandy.com. Kerri is also active on the Google Group for PhoneGap and Stack Overflow. When she isn't coding or writing, she enjoys photography, music, and fishkeeping. She is the author of three other books published by Packt Publishing, including PhoneGap 3.x Mobile Application Development Hotshot.
About the Reviewers
Steve Husting wears various hats by day, including that of a website worker, in a company that designs and manufactures radio-controlled hobby cars. By night, he writes, does calligraphy, and creates iPhone and Android apps. He posts his findings about PhoneGap app development on his blog, http://iphonedevlog.wordpress.com, which is focused towards beginners.
Julio César Sánchez has been a professional software developer since 2007. Over the years, he has worked with various web-related technologies. In 2010, he discovered PhoneGap and has been following the PhoneGap Google Group since then, learning, helping other developers, and even contributing with PhoneGap plugins. He spends part of his spare time developing mobile apps. Julio also writes tutorials about PhoneGap development for http://www.phonegap.es. You can visit his personal website (http://www.jcesarmobile.com), or follow him on twitter at @jcesarmobile to know more about him and his work.
www.PacktPub.com
Support files, eBooks, discount offers, and more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.
Preface
Mobile devices are virtually ubiquitous among the enterprise workforce, and employees are becoming increasingly mobile. This book discusses how the enterprise workforce can take advantage of Apache Cordova/Adobe PhoneGap applications to create cross-platform hybrid mobile applications that can serve the varied needs of the user and the enterprise.
This book will cover the various aspects of typical hybrid app architecture, from the backend database and web servers all the way to the hybrid app that resides on the employee's device. As the security of the enterprise data is paramount, a large amount of time is focused on ensuring that the communication between the backend and the user's device is secure. The book also covers how to respond to changes in network connectivity and application state.
A code package is also available for this book. Inside, you'll find a complete backend database and web server as well as a frontend hybrid application called Tasker. The entire project is presented as an example that you can learn from and apply to other projects. The link to the code package is given later on in this section.
What this book covers
Chapter 1, PhoneGap and Enterprise Mobility, discusses the history of Apache Cordova/Adobe PhoneGap applications, presents reasons why Cordova/PhoneGap is a good fit for the enterprise, and how Cordova facilitates cross-platform development for Cordova and hybrid application architecture.
Chapter 2, Building the Data Store and Business Logic, introduces you to the typical backend server architecture, as well as designing the data models and business logic. You will also get introduced to Tasker, the demonstration app for this book.
Chapter 3, Securing PhoneGap Apps, shows the importance of ensuring the security of enterprise data. This chapter also covers backend security, general security, and issues that relate directly to Cordova/PhoneGap apps.
Chapter 4, Building the Middle Tier, discusses RESTful-like APIs and HATEOAS (Hypertext As The Engine Of Application State). A sample Node.js server is included as a demonstration of these topics, including examples of connecting to databases, executing queries, and generating appropriate responses.
Chapter 5, Communicating Between Mobile and the Middle Tier, demonstrates how to ultilize XMLHttpRequest (XHR), SSL Certificate fingerprints, and third-party Cordova/PhoneGap plugins in order to facilitate secure communication between the mobile application and the backend servers.
Chapter 6, Application Events and Storage, briefly discusses how to respond to changes in network events and application state. This chapter also introduces a third-party SQLite plugin for persistent data storage and an additional plugin to access the iOS Keychain for secure data storage.
Chapter 7, Push Notifications, covers typical Push Notification architecture, and introduces you to Boxcar.io, a service that provides an HTTP API to send pushes. It also introduces a PhoneGap API to respond to these push notifications.
Chapter 8, Building the Presentation Tier, covers many of the different patterns used to build a mobile application, including mock-up tools, various libraries and frameworks, common patterns (MVC, data binding, templates, and so on), forms and validation, and data visualization.
Appendix, Useful Resources, provides web links to resources that the reader might find useful for further learning. These are split chapterwise so that they can relate to a specific chapter in this book.
What you need for this book
In order to run the example code within the code package for this book, you'll need the following software:
Oracle Database 11gR2 Express Edition (freely available from http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index-083047.html). You require a free Oracle account to download the packages or installer.
Node.js 0.10.25 or higher (freely available from http://nodejs.org). This code has been tested on version 0.10.25.
Oracle Instant Client 12c (freely available from http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html). You require a free Oracle account.
Cordova/PhoneGap 3.6 or higher (freely available from: http://cordova.apache.org or http://phonegap.com). This code has been tested on Cordova 3.6.
If you intend to build the Cordova/PhoneGap demonstrations locally on your machine, you'll also need to install the appropriate SDKs and prerequisite software. For more information, see: http://cordova.apache.org/docs/en/edge/guide_cli_index.md.html#The%20Command-Line%20Interface.
Who this book is for
The content of this book assumes that the reader has experience with the following:
JavaScript (ECMAScript 5+)
CSS3
HTML5
Cordova/PhoneGap 3.6+
Some experience with Node.js or similar server software (like PHP)
Some experience with databases (such as SQLite, MySQL, Oracle, and so on)
This book is aimed at the employee who desires to utilize (or who has been tasked with utilizing) Cordova/PhoneGap software to build mobile hybrid applications for the enterprise. As such, the book focuses on various enterprise technologies (including Oracle and Node). It also deals with a lot of security issues.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: If the activity finished successfully, we call deferred.resolve with the value.
A block of code is set as follows:
function interpolate( str, context ) {
var newStr = str;
if ( typeof context === undefined
) {
return newStr;
}
str.match( /\{([^\}]+)\}/g ).forEach( function ( match ) {
var prop = match.substr( 1, match.length - 2 ).trim();
newStr = newStr.replace( match,
valueForKeyPath( context, prop ) );
} );
return newStr;
}
When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:
function interpolate( str, context ) {
var newStr = str;
if ( typeof context === undefined
) {
return newStr;
}
str.match( /\{([^\}]+)\}/g ).forEach( function ( match ) {
var prop = match.substr( 1, match.length - 2 ).trim();
newStr = newStr.replace( match, valueForKeyPath( context, prop ) );
} );
return newStr;
}
Any command-line input or output is written as follows:
cordova plugin add https://github.com/EddyVerbruggen/SSLCertificateChecker-PhoneGap-Plugin.git
New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: clicking the Next button moves you to the next screen
.
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of
To send us general feedback, simply e-mail <feedback@packtpub.com>, and mention the book's title in the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
The code for this book is also available on GitHub at https://github.com/kerrishotts/PhoneGap-Enterprise-Code-Bundle. This repository may be updated from time to time in order to fix any errors or issues discovered.
Errata
Although we have taken every care to ensure the accuracy