mobile development options · topics • android, ios, html5/css3, phonegap, titanium, and jquery...

86
MOBILE DEVELOPMENT OPTIONS pratik patel | cto | triplingo twitter: @prpatel Tuesday, February 4, 14

Upload: others

Post on 17-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

MOBILE DEVELOPMENT

OPTIONSpratik patel | cto | triplingotwitter: @prpatel

Tuesday, February 4, 14

Page 2: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

steps to getting rich, 2010 edition1) develop mobile app2) ...3) profit! *

(* get bought by facebook/google/zynga/etc for absurd $)

Tuesday, February 4, 14

Page 3: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TOPICS• android, ios, html5/css3, phonegap, titanium, and jquery mobile

• native, cross-platform-to-native, and mobile web

• deep dive into:- phonegap- titanium

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 4: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

WE’LL FOCUS ON

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 5: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

MY EXPERIENCE

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 6: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

overview of the options

Tuesday, February 4, 14

Page 7: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE MOBILE• must know objective-c & java very well

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 8: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE II• must know the toolchain for each platform

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 9: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

ANDROID

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 10: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

XCODE

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 11: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE III• ability to create best possible app

• time & effort multiplied by platform

• obviously not cross-platform

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 12: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 13: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PHONEGAP• native wrapper

- bootstraps a webkit browser

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 14: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PHONEGAP• provides hooks into native functions- camera, contacts, accelerometer, etc

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 15: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

http://www.melablog.it/post/11421/phonegap-riceve-il-nulla-osta-di-apple-per-app-store

Tuesday, February 4, 14

Page 16: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PHONEGAP• must use native toolchain to build phonegap wrapper

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 17: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

CROSS PLATFORM

PRATIK PATEL | CTO

http://mashable.com/2011/02/22/html-mobile-development/

Tuesday, February 4, 14

Page 18: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

CODING PHONEGAP• you can develop right in a desktop browser for most of your app!

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 19: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

MOBILE WEB LIBS- jquery mobile- sencha touch- jo (joapp.com)- kendoui

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 20: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

PHONEGAP DIAGRAMOperating System (iOS/Android)

Phonegap native wrapper app

Webkit browserengineYour

code runs here

Tuesday, February 4, 14

Page 21: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

PHONEGAP ON IOS

Tuesday, February 4, 14

Page 22: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

APP DEV PLATFORMS

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 23: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

