Cross Platform Mobile Applications By Rohit Ghatol Contact me – rohit.ghatol@synerzip.com rohitsghatol@gmail.com www.synerzip.com Introduction Rohit Ghatol • Project Manager @ Synerzip • Associate Architect @ QuickOffice Inc • GTUG Manager • Certified Scrum Master • Corporate Trainer (Agile and Technical) • Was part of OpenSocial at Google www.synerzip.com 2 Topics • Overview • Understanding Mobile Apps • Cross Platform Mobile App Development • Pure HTML/JavaScript – PhoneGap • Interpreted JavaScript – Titanium • • • • • Native Mobile App Development Hybrid Mobile App Development Comparison between PhoneGap Vs Titanium Conclusion Q&A 3 www.synerzip.com Overview The process of developing Applications for various mobile platform using common source code with little or no change to the common source. This presentation focuses on Comparing two frameworks each taking a different approach to solve the above problem. We will Compare PhoneGap Vs Titanium . 4 www.synerzip.com Understanding Mobile Apps 5 www.synerzip.com Reaching Mobile Users 6 www.synerzip.com 1. Mobile Features Mostly Feature Sub Set Complete Feature Set 7 www.synerzip.com 2. Tablet Features Almost Complete Feature Set Complete Feature Set 8 www.synerzip.com 3. User Interaction Touch based Accelerometer Traditional 9 Compass www.synerzip.com e.g Layar Application 10 www.synerzip.com 4. Location aware Can be Location Aware but approximate Location Aware and highly accurate 11 www.synerzip.com 5. Sensors Handy Camera and Voice Recording Upcoming NFC (Near Field Communication) turning phone into Credit Card, Access Card, Business Card Exchanger www.synerzip.com 12 e.g Shopping Applications Scan a product’s barcode to know if it has the lowest price. If not, then navigate to a store which has the lowest price www.synerzip.com 13 6. Push Notifications Push Notification Notifying the User proactively 14 www.synerzip.com Challenges in building Mobile Applications 15 www.synerzip.com 1. OS Fragmentation Windows 7 Fragmentation 16 www.synerzip.com 2. Multiple Teams/Product Windows 7 Multiple Teams/Products www.synerzip.com 17 3. Uniform User Experience Windows 7 Uniform User Experience www.synerzip.com 18 4. Feature Fragmentation 19 Feature Fragmentation www.synerzip.com Types of Mobile App Dev 1. Native Mobile Apps 2. Cross Platform Mobile Apps 3. Hybrid partly Native partly Cross Platform 20 www.synerzip.com Native Mobile Apps When To When Not To • High Performance Apps • Performance is not the main criteria • Heavy on OS and Device Features • More or less Replicates Web Apps with few device feature • Complex N/W comm. • Standard Restful • Canvas based Apps • Widget based apps • Only Few Platforms • Many Platforms www.synerzip.com 21 Cross Platform Mobile Apps When To When Not To • Performance is not the main criteria • High Performance Apps • More or less Replicates Web Apps with few device feature • Heavy on OS and Device Features • Standard Restful • Complex N/W comm. • Widget based apps • Canvas based Apps • Many Platforms • Only Few Platforms www.synerzip.com 22 Cross Platform Mobile Apps When To When Not To • Time to market is critical • Saving Cost is critical 23 www.synerzip.com Hybrid Mobile Apps When To • Fairly Simple UI • Complex Backend • Quite few platforms Why To • Some parts of app are common • Rest parts are different • Use Cross Platform to develop common part • Use Native to develop the weight lifting parts • E.g ShareFile • Recommended way - PhoneGap Plugin www.synerzip.com 24 Cross Platform Mobile App Development 25 www.synerzip.com Cross Platform Strategies Cross Platform Source Code Common Platform e.g WebKit Mapping to Native Titanium Mobile PhoneGap 26 www.synerzip.com Common Platform Approach 27 www.synerzip.com Modern Browsers All new Smart Phones come with modern browsers, which have better support for HTML5/CSS3 specs Mobile OS Browser Android Webkit based iPhone Webkit based BlackBerry 6.0 + Webkit based Window Phone 7 IE 7 based * WebOS Webkit based Nokia Webkit based 28 www.synerzip.com WebViews All of these smart phones supports using these modern browsers as embedded views (aka WebViews) 29 www.synerzip.com JavaScript to native and back All these browser engine (most common being webkit) support Javascript to talk to native code and back Native Code (Java/C++/ObjC) HTML/Javascript JSON packets www.synerzip.com 30 Hybrid Applications HTML/Javascript application loads Google Maps and talks to the native code to gain access to GPS location Native Code (Java/C++/ObjC) HTML/Javascript GPS Location www.synerzip.com 31 Possibilities • Limitless Possibilities • Expose Camera, Accelerometer, GPS, any of the phones sensors to javascript • Instead of just building Browsed Based applications augment with more phone features 32 www.synerzip.com Development • HTML/CSS Application uses Common API exposing device features 33 www.synerzip.com Development • Sample code 34 www.synerzip.com Mapping to Native 35 www.synerzip.com Concept • Common API set is provided by framework • Application is written using this common api set • HTML/CSS may be supported or may not be supported. Titanium prefers native UI instead of HTML/CSS UI, Rhodes prefers HTML/CSS UI • Phone Features are access liked common api set (this is similar to that in PhoneGap) 36 www.synerzip.com Development • Two API Sets • One for UI * (Specific to Titanium Mobile) • Create Windows • Create Dialogs • ……. • One for Phone Features • Same as PhoneGap • Access Camera • Access GPS • …… 37 www.synerzip.com Development UI API Set 38 www.synerzip.com Development UI API Set 39 www.synerzip.com Issues • Common API set across platforms is always minimum • E.g IPhone as a widget, which Android not have • Fragmentation of the API itself. • What is platform specific and not part of Common API comes in Platform specific api? 40 www.synerzip.com Mobile App Dev Frameworks Common Platform • PhoneGap Mapping to Native • Titanium Mobile • Rhodes Mobile 41 www.synerzip.com Compare Screens (IPhone) PhoneGap Titanium Mobile 42 www.synerzip.com Compare Screens (Android) PhoneGap Titanium Mobile 43 www.synerzip.com 44 www.synerzip.com PhoneGap • Only platform to support 6 Platforms 45 www.synerzip.com PhoneGap • Standards based and extended 46 www.synerzip.com 47 www.synerzip.com PhoneGap Features 48 www.synerzip.com PhoneGap Prerequistes • Need to be acquainted with Android, IOS, BlackBerry, WebOS • Need to be expert at HTML/Javascript or framework like GWT • Need to be acquainted with JavaScript libraries like • • • • Jquery script.aculo.us Prototype Etc • Or Ajax framework like GWT • Need different project for each platform, inject PhoneGap code in each project • PhoneGap has no IDE, use Eclipse for Android and Xcode for IPhone www.synerzip.com 49 Demo Screens - IPhone 50 www.synerzip.com Demo Screens - Android 51 www.synerzip.com Challenges and Advantages • HTML based UI is the biggest Challenge as well as Advantage • Same UI can be used for Web and Mobile and even Desktop • Promising Framework • GWT – Used by Spring Roo for Enterprise Application Development • jQueryMobile – Based on legendary Jquery and now features • • • • • • Multipage Template Page Slide Transitions Dialogs Toolbars Forms Lists www.synerzip.com 52 53 www.synerzip.com • Appcelerator Titanium SDK • Titanium Module SDK • Appcelerator Titanium SDK • Titanium Module SDK Paid Modules • Commerce Modules • Communication Modules • Analytics Module • Media Modules 54 www.synerzip.com Titanium Mobile 55 www.synerzip.com Titanium Mobile Titanium JavaScript Interpreted By Wekit JavascriptCore Mozilla Rhino 56 IPhone www.synerzip.com Android Titanium Architecture 57 www.synerzip.com Titanium Prerequistes • Need to be acquainted with Android, IOS programming • Need to know JavaScript • Use Titanium Mobile IDE to configure projects and use Text IDE to edit the code (unlike PhoneGap, there is only one project for all platforms) 58 www.synerzip.com Demo Screens - IPhone 59 www.synerzip.com Demo Screens - Android 60 www.synerzip.com Challenges and Advantages • Being Native is the biggest strength • Limited cross platform api is a weakness • Platform specific api leads to fragmentation within code 61 www.synerzip.com Native Mobile App Development 62 www.synerzip.com Native App Development • Basically you need to hire experts who can • • • • Build Android, IOS, BB, BlackBerry and Windows mobile apps Devs should have experience to deploy apps on market Devs should have experience on various devices QA should know how to automate things on devices/emulator • Plan for risks if this is your companies first Mobile App deployment 63 www.synerzip.com Hybrid Mobile App Development 64 www.synerzip.com Hybrid App Development • Have Web Developers for Common UI • Have native code experts for heavy weight lifting • Use frameworks like PhoneGap Plugin Development framework to glue the above two pieces • Measure at every milestone to keep track of effect of changes • Use Automation to regress every layer 65 www.synerzip.com ShareFile Story • as 66 www.synerzip.com Comparison • • • • • Titanium Mobile Gives out native app API is more proprietary UI has Limitations UI will be fast Much better User Experience • Portal Code can not be reused • Extensions are possible • Limited support for HTML/Javascript PhoneGap • • • • • Gives out a mobile web app API is less proprietary UI possibilities are unlimited UI could be slow User Experience will get better with enhancements • Portal Code can be reused • Extensions are possible and easy to implement 67 More will come out of discussion, comments are welcome www.synerzip.com Conclusion • Webkit is the next Virtual Machine. • Maybe Going where Java could not go • HTML 5, CSS 3 and Javascript is future,but not ready just yet • HTML 5, CSS3 and Javascript to lessen the fragmentation • HTML 5 will compete with native components 68 www.synerzip.com Code Walkthrough - PhoneGap 69 www.synerzip.com Digging Deeper (Android) • Instead of extending a Activity, we extend DroidGap • DroidGap internally uses a WebView to show local/remote HTML/JavaScript/CSS • This WebView has hooks to • Call Java from JavaScript • And Vice a Versa • More like building Web 2.0 Applications • But also calling some java scripts which allow accessing native mobile resources e.g. Geo, Database, File System, etc 70 www.synerzip.com Digging Deeper 71 www.synerzip.com Bootstrapping phonegap <html> <head> <title>Phone Gap</title> <script type="text/javascript" src="scripts/phonegap.js"></script> <script>…</script> </head> <body onload=”init();"> <img id="map" /> </body> </html> www.synerzip.com 72 Bootstrapping phonegap function init() { document.addEventListener('deviceready’,loadMap,false); } 73 www.synerzip.com Bootstrapping phonegap function loadMap() { var successCallback= function(position) { var coords = position.coords; var url = "http://maps.google.com/maps/api/staticmap?center=" + coords.latitude + "," + coords.longitude ; document.getElementById('map').setAttribute('src',url); }; var failureCallback = function(e) { alert('Can\'t retrieve position.\nError: ' + e); }; //Fetch Coordinate Asynchronously navigator.geolocation.getCurrentPosition(successCallback, failureCallback ); } www.synerzip.com 74 PhoneGap Walkthrough • Lets see a Live Demo 75 www.synerzip.com Phone Gap Extension • Adding new apis to PhoneGap is Simple • Say Dropbox like Sync is exposed via javascript api • Each Platform to have Dropbox like Sync native code called from javascript • References http://wiki.phonegap.com/w/page/36752779/PhoneGapPlugins • Author – Rohit Ghatol www.synerzip.com 76 Code Walkthrough – Titanium Mobile 77 www.synerzip.com Directory Structure 78 www.synerzip.com App.js (entry point) var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title: 'Search', url: 'search.js' }); var tab1 = Titanium.UI.createTab({ window:win1, title:'Search Alternatives’ }); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); 79 www.synerzip.com search.js (building UI) var window = Titanium.UI.currentWindow; var search = Titanium.UI.createSearchBar({ height:43, top:0 }); var actInd = Titanium.UI.createActivityIndicator({ height:50, }); var tableview = Titanium.UI.createTableView({ top:50 }); window.add(search); window.add(tableview); www.synerzip.com 80 search.js (Ajax Call) var xhr = Titanium.Network.createHTTPClient(); xhr.onload = function() { actInd.hide(); var doc = xhr.responseText; var json = eval('('+doc+')'); var data = []; //…. Load data in data // provide the data to table to populate the table tableview.setData(data); 81 }; www.synerzip.com search.js (Event handling) //send ajax request to fetch altrnatives for searchText function searchAlternatives(searchText){ xhr.open('GET','http://api.alternativeto.net/software/'+searchText+'/?c ount=15'); xhr.send(); } //start search when user hits enter on search box search.addEventListener('return', function(e) { actInd.show(); searchAlternatives(e.value); }); www.synerzip.com 82 Titanium Walkthrough • Lets see a Live Demo 83 www.synerzip.com Questions? Agile Software Product Development Partner www.synerzip.com Hemant Elhence, hemant@synerzip.com 469.322.0349 84 www.synerzip.com Synerzip in a Nut-shell 1. Software product development partner for small/mid-sized technology companies • • • • Exclusive focus on small/mid-sized technology companies By definition, all Synerzip work is the IP of its respective clients Deep experience in full SDLC – design, dev, QA/testing, deployment Technology and industry domain agnostic 2. Dedicated team of high caliber software professionals • • Seamlessly extends client’s local team, offering full transparency NOT just “staff augmentation”, but provide full mgmt support 3. Actually reduces risk of development/delivery • • Experienced team - uses appropriate level of engineering discipline Practices Agile development – responsive, yet disciplined 4. Reduces cost – dual-shore team, 50% cost advantage 5. Offers long term flexibility – allows (facilitates) taking offshore team captive – aka “BOT” option www.synerzip.com 85 Our Clients 86 www.synerzip.com Questions? Agile Software Product Development Partner www.synerzip.com Hemant Elhence, hemant@synerzip.com 469.322.0349 87 www.synerzip.com