Top Banner
Build your first app with HTML5, APIs and PhoneGap @mdobs @adammagaluk
88

Mobile app class Chicago

Oct 18, 2014

Download

Technology

Slides from my talk with Walgreens!
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Mobile app class Chicago

Build your first app with HTML5, APIs and PhoneGap

@mdobs @adammagaluk

Page 2: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Matt Dobson !

@mdobs [email protected]

!2

Page 3: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved !3

Adam Magaluk !

@adammagaluk [email protected]

Page 4: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

We work for Apigee

!4

Page 5: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

We help power AT&T, eBay Best Buy, Walgreens, Digital River, NewEgg, LiveNation, Cars.com, Dell, Getty Images, GraceNote, Shazam, HomeAway, Pearson, cheezburger, ...

!5

Page 6: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

We’ve organized this training in LA, San Jose, Austin, Denver, Amsterdam, Atlanta, Houston, Denver, Portland, Seattle, Chicago…

!6

Page 7: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Why do we do this? Why free?

!7

Page 8: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Apigee is always free for developers

Free Hosted Accounts 25GB storage limit, 10M push notifs/mo no API/bandwidth limit Commercial use OK

Free OSS version git.io/usergrid

!8

Page 9: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Paid plans available for large companies if you need to deploy this on your own servers or SLAs, 4 nines, multi-region, phone support, more storage, etc.

!9

Page 10: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

What are you here to learn today?

!10

Page 11: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Hopefully you know HTML basics, some Javascript... and Phonegap!

!11

Page 12: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved !12

9 - 10 Introduction & Basics10 - 11 UI Design & Walkthrough11 - 12 Creating the Backend12 - 1 Lunch

1 - 2 Reading Data2 - 3 Writing Data3 - 4 Phonegap4 - ? Q & A

Page 13: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Today’s goal: a simple list app

!13

Page 14: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

What is an app?

!14

Page 15: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Is a website an app?

!15

Page 16: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Different approaches: Native PhoneGap MonoTouch RubyMotion Appcelerator...

!16

Page 17: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

What is HTML5?

!17

Page 18: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

data-attributes geolocation localstorage history

!18

Page 19: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

For more info:

diveintohtml5.info caniuse.com html5rocks.com

!19

Page 20: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

jQuery and jQuery Mobile

!20

Page 21: Mobile app class Chicago

Section 1 Building the UI

Page 22: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Build something that looks like this: j.mp/museums-mock

!22

Page 23: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Sign up for a trial of Codiqa: j.mp/ codiqa-trial-unlimited

!23

Page 24: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Solution !

j.mp/museums-codiqa-ui

!24

Page 25: Mobile app class Chicago

Section 2 Add data to the backend

Page 26: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Why do we need a backend?

!26

Page 27: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Can I just reuse my existing backend? Maybe.

!27

Page 28: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Gotcha #1 No server-side page generation!

!28

Page 29: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Gotcha #2 Most differentiating features (geoloc, push notifications, etc.) require dedicated servers, code, and infrastructure.

!29

Page 30: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

We’re going to use a BaaS today! !

Efficiently addresses Gotchas 1 & 2 + doesn’t require code

!30

Page 31: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

It’s like a database that you call directly from your client code.

!31

Page 32: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

It’s a cloud service that makes it easy to store your data, retrieve it & query it.

!32

Page 33: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

It’s like iCloud or Skydrive to synchronize all your app data across users and devices

!33

Page 34: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Even in BaaS, there are plenty of alternatives!

!34

Page 35: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

(Apache) Usergrid !

2+ years in OSS 500+ stars 200+ forks 35 contributors

!35

Page 36: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Core technology behind the free developer platform “App Services” at Apigee

!36

Page 37: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

You can install and run it yourself from git.io/usergrid !

Or go hosted j.mp/apigee-start

!37

Page 38: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Add some data

!38

Page 39: Mobile app class Chicago

Section 3 Retrieve data using App Services

Page 40: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved !40

Server Infrastructure

App Code SDK API

Page 41: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

SDKs available for… !

JS, node.js, iOS, Android, Ruby, Rails, C#, Java, WP8, etc.

