native javascript apps with phonegap by martin de keijzer

56
Phonegap Martin de Keijzer Code Motion Berlin - May 11, 2013 - Germany Native Javascript apps with Saturday, 11 May 13

Upload: codemotion

Post on 09-May-2015

718 views

Category:

Technology


2 download

DESCRIPTION

Writing applications for phones has been a daunting task since every platform uses it’s own language and API’s. PhoneGap will solve this problem for you by utilizing the browser capabilities. In this session we will see how we can turn a web based application into a native app. We will also look at posibilites to integrate native functionality, like the camera or accelerometer and deploying your app via PhoneGap Build which easily builds your application for all platforms.

TRANSCRIPT

Page 1: Native Javascript apps with PhoneGap by Martin de Keijzer

Phonegap

Martin de KeijzerCode Motion Berlin - May 11, 2013 - Germany

Native Javascript apps with

Saturday, 11 May 13

Page 2: Native Javascript apps with PhoneGap by Martin de Keijzer

Introduction

2

Saturday, 11 May 13

Page 3: Native Javascript apps with PhoneGap by Martin de Keijzer

About me

Martin de KeijzerDutch web developer

3

@Martin1982

PHPBenelux Board Member

Working for Ibuildings

http://www.martindekeijzer.nl

Saturday, 11 May 13

Page 4: Native Javascript apps with PhoneGap by Martin de Keijzer

What is PhoneGap?

4

Saturday, 11 May 13

Page 5: Native Javascript apps with PhoneGap by Martin de Keijzer

What is PhoneGap

5

A way to wrap you HTML app as a native application.

Saturday, 11 May 13

Page 6: Native Javascript apps with PhoneGap by Martin de Keijzer

What is PhoneGap

6

A way to bridge ‘Native’ functionality to a Javascript API

Saturday, 11 May 13

Page 7: Native Javascript apps with PhoneGap by Martin de Keijzer

Mission

7

PhoneGap’s mission is for PhoneGap to cease to exist!

Saturday, 11 May 13

Page 8: Native Javascript apps with PhoneGap by Martin de Keijzer

WTF?!?!?Cordova, PhoneGap

8

Saturday, 11 May 13

Page 9: Native Javascript apps with PhoneGap by Martin de Keijzer

PhoneGap Pre-Adobe

9

by

Saturday, 11 May 13

Page 10: Native Javascript apps with PhoneGap by Martin de Keijzer

PhoneGap acquisistion by Adobe

10

Acquired byDonated to

Saturday, 11 May 13

Page 11: Native Javascript apps with PhoneGap by Martin de Keijzer

Acquisition by Adobe

11

“PhoneGap” “Callback”“Cordova”

Saturday, 11 May 13

Page 12: Native Javascript apps with PhoneGap by Martin de Keijzer

PhoneGap now

12

Where changes get committed

Saturday, 11 May 13

Page 13: Native Javascript apps with PhoneGap by Martin de Keijzer

PhoneGap now

13

PhoneGap releases, still identical to Apache Cordova

Saturday, 11 May 13

Page 14: Native Javascript apps with PhoneGap by Martin de Keijzer

In conclusion

14

You’ll use PhoneGap!

Saturday, 11 May 13

Page 15: Native Javascript apps with PhoneGap by Martin de Keijzer

Getting ready for lift-offInstalling PhoneGap

15

Saturday, 11 May 13

Page 16: Native Javascript apps with PhoneGap by Martin de Keijzer

Getting PhoneGap

16

http://phonegap.com/download/

Saturday, 11 May 13

Page 17: Native Javascript apps with PhoneGap by Martin de Keijzer

Lib is where the magic lives

17

“lib” contains all supported platforms.... and a

♥ ♥ ♥ ♥ CLI tool ♥ ♥ ♥ ♥

Saturday, 11 May 13

Page 18: Native Javascript apps with PhoneGap by Martin de Keijzer

XCode Command Line Tools

18

Saturday, 11 May 13

Page 19: Native Javascript apps with PhoneGap by Martin de Keijzer

Creating your first project

19

$ ./path/to/cordova-ios/bin/create

/path/to/my_new_cordova_project

com.example.cordova_project_name

CordovaProjectName

Saturday, 11 May 13

Page 20: Native Javascript apps with PhoneGap by Martin de Keijzer

Creating your first project

20

XCode Project

Saturday, 11 May 13

Page 21: Native Javascript apps with PhoneGap by Martin de Keijzer

The app

21

Saturday, 11 May 13

Page 22: Native Javascript apps with PhoneGap by Martin de Keijzer

First Run

22

Saturday, 11 May 13

Page 23: Native Javascript apps with PhoneGap by Martin de Keijzer

Ready for action

23

Always use the “www” folder & always assume yourapp is running from a filesystem instead of a web server!

Saturday, 11 May 13

Page 24: Native Javascript apps with PhoneGap by Martin de Keijzer

Let’s take it easyPhoneGap build

24

Saturday, 11 May 13

Page 25: Native Javascript apps with PhoneGap by Martin de Keijzer

Creating builds using XCode

25

The pain:Running updates and checking requirements over

and over again!

Saturday, 11 May 13

Page 26: Native Javascript apps with PhoneGap by Martin de Keijzer

Creating builds using XCode

26

