73

Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,
Page 2: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,
Page 3: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Building Mobile AppsMatt Driscoll, Lloyd Heberlie

@driskull @lheberlie

Page 4: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

• Introductions• Expectations• Agenda• Resources

Welcome

Page 5: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Why are we here?

Page 6: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Lloyd Heberlie

Mobile resources in the API

Page 7: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Designing for mobileLloyd Heberlie

Page 8: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Touch aware map

Page 9: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Geocoder, LocateButton

esri/dijit/Geocoder

esri/dijit/LocateButton

Page 10: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Popup Mobile

esri/dijit/PopupMobile

Page 13: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Custom components

Custom basemap switcher

Page 14: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Lloyd HeberlieDesigning for mobile

Page 15: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Productivity and code managementLloyd Heberlie

Page 16: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Setup a developer machine

Source Control

Code quality and verification

web server

Page 17: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Code formatting and management

Page 18: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Automation and continuous integration

Page 19: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

• JSLint• JSHint

Code validation

Page 20: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

CSS preprocessors

Page 21: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Lloyd Heberlie

Productivity and code management

Page 22: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Debugging and testing for mobileLloyd Heberlie

Page 23: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Emulators / SimulatorsOpera Mobile Emulator iOS Simulator * Windows Phone Emulator * Android Emulator

Page 24: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Physical devices

http://blog.adtile.me/2014/01/08/adtile-device-lab/

Page 25: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Remote debugging

• Safari Web Inspector Remote• Google Chrome remote debugging• Adobe Edge Inspect

- Synchronized screen capture, device details- Node.js (weinre local)

• Web Inspector Remote (weinre)

Page 26: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Enable Safari remote web inspection

Page 27: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Safari remote debugging

Page 28: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Safari remote debugging

Page 29: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Chrome remote debugging

Page 30: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Chrome remote debugging

Page 31: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Adobe Edge Inspect

Page 32: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Adobe Edge Inspect

Page 33: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Adobe Edge Inspect

device_model = iPhonedevice_res = 1136x640orientation = portraitos_name = iOSos_version = 7.0.4pixel_density = 326 ppi

device_model = LGE Nexus 5device_res = 1080x1776orientation = portraitos_name = Androidos_version = 4.4.2pixel_density = 480 dpi

device_model = iPaddevice_res = 1024x768orientation = landscapeos_name = iOSos_version = 7.0.4pixel_density = 132 ppi

Page 34: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Lloyd HeberlieDebugging mobile

Page 35: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Mobile ResourcesArcGIS JavaScript API

Page 36: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Types Of Resources

• Widgets• Apps• Templates• Boilerplates• Code Snippets

Page 37: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Mobile resources in the API

Page 39: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Popup Mobile

esri/dijit/PopupMobile

Page 40: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Demo

Page 41: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

HTML5APIs, tools, best practices

Page 42: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

HTML5 APIs for Mobile

• Geolocation• Local Storage• Application Cache• Fullscreen• Video• Battery• Vibration

Page 43: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

HTML 5 input types

type=“email” type=“tel” type=“date”

Page 44: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Touch aware map

Page 45: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Feature Detection

• CanIUse.com• html5please.com

Page 46: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Fixing IE8

• Respond.js- Support CSS3 Media Queries

• Html5shiv- Support HTML5 sectioning elements

Page 47: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Demo

Page 48: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Design Guidelines

Page 49: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Responsive Design

• Designing a single web page/app that works well across a variety of devices and screen sizes

• Re-use content and software• Considers

- Device limitations- User’s behavior

Page 50: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Components of Responsive Design

1. Media Queries2. HTML53. CSS4. JS

Page 51: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Media Queries

Detect device screen size and orientation Apply CSS at specific break points Typical: 480px, 768px, 1024px, 1280px Test with these, Make sure all work

Page 52: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Mobile First Design

• Simplest design first• Constrains• Makes you do research on what your users really need• Not the kitchen sink• Know target audience

Page 53: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Screen Real Estate

• Screen real estate• Determine what’s important

Page 54: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Fluid Grid System

• Layout adapts to different screen sizes• Based on percentages• 12 column

Page 55: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Default BehaviorNot scaling, not adapting

Higher resolution

device

Lower resolution device

Page 56: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Grid Layouts

Vertical Stacking

Vertical Stacking No StackingHorizontal Stacking

Page 57: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Responsive Web FrameworksStandardized set of HTML, CSS and JS

• Bootstrap 3• Foundation 3• HTML5• Skeleton• YAML 4

Icon Fonts, images, media queries, components…

Page 58: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Full screen map app?

• Pros- Can be embedded- More space to interact

• Cons- No scroll

Page 59: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

The Hamburger Button

Page 60: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Wireframes

Sketches UI

Sketch Mockup UI Design

Page 61: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Iterative Design

Design

PrototypeEvaluate

Page 62: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Apps, Templates, Boilerplates

Page 63: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Demo

Page 64: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Tips & Tricks

Page 65: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Device Orientation

<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css"> <link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">

@media all and (orientation:portrait) { /* Styles for Portrait screen */

} @media all and (orientation:landscape) {

/* Styles for Landscape screen */ }

Page 66: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Touch Friendly UI: Finger Targets

Page 67: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Make sure your assets Scale• Icon Fonts• SVG• Multiple sizes of images

Page 68: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Demo

Page 69: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Final Notes

• Write code once• Make your maps responsive• Know your device• Know you user• Reduce HTTP Requests• Avoid bulky modules/plugins

Don’t re-invent the wheel!

Page 70: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

Mobile ResourcesConfiguring the viewport | Guide | ArcGIS API for JavaScriptMobile popup | ArcGIS API for JavaScriptAttribute editing - mobile | ArcGIS API for JavaScriptPopup content in side panel | ArcGIS API for JavaScriptLocate ButtonFullscreen DijitEsri/arcgis-dijit-sample-jsExpand Map Button Dijitdriskull/arcgis-dijit-expand-map-button-jshttp://localhost/git/application-boilerplate-js-drawer/application_boilerplate/driskull/application-boilerplate-js-drawerArcGIS API for JavaScript | Basic SearchArcGIS API for JavaScript | Search widget with multiple sourcesEsri/offline-editor-jsLiquidapsive (Liqui-dap-sive)

Page 71: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

HTML5Can I use... Support tables for HTML5, CSS3, etcHTML5 Please - Use the new and shiny responsiblyModernizr: the feature detection library for HTML5/CSS3dojo/has — The Dojo Toolkit - Reference Guidedojo/touch — The Dojo Toolkit - Reference Guidedojox.gesture — The Dojo Toolkit - Reference GuideaFarkas/html5shivscottjehl/Respond

Page 72: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,

AppsMobile PatternsEsri/bootstrap-map-jsBootstrap Map JS - DemosEsri/dojo-bootstrap-map-jsCitizen RequestRate the GeoForm (Live)ArcGIS - Responsive Map Viewer BoilerplateResponsive Map Viewer - DemosResponsive Map ViewerPublic Information MapArcGIS Web App TemplatesStory Map Tour | Story MapsNamibia Road TripStory Map Journal | Story MapsExplore a Tapestry of World EcosystemsUS Wildfire ActivityGalleryTipsResponsinatorFontello - icon fonts generatorIcoMoon App - Icon Font & SVG GeneratorCSS Orientation - Hongkiat.com

Page 73: Building Mobile Apps - Esri...ArcGIS API for JavaScript: Building Mobile Web Apps, 2015 Esri International Developer Summit—Presentation, 2015 Esri International Developer Summit,