!41

Page 42: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Download the SDK j.mp/javascript-sdk

Getting Started j.mp/museum-quickstart

!42

Page 43: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Add some view code

!43

Page 44: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Solution !

j.mp/museum-fetch

!44

Page 45: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Add the museums to the listview using jQuery

!45

Page 46: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Solution !

j.mp/museum-list

!46

Page 47: Mobile app class Chicago

Section 4

What if you have no connection?

Page 48: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Add localStorage for offline access to the museums

!48

Page 49: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Solution !

j.mp/museum-storage

!49

Page 50: Mobile app class Chicago

Section 5 Add a new museum from the App

Page 51: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

`

Make the form add a museum to the list

!51

Page 52: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Solution !

j.mp/museum-add

!52

Page 53: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Limit and sort the list then use jQuery Mobile to filter the list

!53

Page 54: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Solution !

j.mp/museum-filter

!54

Page 55: Mobile app class Chicago

Section 6 Geolocation

Page 56: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Add location to objects

!56

Page 57: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Find your location - returned as latitude and longitude

!57

Page 58: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Query for nearby objects

!58

Page 59: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

To avoid the geolocation security error in Chrome !

python -m SimpleHTTPServer then open http://localhost:8000

!59

Page 60: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Geolocation docs !

j.mp/apigee-geoloc

!60

Page 61: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Solution !

j.mp/museum-geo

!61

Page 62: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Advanced Demo j.mp/targets-demo !

Code j.mp/targets-code

!62

Page 63: Mobile app class Chicago

Section 7 Run on mobile!

Page 64: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

A look at PhoneGap PhoneGap Build, Trigger.io, etc.

!64

Page 65: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Apache Cordova vs.

Adobe PhoneGap

!65

Page 66: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

To create a PhoneGap project phonegap create folder com.package.name ClassName

!66

Page 67: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Add your HTML to the top level www folder

!67

Page 68: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

*replace the www folder created in the last step with this one

www folder* in case you missed something j.mp/apigee-books-www

!68

Page 69: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Build for iOS !

phonegap local build ios

!69

Page 70: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Build for Android !

phonegap local build android

!70

Page 71: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

PhoneGap 3.0+ Whitelisting! !

in config.xml set <access origin=‘*’ />

!71

Page 72: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Android project j.mp/apigee-books-android !

iOS project j.mp/apigee-books-ios

!72

Page 73: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Build and run in XCode

!73

Page 74: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Android j.mp/phonegap-android-guide

!74

Page 75: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

PhoneGap Build

!75

Page 76: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

What could you do next?

!76

Page 77: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Push Notifications File Storage Social Features 3rd-party integration Legacy integration

!77

Page 78: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

For more information !

j.mp/apigee-docs!78

Page 79: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Great for prototyping, works at scale too! !

!79

Page 80: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

When you use Apigee, every piece of data you store gets saved in 3 different data centers around the US (and soon 3 centers in Europe too)

!80

Page 81: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

A top 10 US retailer uses it for every e-commerce call made to its app or website (over 50M users, thousands of calls per second).

!81

Page 82: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

One of the 10 largest private companies in the US used it to create an internal info management system for its 52k employees

!82

Page 83: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

A large luxury brand based in the UK mandates all contractors use it to build catalogs, campaign sites and apps for them

!83

Page 84: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Apigee is free for developers !

Free Hosted Accounts 25GB storage limit, 10M push notifs/mo. no API/bandwidth limit Commercial use OK Free OSS version git.io/usergrid

!84

Page 85: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Paid plans available for large companies if you need to deploy this on your own servers or SLAs, 4 nines, multi-region, phone support, more storage, etc.

!85

Page 86: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Ask for help! Announce projects! !

j.mp/app-craft !

Sign up now :)!86

Page 87: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Get more training !

Advanced class? Training for your company? Still free! [email protected]

!87

Page 88: Mobile app class Chicago

© 2013 Apigee – All Rights Reserved

Congratulations! !

I don’t accept tips but I do accept tweets! @mdobs #apigee !

[email protected]!88