112
Building Cordova Plugins for iOS Jay Garcia 1 Wednesday, September 25, 13

Building Cordova plugins for iOS

Embed Size (px)

Citation preview

Page 1: Building Cordova plugins for iOS

Building Cordova Plugins for iOS

Jay Garcia

1Wednesday, September 25, 13

Page 2: Building Cordova plugins for iOS

Agenda

• Why is hybrid so important?

• Look at the anatomy of a Cordova Plugin

• Explore some examples

2Wednesday, September 25, 13

Page 3: Building Cordova plugins for iOS

BYOD

image: http://emergingtech.tbr.edu/sites/default/files/styles/flexslider_full/public/BYOD_0.jpg?itok=W5xrH3rr

3Wednesday, September 25, 13

Page 5: Building Cordova plugins for iOS

The future is Hybrid

“While hybrid apps will be the majority of enterprise mobile apps, web technologies like HTML5 will make up the most commonly used languages for building mobile applications by 2015”

-David Mitchell Smith, VP & Gartner Fellow.

5Wednesday, September 25, 13

Page 6: Building Cordova plugins for iOS

Anatomy of a Hybrid app

• Deployed via a compiled binary

• Uses HTML5 for a portion of the UI

• Can integrate with native UI controls

• Features typically extend beyond what HTML5 can do natively

6Wednesday, September 25, 13

Page 7: Building Cordova plugins for iOS

Anatomy of a Cordova Hybrid app

HTML 5 app

Custom OS features

OS Packager

Optional

7Wednesday, September 25, 13

Page 8: Building Cordova plugins for iOS

Supporting Multiple Platforms with Cordova

Custom OS features

OS Packager

iOS

Custom OS features

OS Packager

WP8

Custom OS features

OS Packager

Android

Custom OS features

OS Packager

BBOS

HTML 5 app

8Wednesday, September 25, 13

Page 9: Building Cordova plugins for iOS

An example plugin

9Wednesday, September 25, 13

Page 10: Building Cordova plugins for iOS

An example plugin

Random Number

9Wednesday, September 25, 13

Page 11: Building Cordova plugins for iOS

An example plugin

Random Number

Random Number

Plugin creates this file

9Wednesday, September 25, 13

Page 12: Building Cordova plugins for iOS

Demo

Random Number

10Wednesday, September 25, 13

Page 13: Building Cordova plugins for iOS

11Wednesday, September 25, 13

Page 14: Building Cordova plugins for iOS

The Cordova Plugin dev process

12Wednesday, September 25, 13

Page 15: Building Cordova plugins for iOS

Configure Plugin

#1

The Cordova Plugin dev process

12Wednesday, September 25, 13

Page 16: Building Cordova plugins for iOS

Write ObjC Classes#2

Configure Plugin

#1

The Cordova Plugin dev process

12Wednesday, September 25, 13

Page 17: Building Cordova plugins for iOS

Write ObjC Classes#2

Configure Plugin

#1

The Cordova Plugin dev process

Write teh codez!#3

12Wednesday, September 25, 13

Page 18: Building Cordova plugins for iOS

Step #1:Configure Cordova to

use the plugin

13Wednesday, September 25, 13

Page 19: Building Cordova plugins for iOS

Edit config.xml

14Wednesday, September 25, 13

Page 20: Building Cordova plugins for iOS

Edit config.xml

14Wednesday, September 25, 13

Page 21: Building Cordova plugins for iOS

Edit config.xml

14Wednesday, September 25, 13

Page 22: Building Cordova plugins for iOS

Step #2:Create your Cordova

Classes

15Wednesday, September 25, 13

Page 23: Building Cordova plugins for iOS

Create ObjC files

16Wednesday, September 25, 13

Page 24: Building Cordova plugins for iOS

Create ObjC files

16Wednesday, September 25, 13

Page 25: Building Cordova plugins for iOS

Create ObjC files

17Wednesday, September 25, 13

Page 26: Building Cordova plugins for iOS

Create ObjC files

17Wednesday, September 25, 13

Page 27: Building Cordova plugins for iOS

Create ObjC files

17Wednesday, September 25, 13

Page 28: Building Cordova plugins for iOS

Create ObjC files

17Wednesday, September 25, 13

Page 29: Building Cordova plugins for iOS

Step #3:Write the code!

18Wednesday, September 25, 13

Page 30: Building Cordova plugins for iOS

JavaScript to ObjC Bridge

{ JavaScript }

19Wednesday, September 25, 13

Page 31: Building Cordova plugins for iOS

Executing Cordova plugin methods(The Pattern)

20Wednesday, September 25, 13

Page 32: Building Cordova plugins for iOS

Executing Cordova plugin methods(The Pattern)

20Wednesday, September 25, 13

Page 33: Building Cordova plugins for iOS

Executing Cordova plugin methods(The Pattern)