Saturday, 11 May 13

Page 27: Native Javascript apps with PhoneGap by Martin de Keijzer

PhoneGap build to the rescue!

27

http://build.phonegap.com

Saturday, 11 May 13

Page 28: Native Javascript apps with PhoneGap by Martin de Keijzer

PhoneGap build in a nutshell

28

Saturday, 11 May 13

Page 29: Native Javascript apps with PhoneGap by Martin de Keijzer

Getting started

29

OR

Saturday, 11 May 13

Page 30: Native Javascript apps with PhoneGap by Martin de Keijzer

Getting started

30

Saturday, 11 May 13

Page 31: Native Javascript apps with PhoneGap by Martin de Keijzer

Getting started

31

OR

Repository that represents“www”

Zip-file that represents“www”

Saturday, 11 May 13

Page 32: Native Javascript apps with PhoneGap by Martin de Keijzer

Getting started

32

Saturday, 11 May 13

Page 33: Native Javascript apps with PhoneGap by Martin de Keijzer

The power of PhoneGap Build

33

Title

Code

Metadata Test

Saturday, 11 May 13

Page 34: Native Javascript apps with PhoneGap by Martin de Keijzer

Build statusses

34

Grey: Still building, be patientBlue-ish: Build succeeded, click to downloadRed: Build error, action required

Saturday, 11 May 13

Page 35: Native Javascript apps with PhoneGap by Martin de Keijzer

Build errors

35

Saturday, 11 May 13

Page 36: Native Javascript apps with PhoneGap by Martin de Keijzer

Working in teams

36

Saturday, 11 May 13

Page 37: Native Javascript apps with PhoneGap by Martin de Keijzer

Building like a pro

37

config.xmlW3C Widget Specification

https://gist.github.com/Martin1982/5063962

Saturday, 11 May 13

Page 38: Native Javascript apps with PhoneGap by Martin de Keijzer

When the web just doesn’t sufficePlug-ins

38

Saturday, 11 May 13

Page 39: Native Javascript apps with PhoneGap by Martin de Keijzer

Accelerometer

39

Get device movement in an X, Y, Z space.

Saturday, 11 May 13

Page 40: Native Javascript apps with PhoneGap by Martin de Keijzer

Camera & Capture & Media

40

Use the device’s library, camera and microphone to work with local audio, video

and images.

<input type="file" accept="image/*" capture="camera">

Don’t forget iOS 6 supports:

Saturday, 11 May 13

Page 41: Native Javascript apps with PhoneGap by Martin de Keijzer

Compass

41

API to detect which way a device user is pointing

Saturday, 11 May 13

Page 42: Native Javascript apps with PhoneGap by Martin de Keijzer

Connection

42

See if a user is connected and inspect the type of connection:

Wifi, xG, Ethernet

Caution navigator.isOnline is your close friend

Saturday, 11 May 13

Page 43: Native Javascript apps with PhoneGap by Martin de Keijzer

Contacts

43

Access the user’s contact list

Saturday, 11 May 13

Page 44: Native Javascript apps with PhoneGap by Martin de Keijzer

Device

44

•Name•Cordova version•Platform•UUID•Version•Model

Saturday, 11 May 13

Page 45: Native Javascript apps with PhoneGap by Martin de Keijzer

Events

45

Handles application state(deviceready, paused etc)

Saturday, 11 May 13

Page 46: Native Javascript apps with PhoneGap by Martin de Keijzer

File

46

Filesystem bridging, based on the W3C File API

Saturday, 11 May 13

Page 47: Native Javascript apps with PhoneGap by Martin de Keijzer

Geolocation

47

Caution: Already supported by browsers!

API to get the latitudes and longitudes of the device.

Saturday, 11 May 13

Page 48: Native Javascript apps with PhoneGap by Martin de Keijzer

Globalization

48

Currency, language, date time

Saturday, 11 May 13

Page 49: Native Javascript apps with PhoneGap by Martin de Keijzer

InAppBrowser

49

The browser opened by window.open()

Saturday, 11 May 13

Page 50: Native Javascript apps with PhoneGap by Martin de Keijzer

Notification

50

•Alert•Confirmation•Beep•Vibrate

Saturday, 11 May 13

Page 51: Native Javascript apps with PhoneGap by Martin de Keijzer

Splashscreen

51

No matter how beautiful your splash screen is, eventually you’ll need to show and hide it

Saturday, 11 May 13

Page 52: Native Javascript apps with PhoneGap by Martin de Keijzer

Storage

52

SQL storage based on the W3C WebSQL specification.

Caution; WebSQL is no longer maintained IndexedDB is the new superhero!

Saturday, 11 May 13

Page 53: Native Javascript apps with PhoneGap by Martin de Keijzer

Why reinvent the wheelUser plugins

53

Saturday, 11 May 13

Page 54: Native Javascript apps with PhoneGap by Martin de Keijzer

Pick what you want

54https://github.com/phonegap/phonegap-plugins

Saturday, 11 May 13

Page 55: Native Javascript apps with PhoneGap by Martin de Keijzer

QUESTIONS

55

Saturday, 11 May 13

Page 56: Native Javascript apps with PhoneGap by Martin de Keijzer

[email protected]@Martin1982

Thank you for listening

Saturday, 11 May 13