An introduction to Titanium
Upcoming SlideShare
Loading in...5
×
 

An introduction to Titanium

on

  • 3,498 views

Presentation from Day 3 at OSDC 2011 (Canberra)

Presentation from Day 3 at OSDC 2011 (Canberra)

Statistics

Views

Total Views
3,498
Views on SlideShare
2,251
Embed Views
1,247

Actions

Likes
1
Downloads
40
Comments
0

7 Embeds 1,247

http://grahamweldon.com 1216
http://grahamweldon.dev 16
http://coderwall.com 8
http://a0.twimg.com 2
http://translate.googleusercontent.com 2
http://tomc3d.com 2
http://www.tomc3d.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    An introduction to Titanium An introduction to Titanium Presentation Transcript

    • An introductionto TitaniumEnough to get you into trouble
    • Graham Weldon PHP developer for 11 years CakePHP core contributor Open source public speaker Love developing/teaching @predominant http://grahamweldon.com http://cakedc.com
    • The rise of mobile Making, distributing and selling mobiles apps can be a lucrative business Well designed, available apps are sought after Users prefer a service or product if it comes with a mobile counterpart Mobile Available Accessible Offline
    • Mobile history PDA’s Original Netbooks Symbian (Nokia domination) iMode (Success in Japan) WAP Java ME Android, iOS, Windows Phone, Meego, and more
    • Building for mobile Google Android Java Apple iOS Objective C Windows Phone .NET platform (C#, primarily) Blackberry Java
    • Abstraction Layers
    • An abstraction layer is a way ofhiding the implementationdetails of a particular set offunctionality.
    • What is anabstraction layer?
    • Why use anabstraction layer? Simpler maintenance Only working with business logic and custom code One codebase, many platforms Quicker development Re-use existing knowledge Less re-training
    • I’m convinced!What can I use? NimbleKit (iOS) Adobe PhoneGap (Web container) Adobe Flex / Flash Appcelerator Titanium (Compiled to native) Corona (Lua) Rhomobile Web jQuery Mobile Sencha Touch Custom
    • Appcelerator Titanium
    • Appcelerator Titanium
    • Wait... Free? The platform and studio environment cost nothing You have all the tools you need to build applications Its also Open Source! http://github.com/appcelerator Whats the catch? Appcelerator is a company for profit Support Premium modules / extensions Custom development
    • Take advantage ofexisting skills Web Developers Use Javascript Learn and extend their knowledge Benefit their web skills Only the Titanium specific calls are different
    • Key advantages Write once Deploy everywhere Cut down on maintenance Simplify deployment to new platforms
    • The Titanium Platform
    • Titanium Studio Build apps Debug Profile Code hinting Easy device testing Easy deployment
    • How does it work? Pre-Compiler Optimise, Analyse code Find and resolve dependencies Front End Compiler Convert to native code Package in JS engine for other stuff Platform Compiler Compiled with native tools Xcode + iOS SDK, Java + Android SDK
    • What does that mean? Its optimising your code Converting what it can to native device code Anything it can’t gets run through the JS Engine Makes it super fast Makes it super portable no matter the code
    • Javascript!
    • A perfect match Titanium is View driven Event based Perfect for Javascript Layered view hierarchy Similar to iOS
    • Organising andbuilding your app
    • Resources The resources folder Holds all the important stuff Code Assets Platform specific whatsits
    • Platforms Sometimes platforms have differences You need to occasionally provide a different implementation Maybe some images for just that platform
    • iPhone folder appicon.png Icon for home screen *-Landscape.png Landscape splash image *-Portrait.png Portrait splash image Default.png Standard resolution Default@2x.png Double resolution (iPhone4+)
    • and of course... Android
    • app.js Code Context Separate context to keep things tidy and manageable ‘myVar’ in app.js Not accessible in win1.js Use globals sparinglywin1.js
    • But I want globaldata, configs, etc.. Define configuration files Use the Titanium Include Ti.include(...); Separate different information Only include what you need
    • UI Structure
    • Tabbed Layout Very common iOS Examples: Twitter app, Foursquare, Commbank, Phone One window per tab Tab windows can open sub-windows Naturally they get a “< back” option Easy to use and understand No effort required!
    • Doh! Platform differences iOS has tabs at the bottom Android has tabs at the top iOS has a title by default for tabGroups Android doesn’t have a title for tabGroups More than likely your creative director wants everything to look the same on all platforms Disregarding previous user epxerience on specific platforms.
    • There are workarounds!
    • Custom InterfacesPossible.But requires some real work.
    • Manage your UIInterface stackingOrder, and backtracking
    • Exciting! But scary...
    • Titanium makes it easy
    • Ti.Accelerometer addEventListener removeEventListener fireEvent Simulate accelerometer events
    • Ti.Geolocation Quick and easy Geo Current Position forwardGeocoder Address -> Coords reverseGeocoder Coords -> Address Add/remove listeners
    • Ti.Map Common interface for all devices Simple map integration Use with information from Ti.Geolocation Add custom pins / locations Switch map types Satellite / Standard / Hybrid
    • Ti.Analytics Monitor events Report on them later Gather info about behaviour Improve your application Challenge users
    • Ti.Contacts Access the Address Book Works on all devices One interface Integrate contacts Simplify information sharing Read only on Android :(
    • Ti.Database A simple to use database SQL compliant Install and update DBs Store local data Great for offline storage Sync later
    • Ti.Filesystem Read files Write files iOS restricted to sandbox (everyone is...) Android allows access to external media
    • Ti.Facebook Simple Facebook integration REST API (Deprecated) Graph API Login Store authorization Simple configuration Works everywhere
    • Ti.Gesture Track gestures add event listeners customise your app UX Events shake orientation change
    • Ti.Network Protocols TCP HTTP Bonjour Implement any protocol you like on TCP Connect your app Create a server
    • Ti.XML Easy to use parser Produce XML too Makes consuming services easy Includes things like rss atom oData
    • Yahoo! YQL My personal favourite Grab data from anywhere on the internet Query using XPATH Scrape websites (responsibly)http://developer.yahoo.com/yql/
    • Commercial Components There are a heap on the marketplace Some are reasonably priced Great way to get things done quickly You can sell your own components on the marketplacehttp://www.appcelerator.com/products/open-mobile-marketplace/
    • Also checkGithub Search repos for ‘Titanium’ Currently 706 results Components Full projects http://goo.gl/R69Ck
    • JSS
    • JSS: CSS style rules Not much information about it But very easy to use app.js app.jss Set almost any property Always clean before running your app!
    • app.jsapp.jss
    • app.jsapp.jss
    • Building your appMultiple platform support
    • Optionally selecta template
    • < insert coding montage >
    • Thats it! Thanks! Graham Weldon http://grahamweldon.com @predominant Cake Development Corporation http://cakedc.com @cakedc