20Wednesday, September 25, 13

Page 34: Building Cordova plugins for iOS

Executing Cordova plugin methods(The Pattern)

20Wednesday, September 25, 13

Page 35: Building Cordova plugins for iOS

Executing Cordova plugin methods(The Pattern)

20Wednesday, September 25, 13

Page 36: Building Cordova plugins for iOS

Executing Cordova plugin methods(The Pattern)

20Wednesday, September 25, 13

Page 37: Building Cordova plugins for iOS

Initiating the “set” workflow

21Wednesday, September 25, 13

Page 38: Building Cordova plugins for iOS

Initiating the “set” workflow

21Wednesday, September 25, 13

Page 39: Building Cordova plugins for iOS

Initiating the “set” workflow

21Wednesday, September 25, 13

Page 40: Building Cordova plugins for iOS

Initiating the “set” workflow

21Wednesday, September 25, 13

Page 41: Building Cordova plugins for iOS

Initiating the “set” workflow

21Wednesday, September 25, 13

Page 42: Building Cordova plugins for iOS

Initiating the “set” workflow

21Wednesday, September 25, 13

Page 43: Building Cordova plugins for iOS

Initiating the “set” workflow

21Wednesday, September 25, 13

Page 44: Building Cordova plugins for iOS

Initiating the “set” workflow

21Wednesday, September 25, 13

Page 45: Building Cordova plugins for iOS

The “set” workflow

22Wednesday, September 25, 13

Page 46: Building Cordova plugins for iOS

The “set” workflow

22Wednesday, September 25, 13

Page 47: Building Cordova plugins for iOS

The “set” workflow

22Wednesday, September 25, 13

Page 48: Building Cordova plugins for iOS

The “set” workflow

23Wednesday, September 25, 13

Page 49: Building Cordova plugins for iOS

The “set” workflow

23Wednesday, September 25, 13

Page 50: Building Cordova plugins for iOS

The “set” workflow

23Wednesday, September 25, 13

Page 51: Building Cordova plugins for iOS

The “set” workflow

23Wednesday, September 25, 13

Page 52: Building Cordova plugins for iOS

The “set” workflow

24Wednesday, September 25, 13

Page 53: Building Cordova plugins for iOS

The “set” workflow

24Wednesday, September 25, 13

Page 54: Building Cordova plugins for iOS

The “set” workflow

24Wednesday, September 25, 13

Page 55: Building Cordova plugins for iOS

The “set” workflow

24Wednesday, September 25, 13

Page 56: Building Cordova plugins for iOS

Initiating the “get” workflow

25Wednesday, September 25, 13

Page 57: Building Cordova plugins for iOS

Initiating the “get” workflow

25Wednesday, September 25, 13

Page 58: Building Cordova plugins for iOS

Initiating the “get” workflow

25Wednesday, September 25, 13

Page 59: Building Cordova plugins for iOS

Initiating the “get” workflow

25Wednesday, September 25, 13

Page 60: Building Cordova plugins for iOS

Initiating the “get” workflow

25Wednesday, September 25, 13

Page 61: Building Cordova plugins for iOS

Initiating the “get” workflow

25Wednesday, September 25, 13

Page 62: Building Cordova plugins for iOS

The “get” workflow

26Wednesday, September 25, 13

Page 63: Building Cordova plugins for iOS

The “get” workflow

26Wednesday, September 25, 13

Page 64: Building Cordova plugins for iOS

The “get” workflow

27Wednesday, September 25, 13

Page 65: Building Cordova plugins for iOS

The “get” workflow

27Wednesday, September 25, 13

Page 66: Building Cordova plugins for iOS

The “get” workflow

27Wednesday, September 25, 13

Page 67: Building Cordova plugins for iOS

The “get” workflow

27Wednesday, September 25, 13

Page 68: Building Cordova plugins for iOS

The “get” workflow

27Wednesday, September 25, 13

Page 69: Building Cordova plugins for iOS

The “get” workflow

28Wednesday, September 25, 13

Page 70: Building Cordova plugins for iOS

The “get” workflow

28Wednesday, September 25, 13

Page 71: Building Cordova plugins for iOS

The “get” workflow

28Wednesday, September 25, 13

Page 72: Building Cordova plugins for iOS

The “get” workflow

28Wednesday, September 25, 13

Page 73: Building Cordova plugins for iOS

The “get” workflow

28Wednesday, September 25, 13

Page 74: Building Cordova plugins for iOS

The “get” workflow

28Wednesday, September 25, 13

Page 75: Building Cordova plugins for iOS

It works!

29Wednesday, September 25, 13

Page 76: Building Cordova plugins for iOS

It works!

29Wednesday, September 25, 13

Page 77: Building Cordova plugins for iOS

So... What else can we do?

30Wednesday, September 25, 13

Page 78: Building Cordova plugins for iOS

