arcgis api for javascript building native apps using phonegap · 2016 esri developer...

53
ArcGIS API for JavaScript Building native apps using PhoneGap Andy Gup, @agup Lloyd Heberlie, @lheberlie March 8–11, 2016 | Palm Springs, CA Esri Developer Summit

Upload: others

Post on 31-May-2020

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

ArcGIS API for JavaScriptBuilding native apps using

PhoneGapAndy Gup, @agup

Lloyd Heberlie, @lheberlie

March 8–11, 2016 | Palm Springs, CA

Esri Developer Summit

Page 2: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Agenda• Using PhoneGap• Esri PhoneGap Quickstart• jQuery overview• Putting it all together• Additional information

Page 3: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Why PhoneGap?• Mobile cross-browser access to these and more:• SDCard• Camera• Accelerometer• Contacts• Battery status• Ability to put JavaScript app in Google Play, App Store and Windows Phone Store

Page 4: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Lloyd Heberlie

Using PhoneGap

Page 5: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

What is PhoneGap?• Application container technology• Core engine is 100% open source• Web view container, plus JS API• HTML5, CSS3, JS = Native App

PhoneGap

Page 6: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

PhoneGap architecture

PhoneGapPlugins

PhoneGap ApplicationCode

NativeApp

Page 7: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

PhoneGap Plugins

Page 8: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

PhoneGap Plugin options

Page 9: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Setup a developer machine

Source Control

Code quality and verification

web server

Page 10: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Preparing for PhoneGap

Page 11: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Installing Apache Cordova

Page 12: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Check version of Apache Cordova

Page 13: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Updating Apache Cordova

Page 14: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Creating your first PhoneGap CLI project

phonegap create path/to/my-app "com.example.app" "My App"

Page 15: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Lloyd Heberlie

PhoneGap Quickstart

Page 16: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

PhoneGap Apps

Page 17: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Featured Apps

Page 18: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Featured Apps: Tripcase, Untappd

Page 19: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Universal Example

Page 20: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

jQuery overviewLloyd Heberlie

Page 21: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps
Page 22: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

data-attributes

Page 23: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Selections and filtering

Page 24: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Events

Page 25: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Dynamic content

Page 26: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

jQuery Mobile page lifecycle

Page 27: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Andy GupPutting it all together

Page 28: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Cordova Life Cycle Eventsdevicereadypauseresume

https://cordova.apache.org/docs/en/latest/cordova/events/events.html

Page 29: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

deviceready

Page 30: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps
Page 31: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

pause and resume

Page 32: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

UX Frameworks + Maps

Some coding considerations:Do view transitions cache pages?Does map get re-created after transition?Map widgets work portrait & landscape?Gracefully handle loss of internet?

Page 33: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

UX Frameworks

Page 34: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

View-based approach

Single page, single viewSingle page, multi-view Multi-page

Page 35: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

VIEW 1 VIEW 2

Page 36: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

View-based approach

Similar to…material design for Androidhuman interface for iOS

Compatibility with Google Play and AppStore

Page 37: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

v1.4.5 is over a year oldv1.5 beta is coming (many changes)v1.5 shares jQuery UI core

blog.jquerymobile.com

Page 38: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

quickstart-map-phonegap

• https://github.com/Esri/quickstart-map-phonegap

Page 39: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

jQuery – Single page map app

Page 40: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

jQuery – Single page map app

Page 41: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

jQuery – Single page map app

Page 42: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Single page map CSS

Page 43: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Uses AngularJS and node

Demo ionicframework.com

Page 44: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Geolocation with PhoneGap

HTML Geolocation API - same coding patternApproximate location Still always requires user opt-inOr, use a plugin

Page 45: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Geolocation with PhoneGapCan allow for passive locationDoes not increase accuracyDoes not speed up acquisitions timesOutdoors – turn off WiFi!

github.com/Esri/html5-geolocation-tool-js

Page 46: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Geolocation Native Plugins

https://cordova.apache.org/plugins/?q=geolocation

Android-only:https://www.npmjs.com/package/cordova-plugin-advanced-geolocation

Page 47: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Performance

Page 48: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Performance

Using CDN vs Hosting files locally- Hosted Locally – load much faster

Cross-browser issues? Consider Cross Walk

Page 49: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Native vs JavaScriptStill using a browserPlugins run native codeBrowser performance versus device performance

Page 50: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Security

Page 51: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps

Content Security Policy (CSP)Reduces the risk of XSS

Page 53: ArcGIS API for JavaScript Building Native Apps Using PhoneGap · 2016 Esri Developer Summit--Presentation, 2016 Esri Developer Summit, ArcGIS API for JavaScript Building Native Apps