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

Mobile app class Chicago

  • View
    812

  • Download
    1

Embed Size (px)

DESCRIPTION

Slides from my talk with Walgreens!

Citation preview

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