Top Banner
Choosing Between Cross Pla1orm or Na4ve App Development Dave Springgay November 26, 2016
45

ChoosingBetween Cross Platform of Native Development

Jan 15, 2017

Download

Mobile

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: ChoosingBetween Cross Platform of Native Development

ChoosingBetweenCrossPla1ormorNa4veAppDevelopment

DaveSpringgayNovember26,2016

Page 2: ChoosingBetween Cross Platform of Native Development

DaveSpringgay

SoAwaredevelopmentmanager,userexperiencearchitectandscrummaster

Page 3: ChoosingBetween Cross Platform of Native Development

Agenda

•  Historyofhybridappdevelopment•  Whyit’simportanttoday•  Discussonedecisionmakingprocess•  Theelementsofagreatuserexperience•  Evaluateonepopularapp,toseehowwecouldbuildit

Page 4: ChoosingBetween Cross Platform of Native Development

KEEPCALMTherearemanywaystobuildanapp.

Let’sshareideas.

Page 5: ChoosingBetween Cross Platform of Native Development

History

•  WhentheiPhonewasfirstreleasedin2007,itdidn’tsupport3rdpartyapps.

•  Itwasn’tun4lJuly2008thatApplereleasedanSDK.

•  ThefirstFacebookappwasbuiltusingHTML5–  Itsupportedmorethan500millionpeopleon7000devices

•  ThefirstLinkedInappwasbuiltusingmobile-webtechnology

Page 6: ChoosingBetween Cross Platform of Native Development

HybridBackThen

•  Na4veappsthathostedamobilewebsite

•  Mul4pageapplica4ons•  Longpageload4mes•  Nolocalstoragefordata

•  Noconnec4onànoapplica4on