Custom audio FFT data renderer

31Wednesday, September 25, 13

Page 79: Building Cordova plugins for iOS

Custom audio FFT data renderer

31Wednesday, September 25, 13

Page 80: Building Cordova plugins for iOS

Custom audio FFT data renderer

31Wednesday, September 25, 13

Page 81: Building Cordova plugins for iOS

Custom audio FFT data renderer

31Wednesday, September 25, 13

Page 82: Building Cordova plugins for iOS

Demo

32Wednesday, September 25, 13

Page 83: Building Cordova plugins for iOS

• Amiga Mod music Player• Touch 2.2.1 UI• Driven by custom PhoneGap plugin

- C++ Library wrapped with ObjC• Renders FFT audio data • Custom Canvas touch component

- Three different modes• Really fast!!

- 20ms return cycle

App Details

33Wednesday, September 25, 13

Page 84: Building Cordova plugins for iOS

The Stack

{ JavaScript }

34Wednesday, September 25, 13

Page 85: Building Cordova plugins for iOS

The Stack

{ JavaScript }

34Wednesday, September 25, 13

Page 86: Building Cordova plugins for iOS

Get raw Data (JavaScript)

35Wednesday, September 25, 13

Page 87: Building Cordova plugins for iOS

Get raw Data (JavaScript)

Update data on View

35Wednesday, September 25, 13

Page 88: Building Cordova plugins for iOS

Get raw Data (JavaScript)

35Wednesday, September 25, 13

Page 89: Building Cordova plugins for iOS

Get statistic Data (ObjC)

36Wednesday, September 25, 13

Page 90: Building Cordova plugins for iOS

Get statistic Data (ObjC)

36Wednesday, September 25, 13

Page 91: Building Cordova plugins for iOS

Get statistic Data (ObjC)

36Wednesday, September 25, 13

Page 92: Building Cordova plugins for iOS

Get statistic Data (ObjC)

36Wednesday, September 25, 13

Page 93: Building Cordova plugins for iOS

Get statistic Data (ObjC)

36Wednesday, September 25, 13

Page 94: Building Cordova plugins for iOS

Get statistic Data (ObjC)

36Wednesday, September 25, 13

Page 95: Building Cordova plugins for iOS

Get FFT Data (ObjC)

37Wednesday, September 25, 13

Page 96: Building Cordova plugins for iOS

Get FFT Data (ObjC)

37Wednesday, September 25, 13

Page 97: Building Cordova plugins for iOS

Get Spectrum FFT Data (ObjC)

38Wednesday, September 25, 13

Page 98: Building Cordova plugins for iOS

Get Spectrum FFT Data (ObjC)

38Wednesday, September 25, 13

Page 99: Building Cordova plugins for iOS

Get Spectrum FFT Data (ObjC)

38Wednesday, September 25, 13

Page 100: Building Cordova plugins for iOS

Get Spectrum FFT Data (ObjC)

38Wednesday, September 25, 13

Page 101: Building Cordova plugins for iOS

Get FFT Data (ObjC)

39Wednesday, September 25, 13

Page 102: Building Cordova plugins for iOS

Get FFT Data (ObjC)

39Wednesday, September 25, 13

Page 103: Building Cordova plugins for iOS

Get FFT Data (ObjC)

39Wednesday, September 25, 13

Page 104: Building Cordova plugins for iOS

Render FFT Data

40Wednesday, September 25, 13

Page 105: Building Cordova plugins for iOS

Render FFT Data

Clear canvas

40Wednesday, September 25, 13

Page 106: Building Cordova plugins for iOS

Render FFT Data

40Wednesday, September 25, 13

Page 107: Building Cordova plugins for iOS

Render FFT Data

Update canvas

40Wednesday, September 25, 13

Page 108: Building Cordova plugins for iOS

Render FFT Data

40Wednesday, September 25, 13

Page 109: Building Cordova plugins for iOS

It works!

41Wednesday, September 25, 13

Page 110: Building Cordova plugins for iOS

Wrapping up

• BYOD pushing hybrid apps

• Hybrid is AWESOME

• Extends the capabilities of your web apps

42Wednesday, September 25, 13

Page 111: Building Cordova plugins for iOS

Resources

• Objective C

• http://cocoadevcentral.com/d/learn_objectivec/

• http://mobile.tutsplus.com/tutorials/iphone/learn-objective-c-day-1/

• Cordova:

• http://bit.ly/cdv_plugin_dev_guide

• http://bit.ly/cdv_plugin_spec

43Wednesday, September 25, 13

Page 112: Building Cordova plugins for iOS

Questions?

Jay Garcia

• @ModusCreate || @ModusJesus

• moduscreate.com

• https://github.com/ModusCreateOrg/custom-cordova-plugin-blog

• https://github.com/ModusCreateOrg/ModusModPlayer

44Wednesday, September 25, 13