APP DEV PLATFORMS• xamarin (formerly monotouch) (c#)

• ansca corona (lua)

• appcelerator titanium (javascript)

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 24: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

APP DEV PLATFORMS• do _not_ generate code

• bridge from lang <x> to native

• uses native toolchain

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 25: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

BRIDGE• vendor writes hooks to native api

• vendor marshalls / unmarshalls calls & data in both directions

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 26: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

how they work

you code here

var win1 = Titanium.UI.createWindow({ url:'main.js', title:'Spice Guide', // backgroundImage:'./images/bg.png', navBarHidden: false, tabBarHidden: true});

app platform

android sdkios sdk

platform provides API

platform bridges to native

Tuesday, February 4, 14

Page 27: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 28: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM• open source, 100% free

• ide - titanium studio - based on eclipse

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 29: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM II• code in javascript

• again, not a generator

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 30: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

CODE REUSE?• 100% of non-ui code is reusable

• 80% of ui code is reusable

• ui code can become more reusable withexperience and patterns!

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 31: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM == NATIVE

PRATIK PATEL | CTO

• titanium api calls native objects/methods

• no code generation

• native widgets

Tuesday, February 4, 14

Page 32: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

TITANIUM LIVE CODING

Tuesday, February 4, 14

Page 33: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

notice something common?

Tuesday, February 4, 14

Page 34: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE TOOLCHAIN!

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 35: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

you must learn the native toolchain for any of the options!

Tuesday, February 4, 14

Page 36: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE TOOLCHAIN• you must learn the native toolchain

• spend a few days building a native app for each platform you’re interested in

• the time you invest in this will be paid back 100x

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 37: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

COMPARING THE OPTIONS

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 38: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE • no code reuse

• best possible experience

• games, low-level needs

• cost: $$$$$

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 39: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PHONEGAP • use tech you know (html/js/css)

• rapid development

• user experience is hard to perfect

• bad performance

• nuances of browser tech = black hole of effort

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 40: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

APP DEV PLATFORMS • can get good code reuse

• performance is very close to native

• must learn a new tool/platform

• abstraction distractions

• rapid development

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 41: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 42: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 43: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 45: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 46: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

IOS• objective-c language

• dispatch model is very powerful

• not low ceremony

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 47: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

ANDROID• java with limitations (davlik vm)

• open source platform

• tools you know and love (?)

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 48: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE II• developing the ‘same’ app for 2+ platforms == $$$$

• “low level” programming

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 49: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PHONEGAP

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 50: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PHONEGAP• open source, 100% free

• apache project

• large community

• tons of plugins

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 51: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

MIND THE GAP II• wraps a web browser in a native project

• your code runs in the browser

• plugins allow more native functions

• provides hooks into native functions- camera, contacts, accelerometer, etc

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 52: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

MIND THE GAP III• you can develop right in a desktop browser for most of your app!

• can use mobile web libs:- jquery mobile- sencha touch- jo (joapp.com)- kendoui

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 53: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

phonegap demo

Tuesday, February 4, 14

Page 54: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

APP DEV PLATFORMS

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 55: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

BRIDGE• vendor provides proprietary api on top

• you code to this api

• vendor writes hooks to native api

• vendor marshalls / unmarshalls calls & data in both directions

• again, no code generation!

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 56: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PRATIK PATEL | CTO

how they work

you code here

var win1 = Titanium.UI.createWindow({ url:'main.js', title:'Spice Guide', // backgroundImage:'./images/bg.png', navBarHidden: false, tabBarHidden: true});

app platform

android sdkios sdk

platform provides API

platform bridges to native

Tuesday, February 4, 14

Page 57: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

MONOTOUCH• based on mono

• c#

• $600 for both ios and android

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 58: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

ANSCA CORONA• based on lua - a script lang for c

• popular with game devs

• $349 for both ios and android

• less bridging

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 59: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

RUBYMOTION• based on ruby - but ios only

• fairly new

• $199• live repl, other nice features

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 60: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 61: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM• open source, 100% free

• support contract costs $

• extra modules cost $ (ex: storekit)

• ide - titanium studio - based on eclipse

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 62: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM II• code in javascript

• again, not a generator

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 63: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PLATFORMS• ios• android• mobile web (beta)

• blackberry 10 coming soon

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 64: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

Titanium SDK• javascript to native bridge

• code to titanium api (proprietary)

• write once, deploy to ios + android

• platform specific api’s too!

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 65: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

WIDGETS• buttons, labels, windows, views

• sliders, textfields, webviews

• pickers, tables

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 66: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

EVENTS• add / fire events

• very much like “web” javascript dev

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 67: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

CODE REUSE?• 100% of non-ui code is reusable

• 50% of ui code is reusable

• ui code can become more reusable withexperience and patterns!

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 68: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM == NATIVE

PRATIK PATEL | CTO

• titanium api calls native objects/methods

• no code generation

• native widgets

Tuesday, February 4, 14

Page 69: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

TITANIUM MODULES• titanium is based on modules

• each module represents an api

• bridge from javascript to native runtime

• example modules: networking, database, filesystem, ui, yahoo, media, map, facebook, accelerometer

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 70: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

let’s write a Titanium app

Tuesday, February 4, 14

Page 71: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

layouts codevar  view  =  Ti.UI.createView({        backgroundColor:'transparent',        top:0,        left:0,        width:'100%',        height:'100%',        layout:'vertical'});//  create  labels,  buttons,  text  fields

view.add(usernameLabel);view.add(usernameField);view.add(submitButton);

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 72: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

events code

Ti.App.addEventListener('event_type',  function(e)  {        Ti.API.info('The  '+e.type+'  event  happened');});

Ti.App.fireEvent('click',  {datakey:  'value'});

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 73: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

custom controlsvar buttonView1 = Titanium.UI.createView({ top: 0, left: 0, height: 50, width: 50, borderRadius: 10, backgroundColor: '#cef7ff' });var selection1 = Titanium.UI.createLabel({ text : 'Fish', color : '#f79e18', font : {fontSize : 40}, textAlign: 'center' });buttonView1.add(selection1);

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 74: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

httpclientvar  url  =  "https://www.google.com";var  xhr  =  Ti.Network.createHTTPClient({        onload:  function(e)  {                Ti.API.debug(this.responseText);                alert('success');        },        onerror:  function(e)  {                Ti.API.debug(e.error);                alert('error');        },  timeout:5000});xhr.open("GET",  url);xhr.send();

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 75: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

databasevar  db  =  Titanium.Database.open('mydb');

db.execute('CREATE  TABLE  IF  NOT  EXISTS  DATABASETEST    (ID  INTEGER,  NAME  TEXT)');db.execute('DELETE  FROM  DATABASETEST');

db.execute('INSERT  INTO  DATABASETEST  (ID,  NAME  )  VALUES(?,?)',1,'Name  1');db.execute('UPDATE  DATABASETEST  SET  NAME  =  ?  WHERE  ID  =  ?',  updateName,  updateId);var  rows  =  db.execute('SELECT  *  FROM  DATABASETEST');

while  (rows.isValidRow()){   Titanium.API.info('ID:  '  +  rows.field(0)  +  '  NAME:  '  +  rows.fieldByName('name')  +  '  COLUMN  NAME  '  +  rows.fieldName(0));   rows.next();}

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 76: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

facebookvar  fbButton  =  Titanium.Facebook.createLoginButton({   'style':'wide',   'apikey':'9494e611f2a93b8d7bfcdfa8cefdaf9f',   'sessionProxy':'http://api.appcelerator.net/p/fbconnect/',   bottom:10,  height:30,  width:300});Titanium.Facebook.publishStream("Set  your  status",null,null,function(r)   {     Titanium.API.info("received  status  response  =  "+JSON.stringify(r));     if  (r.success)

{Ti.UI.createAlertDialog({title:'Facebook',  message:'Your  status  was  ublished'}).show();

    }     else     {Ti.UI.createAlertDialog({title:'Facebook',  message:'Error  '  +

 r.error}).show();       }   });

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 77: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

animations   var  t3  =  Ti.UI.create2DMatrix();   t3  =  t3.rotate(20);   t3  =  t3.scale(1.5);

  var  a  =  Titanium.UI.createAnimation();   a.transform  =  t3;   a.duration  =  3000;

var  view1  =  Titanium.UI.createView({   backgroundColor:'#336699',   top:10,  left:220,  height:50,  width:50,   anchorPoint:{x:0,y:0}});win.add(view1);topLeft.addEventListener('click',  function(){   view1.animate(a);});

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 78: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

APP DEV PLATFORMS

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 79: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

REDUX• app dev platforms: a high level env

• reuse code

• access to native (and specific) api’s

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 80: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

REDUX II• performance is near native (95%)

• drawbacks:- abstraction- must know app platform + native platform

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 81: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

CHOOSING

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 82: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

NATIVE • no code reuse

• best possible experience

• games, low-level needs

• cost: $$$$$

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 83: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

PHONEGAP • use tech you know (html/js/css)

• user experience is hard to perfect

• bad performance

• nuances of browser tech = black hole of effort

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 84: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

APP DEV PLATFORMS • can get good code reuse

• performance is very close to native

• must learn a new tool/platform

• abstraction distractions

• rapid development

PRATIK PATEL | CTO

Tuesday, February 4, 14

Page 85: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

what would you pick?

Tuesday, February 4, 14

Page 86: MOBILE DEVELOPMENT OPTIONS · TOPICS • android, ios, html5/css3, phonegap, titanium, and jquery mobile • native, cross-platform-to-native, and mobile web • deep dive into: -

AU REVOIRPRATIK PATEL

@[email protected]

Tuesday, February 4, 14