•  Veryli[leintegra4onwithna4vefeatures

•  Na4veappswithsmallwebviewsandsimplecontent

Page 7: ChoosingBetween Cross Platform of Native Development

TheTimesofLondon•  2012•  Na4veapp•  Pagetemplatesanddataweredownloadedseparately

•  Eachpagewasrenderedinawebview

•  Offlinereading•  Performancechallenges•  Nega4vefeedbackfromAppleandGoogle

Page 8: ChoosingBetween Cross Platform of Native Development

TheDisrup4on

•  InAugust,2012,Facebookreleasedtheirfirstna4veiOSapp–  “Faster,morereliableandeasiertouse”

•  InApril,2013,LinkedInreleasedtheirna4veapp–  “It’snotaperformanceissue”–  TheirHTML5appwasrunningoutofmemory

•  In2015,Flipkartabandonedtheirwebpresence–  “Ifyouwininmobile,youwinitall”

Page 9: ChoosingBetween Cross Platform of Native Development

SinceThen•  Mobilefirstandresponsivedesign–  Designandbuildappsthatworkacrossmobile,tabletandweb

•  Singlepageapplica4ons–  Downloadyourappcodeonce–  RetrieveyourappdatausingRESTcalls–  Loadviewswithinthepagedynamically–  Fasterload4mes

•  PhoneGap/Cordova–  Firstclassna4vewrapper–  JavaScriptAPI’sforna4vefeatures

•  Crosspla1ormmobiledevelopmentlanguages

Page 10: ChoosingBetween Cross Platform of Native Development

In2016•  Flipkartre-launchedtheirmobilewebapp–  TheywerelosingmarketsharetoAmazon–  Searchiscri4caltoretaildiscovery–  Socialsharingiscri4caltogrowth

•  Wes4llneedtobuildapplica4onsthatworkacrossmobile,tabletandweb

•  India’sstartupcommunityisthriving•  9outof10startupsfail(Forbes)–  Testyourhypothesisquickly– Minimizewaste

Page 11: ChoosingBetween Cross Platform of Native Development

CrossPla1ormDevelopmentOp4ons

Na4veApp

Oneappperpla1orAdifferentlanguageoneachpla1orm

Pla1ormspecificsystemAPI’sPla1ormspecificUIlibrary

HybridApp

OnelanguageInawebview

CommonbrowserAPICommonuserinterface

Na4veifneeded

HTML5/Cordova/Ionic

CommonLanguageApp

Onecrosspla1ormlanguageSharedAPIfornetworkaccessanddatastorage

Pla1ormspecificUIlibrary

XamarinandAppcelerator

MobileWebApp

PureHTML5CommonbrowserAPI

Nopla1ormAPI

HTML5

Page 12: ChoosingBetween Cross Platform of Native Development

DecisionCriteria

1.  Developmentskills,budgetand4me–  Crosspla1ormop4onsarecheaper

2.  Userexperience–  Pla1ormlookandfeel–  Performance–  Na4veop4onsarebe[er

3.  Distribu4onanddiscovery

Page 13: ChoosingBetween Cross Platform of Native Development

DevelopmentEffortNa$veApp CommonLanguage

AppHybridApp

TwoormoreappsAseparatecodebaseforeachAskilleddevelopmentteamforeachpla1ormHighestdevelopmentcosts

Onecodebase/mul4plevariantsCommoncore(C#orJS)+pla1ormspecificUI60–70%reuse*Moderatedevelopmentcosts

OnecodebaseOneteamofwebdevelopers,withsomemobileknowledgeLowestdevelopmentcostsCanbethebasisforawebapp

*Some4mestheSDKlagsbehindapla1ormrelease

Page 14: ChoosingBetween Cross Platform of Native Development

UserExperience

•  Pla1ormlookandfeel– Naviga4on,tabs,bu[ons,switches– Swiping,scrolling,pinchandzoom

•  Pla1ormintegra4on– Camera,deviceorienta4on,mo4on,loca4on– Pushno4fica4ons–  Inapppurchases

•  Performance•  Offlinebehavior

Page 15: ChoosingBetween Cross Platform of Native Development

CrossPla1ormUserExperience

•  Theusergoal,thecontext,andtheirskills•  Mobileweb,mobile,andthedesktop•  Applica4onworkflowandinterac4on•  Designbestprac4ces– Mobilefirst,responsivedesign,materialdesign

•  Visualdesign– Pla1ormlookandfeel

Page 16: ChoosingBetween Cross Platform of Native Development

Facebook

Page 17: ChoosingBetween Cross Platform of Native Development

Facebook

Page 18: ChoosingBetween Cross Platform of Native Development

Facebook

Page 19: ChoosingBetween Cross Platform of Native Development

Facebook

Page 20: ChoosingBetween Cross Platform of Native Development

LinkedIn

Page 21: ChoosingBetween Cross Platform of Native Development

LinkedIn

Page 22: ChoosingBetween Cross Platform of Native Development

LinkedIn

Page 23: ChoosingBetween Cross Platform of Native Development

LinkedIn

Page 24: ChoosingBetween Cross Platform of Native Development

Snapchat

Page 25: ChoosingBetween Cross Platform of Native Development

Snapchat

Page 26: ChoosingBetween Cross Platform of Native Development

Snapchat

Page 27: ChoosingBetween Cross Platform of Native Development

InOtherWords

•  Thecrosspla1ormexperienceismoreimportantthanyouthink

•  Pla1ormlookandfeelislessimportantthanyouthink

Page 28: ChoosingBetween Cross Platform of Native Development

UserExperienceNa$veApp CommonLanguage

AppHybridApp

Variablecrosspla1ormexperienceOp4malpla1ormlookandfeelOp4malpla1ormintegra4on

Variablecrosspla1ormexperience??

Consistentcrosspla1ormexperience??

*Some4mestheSDKlagsapla1ormrelease

Page 29: ChoosingBetween Cross Platform of Native Development

Xamarin

Page 30: ChoosingBetween Cross Platform of Native Development

XamarinForms

•  Ac4vityIndicataor•  Bu[ons•  DatePicker•  Editor(nlinesoftext)•  Entry(1lineoftext)•  Image•  Label

•  ListView•  Picker(list)•  ProgressBar•  SearchBar•  Slider•  Stepper•  Switch•  TimePicker

Page 31: ChoosingBetween Cross Platform of Native Development

Ionic

•  “Buildgreatmobileappsandprogressivewebappsinawaythatfeelsjustlikebuildingwebsites”

•  HTML5andCordova•  Angular.jsSPAframework•  Freeandopensource•  “Beau4fuldesign”•  “Obsessedwithperformance”

Page 32: ChoosingBetween Cross Platform of Native Development

Pla1ormlookandfeel

•  Ac4onsheets•  Alerts•  Badges•  Bu[ons•  Cards•  Checkboxes•  DateTime•  Gestures

•  Inputs•  Lists•  Menus•  Modals•  Popover•  Slides•  Tabs•  Toolbars

LinktoDemo

Page 33: ChoosingBetween Cross Platform of Native Development

Pla1ormIntegra4on•  Ba[eryStatus•  Camera•  Contacts•  DeviceMo4on

(accelerometer)•  DeviceOrienta4on

(compass)•  File•  FileTransfer•  Geoloca4on

•  InAppPurchases•  Maps(Na4veorJS)•  MediaCapture•  NetworkInforma4on•  No4fica4ondialogs•  Pushno4fica4ons•  SocialSharing•  SqliteStorage•  StatusBar•  Vibra4on

Page 34: ChoosingBetween Cross Platform of Native Development

SomeExcep4ons

•  Deeppla1ormintegra4on– Customkeyboards– Homescreenac4ons– 3DTouchoniOS

•  Peekandpop– Widgets

•  Arethereanymore?

Page 35: ChoosingBetween Cross Platform of Native Development

UserExperienceNa$veApp CommonLanguage

AppHybridApp

Variablecrosspla1ormexperienceOp4malpla1ormlookandfeelOp4malpla1ormintegra4on

Variablecrosspla1ormexperienceOp4malpla1ormlookandfeel*Op4malpla1ormintegra4on*

Consistentcrosspla1ormexperienceBeau4fullookandfeel*Broadpla1ormintegra4onThereareexcep4onswherena4vecodeisneeded

*Some4mestheSDKlagsbehindapla1ormrelease

Page 36: ChoosingBetween Cross Platform of Native Development

Performance

•  Poorperformanceàpoorexperience•  Factorsthataffectperformance– Load4me– Network4me(spinner)– Render4me–  Interac4veresponse(feel)

•  Scroll,flick,swipe,jank– Dataprocessing

Page 37: ChoosingBetween Cross Platform of Native Development

NurevaSpan

Page 38: ChoosingBetween Cross Platform of Native Development

DataProcessing

•  Heavydataprocessingisriskyinahybridapplica4on

•  Camerafilters•  Graphicmanipula4on•  Graphicallyintensivegames•  Arethereanymore?

Page 39: ChoosingBetween Cross Platform of Native Development

PerformanceNa$veApp CommonLanguage

AppHybridApp

Fastload4mesFastrenderingFastinterac4onRawhorsepowerBaddesignàbadexperience

Thesameasana4veappBaddesignàbadexperience

GooddesignàgoodexperienceStorecodelocallyLoadviewsdynamicallyDoUIworkonthemainthreadDonetworkopera4onsna4velyonabackgroundthread

Page 40: ChoosingBetween Cross Platform of Native Development

Distribu4onandDiscovery

•  Itshouldbeeasytodiscoveranapporservice•  Itshouldbeeasytolaunchanapp–  Install– Shortcut

•  Asadeveloper,Iwishitwaseasiertoupdatemyapp

Page 41: ChoosingBetween Cross Platform of Native Development

Distribu4onandDiscoveryNa$veApp CommonLanguage

AppHybridApp

IntheappstoreEasytofind,installandlaunchYouhavetouploadanewappevery4meyoureleaseApplewillreviewit

Thesameasana4veapp IntheappstoreEasytofind,installandlaunchYouonlyhavetouploadtheapponcePushchangestoyourappdirectlyfromtheIonicserverCanbethebasisforawebapp

Page 42: ChoosingBetween Cross Platform of Native Development

SummaryNa$veApp CommonLanguage

AppHybridApp

Easytofind,installandlaunchOp4malpla1ormlookandfeelOp4malpla1ormintegra4onOp4malperformanceHigherdevelopmentcosts

Almostthesameasana4veappModeratedevelopmentcosts

Easytofind,installandlaunchBeau4fullookandfeelBroadpla1ormintegra4onTherearesomeexcep4onsLowestdevelopmentcostsRapidrelease

Page 43: ChoosingBetween Cross Platform of Native Development

DecisionMakingProcess 1.  Ifyouhaveamul4-milliondollarbudget,alarge

teamofexperiencedna4vedevelopers,andabilliondollarrevenuestream,buildana4veapp

2.  If4meormoneyareaconcerntoyou,consideranotherapproach

3.  Ifyouthinkit’spossibletobuildagreatexperienceforyourappusingHTML5,CordovaandIonic,buildahybridapp

4.  Ifyoureleaseyourapponaweeklybasis,buildahybridapp

5.  Otherwise,buildacommonlanguageapp

Page 44: ChoosingBetween Cross Platform of Native Development

CanYouBuildaGreatHybridFacebookApp?

Scenario HybridImplementa$on

Installapp Installfromstore

Signup Angularview+OAuth2

Setupcontacts Contactsplugin

Downloadfeeddata H[pGet

Displayfeeddata Angularview

Expandphoto Angularview

Playinlinevideo Angularview

Sharestatus,photosandvideos Cameraplugin+H[pPost

Editandfilterphotos Performanceconcerns

Pushno4fica4ons Pushno4fica4onsplugin

Changeseungs UseIonicstyles+H[pGet/Put

Updateapp Ionic.Deploy

Page 45: ChoosingBetween Cross Platform of Native Development

Thankyou

LinkedIn:davespringgay