77
Building Native Apps with ArcGIS API for JavaScript Using PhoneGap and jQuery Andy Gup, Lloyd Heberlie

Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

  • Upload
    buique

  • View
    232

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Building Native Apps with ArcGIS API for JavaScript Using PhoneGap and jQuery

Andy Gup, Lloyd Heberlie

Page 2: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Agenda

•Getting to know PhoneGap• jQuery and jQuery mobile overview• jQuery and ArcGIS API for JavaScript• Putting it all together• Additional information

Page 3: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Technical workshops at Dev Summit

• Web- Building Mobile Web Apps with the ArcGIS API for JavaScript

• Hybrid- You are here!

• Native- Search the agenda for “Runtime SDK”

Page 4: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Application comparison: Native vs. Web

• ArcGIS Runtime SDK for Android• https://developers.arcgis.com/android/guide/native-vs-web.htm• ArcGIS Runtime SDK for iOS• https://developers.arcgis.com/ios/objective-c/guide/native-vs-web.htm

Page 5: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Lloyd Heberlie

Hello Cordova and Resources

Page 6: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Enable Safari remote web inspection

Page 7: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

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 8: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

PhoneGap architecture

PhoneGapPlugins

PhoneGap ApplicationCode

NativeApp

Page 9: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

PhoneGap Plugins

Page 10: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

PhoneGap Plugin options

Page 11: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Setup a developer machine

Source Control

Code quality and verification

web server

Page 12: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Preparing for PhoneGap

Page 13: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Installing PhoneGap and Apache Cordova

Page 14: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Check versions of PhoneGap and Apache Cordova

Page 15: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Updating PhoneGap and Apache Cordova

Page 16: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Creating your first PhoneGap CLI project

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

Page 17: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Lloyd Heberlie

Hello Cordova (cont.)

Page 18: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

PhoneGap: Featured Apps

Page 19: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Featured Apps: Tripcase, Untappd

Page 20: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Agenda

• Getting to know PhoneGap

• jQuery and jQuery mobile overview• jQuery and ArcGIS API for JavaScript• Putting it all together• Additional information

Page 21: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet
Page 22: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Theme roller

Page 23: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

data-attributes

Page 24: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Selections and filtering

Page 25: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Events

Page 26: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Dynamic content

Page 27: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

jQuery mobile page lifecycle

Page 28: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Application lifecycle

phone OS nativeapplication

Esrimap

Esrimap

layers

3rd party +Esri JS

Page 29: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Lloyd Heberlie

jQuery mobile lifecycle

Page 30: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

LifeCycleApplication

3rd Party JS

Map

Layers

Phone OS

Page 31: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

jQuery and ArcGIS API for JavaScriptAndy Gup

Page 32: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Jquery Mobile + ArcGIS

Page-based approach versus responsiveSingle page map appMultiple page map app

https://github.com/Esri/quickstart-map-phonegaphttps://github.com/Esri/jquery-mobile-map-js

Page 33: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Single Page view

Page Structure

Apply CSS, roles and themes

Page 34: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Viewport meta tag

Page 35: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Single Page Map - HTML

Page 36: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Single Page Map - HTML

Page 37: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Single Page Map - HTML

Page 38: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Single Page Map - CSS

Page 39: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Andy Gup

Single page app

Page 40: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multi Page View

Set up additional pages

Set up page navigation

Additional CSS

Page 41: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multi Page View

Page 42: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multi Page View

Page 43: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multi Page app – Page 2 HTML

Page 44: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multi Page app – Page 2 HTML

Page 45: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multi Page app – Page 2 HTML

Page 46: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multi Page app – Page 2 HTML

Page 47: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multi Page app – Page 2 CSS

Page 48: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Andy Gup

Multi-page map app

Page 49: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Page Transitions & Orientation Change

• Page and Orientation life cycle

• Map destruction and resizing

Use jQueryHelper.js!https://github.com/Esri/quickstart-map-phonegaphttps://github.com/Esri/jquery-mobile-map-js

Page 50: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Page Transitions

Page 1 Page 2

~250 ms

Page 51: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Events: leaving page

pagebeforechangepagechangepagechangefailed

http://api.jquerymobile.com/category/events/

Page 52: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Events: entering page

pagebeforeshow

pageshow

pagechangefailed

http://api.jquerymobile.com/category/events/

Page 53: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Page Transitions & Orientation Change

Page 1 Page 2 Page 2

Page 54: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

The following won’t work in all use cases:

map.reposition();map.resize();

Page 55: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet
Page 56: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet
Page 57: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Use Case - Recenter the map

Page 58: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

jQuery Helper library

Page rotation – landscape/portraitAuto-recenteringMultiple views

var helper = new jQueryHelper(map);

https://github.com/Esri/jquery-mobile-map-jshttps://github.com/Esri/quickstart-map-phonegap

Page 59: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Auto-recenter after orientation change

Page 60: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Multiple page app – Map Life CycleListen for “helper-map-loaded” event

Page 61: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Putting it all togetherPhoneGap + jQuery + ArcGIS

Andy Gup

Page 62: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Andy Gup

Quickstart-map-phonegap

Page 63: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

JavaScript API Web Optimizer

http://jso.arcgis.comCreates a single fileCDN hosted or downloadCustom modules

Optimizer session – Thurs 10am, Primrose B!- Optimizing your JavaScript app performance

Page 64: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Andy Gup

ArcGIS Web Optimizer

jso.arcgis.com

Page 65: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Going Offline with JavaScript

Mobile web map used in areas of intermittent or no internet

Ability to reload or restart web map in areas of intermittent or no internet

Lightweight cross-browser functionality

Github.com/esri/Offline-editor-js (Experimental)

Page 66: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Want a full feature, robus offline solution?

ArcGIS Runtimes for iOS, Android, Qt and .NET!

Includes integrated support for offline editing and synchronization.

Offline routing!

Fully supports related tables, sub-types, domains and much more.

Page 67: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

What does offline JavaScript mean?

Take map tiles offlineStoring/syncing feature editsLimited storing/syncing attachmentsView TPKs

These work in browser and with PhoneGap!

Page 68: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

What does offline JavaScript mean?

How much storage?- Limited by the browser!- Depends on device- How many browser tabs open- ~100MB to 500MB

Runtimes can store much more data!

Page 69: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Offline Demos

Page 70: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Working with GPS

Exact same Geolocation APISame coding pattern!

May require geolocation plugin

Page 71: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

$ plugman search geolocation

Page 72: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Does it use device GPS

Yes!! …but it depends.

If GPS is enabledMay also use WiFi and cell triangulation

Page 73: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Working with GPS

Page 74: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Recap!

Install Cordova command lineUse jQuery Mobile for AppStore/Google PlayOn github.com/esri > PhoneGap & jQueryWorks with GeolocationLimited offline tiles and feature support

Page 75: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Rate This Sessionwww.esri.com/RateMyDevSummitSession

Page 76: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet

Questions?

Andy GupDeveloper Evangelist [email protected]@agup

Lloyd HeberlieJavaScript API [email protected]@lheberlie

Page 77: Building Native Apps with ArcGIS API for JavaScript …proceedings.esri.com/library/userconf/devsummit15/papers/dev_int... · Mobile web map used in areas of intermittent or no internet