CST 594 Mobile Computing
description
Transcript of CST 594 Mobile Computing
PowerPoint Presentation
CST 594 Mobile Computing
Kavitha ElamparithPratibha ChannamsettyEshwari MenteShruti ShivashankaraiahPranay MahendraAdit ShahNaveen Kumar
Integrating mobile apps with ERP data systems 46%Developing apps quickly 43.3%Testing and Quality Assurance 36.8%Compelling Experiences 34.9%Supporting multiple platforms from a common codebase 33.3%Cross platform development 32.8%Supporting multiple platforms 27.7%Why Titanium?Faster DevelopmentDevelop native applications 20% faster than writing in the native language
Code Reuse Reuse 60%-90% of developed code when supporting multiple platforms
Reduce CostMost apps take at least six months of full-time workand cost between $20,000 and $150,000 to develop. Reduce cost of development cross-platform by using a JavaScript based SDK
History - Appcelerator in Atlanta, Georgia - Jeff Haynie (CEO) and Nolan Wright (CTO)2008 - New HQ in Mountain View, CA - raised $6.2 M from Storm Ventures and Lary Augustin2009- Titanium launched at the Apples WWDC-1200 developers downloaded Appcelerator in 48 hrs- iPhone- and Android-based mobile applications in June2010 - April - BlackBerry, iPad-based tablet apps- raised $9M in Series B form Sierra Ventures and eBay.
History - (continued)2011- Acquired Aptana Inc and Particle Code. 2012- New Office in Beijing, China- Europe HQ opens in UK - Acquired Cocoafish and Nodeable- Launched Appcelerator Cloud Services (ACS) - Launched Titanium 3.0 Appcelerator Announces CODESTRONG 2012 Mobile Conference To Be Held in San Francisco2013- Opens an office in SFO408,612 registered developers have launched 51,208 apps
Growth Chart
1.5 Million Developers - 22.1k Apps in the Wild - 20 Million Active Users Making Titanium a Leading Mobile Development Platform among many
Appcelerator Titanium Open source SDK, Tools (Apache) Cross-platform (Win32, OSX, Linux) Based on WebKit Modular and extensible Supports JavaScript, Python, Ruby
Titanium OverviewApplications are built entirely in JavaScriptCross Platform !== Write Once, Run EverywhereCross Platform == Write Once, Adapt EverywhereBest PracticesProtect global scopeBe modularKeep code DRY (Dont Repeat Yourself)Similar to rich web based client applicationsSophisticated UI controlsClient-side Data ModelsLocal Storage and focused remote data accessComponent Oriented, Event Driven
ProductsTitanium Mobile
Develop Native iPhone, Android, and iPad apps with full access to each devices APIs.Titanium Desktop
Build Desktop apps that can be deployed with one code base on the PC, Mac, or Linux platforms.Appcelerator Network
Cloud services used for testing, packaging, distribution, and analytics.
Titanium Alloy
It is an MVC framework used to develop applications in a structured wayArchitecture
Product Architecture
Pros and Cons Rapid prototyping
JavaScript
Cross-platform
Growing community
ConsIncreasing complexityDevelopment complexities (and costs) rise more than proportionally to application complexity increasesNo FreemiumStoreKit, a module to enable In-App Purchase to Apples App Store, poorly documented and it seems to work only partially. unstable for production useLaggy Obviously you can have the most smooth, fast and comfortable user experience possible only with apps developed with a native development environment. ProductHost Operating SystemRAMTitanium StudioAll1GB (contiguous)Latest Android SDKOS X1.5GB (contiguous)Latest Android SDKWindows1GB (contiguous)Latest Android SDKUbuntu1.5GB (contiguous)System RequirementsMemory:
Operating SystemMin VersionMax VersionApple Mac OS X10.7 (Lion)10.6 (Snow Leopard) supported for SDK 2.1.X and earlier.10.8 (Mountain Lion)WindowsWindows 7Windows 8Ubuntu Linux10.04 LTS (Lucid Lynx)12.04 (Precise Pangolin)System RequirementsOperating System:
Valid Appcelerator Network account.
Download the installer from:https://my.appcelerator.com/resourcesDownloading & Installing
Launch the installer
Things to setup
Installing native sdks
Installing android sdk
Launching Titanium Studio
Android SDK Manger
Packages to install
Operating SystemPackage NamePackage VersionDownload Location
OS X
gitLatest(1.8.1.3)http://git-scm.com/download/macWindows
msysgitLatest(1.8.1.2)http://git-scm.com/download/winUbuntugitLatestDefault RepositoriesUseful softwareGit (optional, but recommended)
Importing a Sample Project
Creating a new project
New Titanium mobile project
Selecting template
Project File system Layout
Configuring the tiapp xml file
Run the project
How Titanium Works
Code your pages
RunTitaniumSDKRunning!Project in XCode/ObjC(in simulator)
Window structurewindowview
Titanium FeaturesNative UIReal Native tables, tabs, sliders and viewsRich Media APIsLocal and streaming audio and video, media recordingLocal and streaming Native Maps, compass and Geo locationOpen Source and ExtensibleExtend titanium with custom modules in native code.
Cont..Local and Remote DataLocal SQL database, Light weight Key/Value store, XHR.Integrated AnalyticsBaked-in analytics APIs to measure results and behavior.Social APIsIntegrated Face book connect and YQL.Development ToolsDevelopment and distribute your app for multiple platform from a single tool.
Native UI controlsUse native UI controls through a JavaScript interface
UI in Native and Titanium ApplicationiOS Phones have one screen resolution. Building Android apps require you to take the various screen sizes and aspect ratio into account.Titanium relies on native controls and UI.We write code in JavaScript , using special API that builds the UI controls.Recent addition of commonJS module made developing apps more fast and modular.
Cont..Writing same code for both the UI makes thing difficult to handle.Reasons:1. They have different screen resolution2. Different controls3. iOS takes 45% of the screen, while android has more dropdowns.
So In Titanium we create separate UI modules that communicate with same code.
Common APIs
MediaStream or package audio and video content same for both platforms
AccelerometerUse advance gesture and track movement to create groundbreaking user interface.
Geo locationUse Geo location to leverage your users position in the world
Face book connectFacebook module is available which uses new authentication features on both Android and iOS as well as a new set of methods to retrieve and submit data.We can either useTitanium.Facebook.authorize()methodFacebook LoginButton (Titanium.Facebook.createLoginButton()) on to your view and, when the user clicks it, well handle callingauthorize.Set Titanium.Facebook.appidto your Facebook application id before initiating authorizationFor more basic permission set Titanium.Facebook.permissions property to an array of the permissions you need.
Cont..
The Pizza AppMain Javascript files:App.jsMain.jsCrust.jsToppings.jsDetails.jsEnd.js
1. Display Clock2. Create view3. Create Scrollable view4. Navigate 5. Animate6. Fire an Event7. Handle an Event
How to ?
Listening to Custom eventsAdding the Toppings ListPersisting Crust Selection
Working With Data on TitaniumTitanium Data Options: Local Data Remote Data
Working With Local Data
Titanium Local Storage Options: Application Properties File System Database
To use a device's local storage, Titanium provides* Titanium.App.Properties :ideal for storing application-related settings* Titanium.Filesystem :facilitates file and directory manipulation* Titanium.Database :gives access to local SQLite databases
Each of these enable data to persist on a device across application restarts, power cycles, re-installation and even migration to a new device.
What kind of data storage should I use?Application Properties data consists of simple key/value pairsdata is related to the application rather than the userdata does not require other data in order to be meaningful or usefulFilesystem the data is already provided in file formatthe data is an image file
Database There are many similar data itemsItems of data relate to each otherrequire flexibility over how the data will be presented when you retrieve itthe data accumulates over time, such as transaction, logging or archiving dataApplication PropertiesReading and Writing Properties - six sets of get/set methods for handling six different data types:getBool() / setBool(): for booleans (true, false)getDouble() / setDouble(): for double-precision floating point numbersgetInt() / setInt(): for integersgetList() / setList(): for arraysgetString() / setString(): for strings
Filesystem StorageObjectsTitanium.Filesystem is the top level Filesystem module used for reading and saving files and directories on the device.Titanium.Filesystem.File is the file object which supported common filesystem based operations such as create, read, write, delete, etc.
PropertiesData storage locations: applicationDataDirectory: A read-only constant that indicates where your application data directory is located. Place application-specific files in this directory.resourcesDirectory: A read-only constant where your application resources are locatedtempDirectory: A read-only constant that indicates where your application can place temporary files
Filesystem Storage cont...Filesystems MethodsgetFile( ): return a file path as a Titanium.Filesystem.File objectread(): return the contents of file as blobwrite(): write the contents to filedeleteFile(): delete the fileexists(): return true if the file or directory exists on the devicemove(): move the file to another pathrename(): rename the filenativePath(): return the fully resolved native path
Database and file systemPre requisites: SQLite Database Easy ways to create a sqlite database - SQLite Manager (Firefox add on)SQLite database Browser.
Place your database file in the resource folder in your titanium project. The database installation will reference that folder to install your database.
SQLite DatabasesSQLite3 is the latest version of the mobile SQL-based relational database management system (RDMS), chosen by Apple, Google and RIM to provide local data storage on their mobile devices.ObjectsTitanium.Database the top level Database module. The Database module is used for creating and accessing the in-application Database. Titanium.Database.DB is the Database instance returned by Titanium.Database.open or Titanium.Database.install. Titanium.Database.ResultSet is the ResultSet instance returned by invoking a database SQL execute.
SQLite DatabasesDatabase Methodsopen( ): open a database. if it doesn't yet exist, create it.execute( ): execute a SQL statement against the database and returns a ResultSet.close( ): close the database and release resources from memory.install( ) : installs the database on the device/emulatorResultSet MethodsisValidRow( ): return true if the row is a valid row.fieldByName( ): retrieve a row value by field name.next( ): iterate to the next row in the result set.
60Working With Remote DataRemote Data in TitaniumYour Titanium application can interact with remote servers over HTTP using the HTTPClient object provided through the Titanium.Network namespace. ObjectsTitanium.Network.HTTPClient is the HttpClient instance returned from Titanium.Network.createHTTPClient.HTTPClient Methodsopen(): open the request and ready the connection.send(): send the request (Only async is currently supported).SetRequestHeader(): set the request header. Must be called after open but before send.setTimeout(): set the request timeout
RSS ReaderFetches the latest 10 items off the New York Times RSS feed and displays them in a TableView.
Clicking on one of the items will open the link in a web browser.
Titaniums HTTPClient object allows remote requests similar to Ajax/JS in a web browser.
An onload() method that handles the response of the request and an open() method in which we specify the type of request (GET/POST/PUT/DELETE) and the URL we are requesting. Finally we initiate the request by calling the send() method.
RSS ReaderEven though we are coding in Javascript, we are not in a web browser environment, so the usual document and window objects do not exist.
This means frameworks which make XML manipulation easy, such as jQuery and Mootools, will not work. However Titanium offers us the DOMDocument object, which acts and has a similar API to the web browser document object.
We can get the output of the HTTP request and automatically turn it into a DOMDocument object by accessing it as this.responseXML.documentElement.
RSS ReaderAfter the DOMDocument instance is set up, we do a simple XPath query to get the title and iterate over the items to get the data about the individual posts.
Next step is to populate the TableView. To do this we create several Titanium.UI.TableViewRow objects and then append them to our TableView.
Last step is to add functionality so that when an item in the TableView is clicked, the Android web browser will open to that specific post. Our code needs to listen for a click event on a TableViewRow and then launch a Titanium.Android.Intent.
RSS Reader
CompetitorsPurpose to enable cross-platform mobile application development
PhoneGap vs TitaniumPhoneGap-HTML based solution.Titanium-Pure javaScript API.PhoneGap runs in a native web browser view.Appcelerator compiles to Native Code.PhoneGap promotes code re-use and easiest transition from desktop to mobile.Appcelerator higher level API for native mobile development.
Differences
How to Choose???Options seem endless.Native app?Cross-platform solution? HTML5? Or A mix? Where should a developer to start? What should a growing business invest in?Like most things in life, it depends.