98 Cups Of Tea is a presentation that I gave on Adobe AIR at webdu in Sydney May 2009.
Original session details:
Learn the ins and outs of building a successful AIR application with Flex. Andrew Muller will discuss experiences building applications for the AIR runtime using Flex, including his own checklist of what's needed and what's often overlooked by both developers and clients.
4. A good AIR app...
Had the functionality of a web app, but now works
like a desktop app
5. A good AIR app...
Had the functionality of a web app, but now works
like a desktop app
Doesn’t have to be 100% authored in Flex
6. A good AIR app...
Had the functionality of a web app, but now works
like a desktop app
Doesn’t have to be 100% authored in Flex
Should take advantage of the AIR feature set
7. A good AIR app...
Had the functionality of a web app, but now works
like a desktop app
Doesn’t have to be 100% authored in Flex
Should take advantage of the AIR feature set
Uses AIR as the platform, independent of the OS
8. A good AIR app...
Had the functionality of a web app, but now works
like a desktop app
Doesn’t have to be 100% authored in Flex
Should take advantage of the AIR feature set
Uses AIR as the platform, independent of the OS
Isn’t necessarily a widget or super-widget
11. Starting that AIR app...
It’s an oldie but a goodie
“If you fail to plan...”
12. Starting that AIR app...
It’s an oldie but a goodie
“If you fail to plan...”
There’s no AIR disaster story here
13. Starting that AIR app...
It’s an oldie but a goodie
“If you fail to plan...”
There’s no AIR disaster story here
But there are things you should consider that
should mean that you have a success story
14. Have a check list
A lot of AIR apps are commissioned to use one or
two features of AIR, but actually will benefit from
virtually all of the feature set
Typically the original spec for an AIR app
doesn’t include self updating
Network connectivity ( online / offline ) is under
utilised
15. AIR & the UI
The problem with Flex apps is that they look like
Flex apps
If you don’t have a designer there are great skins
and styles publicly available
Skin with Flex Builder’s CSS Explorer
Start using Flash Catalyst as soon as you can
16. AIR & the UI
The web metaphors work, but application
functionality is more appropriate
Remember you can have:
OS specific stuff like bouncing icons and things
happening in the system tray
Various menus are possible but no good if the
app is going to go chromeless
Panels / options
18. Good communication
Good application architecture means good
communication between all the parts of your
application
Consider the benefits of a framework like Mate or
Cairngorm
19. Mix and Mash
Blending HTML and Flash content
Use HTML content for regularly updated content
Use Ajax widgets instead of reinventing code
Handle offline / online application connections
Blending Flex and Flash content
The Flex Component Kit for Flash CS3+ means
that you can utilise existing Flash within Flex
20. Find a bit of class
Don’t reinvent the wheel, there’s good public
libraries of AS3 code for AIR ( for free! )
Google Code has numerous AS3 libraries
specific to AIR:
as3preferenceslib
as3notificationlib
AirLogger
21. Take the SQL challenge
“AIR, you make me a better SQL developer”
You may need to sharpen your SQL skills
depending on the amount of data manipulation
required, e.g.
Top 5
Latest 10
Highest ranked, averaged
Plan the DB thoroughly, release it with all the
22. SQL challenges
Some pointers:
No full text searching
Parameters, either named or unnamed ( ? )
?’%’ bad
? || ‘%’ good
itemClass allows you to type returned data
Use AS aliases when querying multiple tables
23. Making a SQL connection
AIR & SQLite means connect, create & execute
Start splitting into views and you might need to
start sharing that around...
Going further:
DataAccess utility class - Brandon Ellis
SQLServiceInvoker - mate extension
24. Filtering SQL results
Should you hit the database every time?
SQLite results are normally returned as
ArrayCollections
Additional ArrayCollection options:
Filter
Sort
25. Ooo, aah updating!
Application updating is one of those moments
where the client realises that they’ve made the
right choice
Display options
Before
After
Release notes
26. Async & swim
Recent client challenges have been building AIR
apps that have downloading functionality as part
of their core functionality, this requires:
Handling multiple asynchronous remote service
calls
Handling multiple simultaneous requests for
downloading files
27. Online / offline strategy
Have your framework do the work
Have clever content display/collapse if offline
Store images locally if online
Let the user know that things are up to date
28. Online / offline strategy
Force storage of local data, either DB or SO
Have a strategy for synchronising data
Have a strategy for connecting to services
Hack the status bar if you’re using the chrome
30. Odds and sods
Performance tuning:
Reduce the framerate while minimised
Grant Skinner’s FramerateThrottler class
Application style hidden bits and pieces
Private & public keys
Encrypted SQLite databases
EncryptedLocalStore
31. Application life cycle
Spec/design stage
Should include SQLite database design
Identify and create service calls
Wireframes, use tools like Balsamiq Mockups
Development stage
Anticipate changes to local databases
Update code should be implemented in early
32. Application life cycle
Test stage
Have a test plan
Ensure that all the objectives are being met
Test on multiple OSs
Deployment stage
Make sure that you have updating implemented
before you release