Powered by:
Your app platform is not the target,
it’s the way to achieve your target
“Business opportunities are like buses, there’s always another one coming“
– Richard Branson
Powered by:
Parameters to consider
• Features
– Any unique requirements/features?
– Hardware requirements (external barcode scanner? Credit card scanner? Printer?)
MOBILE PAYMENT MARKET TO HIT $100 BILLION
Powered by:
Parameters to consider
• Market share
– Mass distribution? Boutique?
– Areas, languages, culture
3 2012Q ANDROID: 75%
IOS: 14.9% BB: 4.3%
SYMBIAN: 2.3% WINPHONE: 2%
Powered by:
Parameters to consider
• Monetize
– Are you selling the app or earning money from the app?
– Free / Premium or maybe FreeMium?
• App eco-system
– Habits users are familiar with (Windows phone)
Powered by:
Parameters to consider • Development resources
– The human resource (supply and demand)
– Licensing & distribution
• Branding – What the platform tells about your app?
Android-masses? BlackBerry-work? iOS-fashion?
• Future – The million dollar question!
Powered by:
… And the wrong considerations
• “Everybody I see has iPhones! That’s my market share I’m aiming…”
• “I have a BlackBerry device and I love it! Lets start by developing to it”
• “I know Android development, I’ll start with it”
• “iPhone users buy more apps than Android users buy”
Powered by:
The question is not what’s the
best OS version, It’s what the
best OS version that fits you.
“By failing to prepare, you are preparing to fail”
– Benjamin Franklin
Powered by:
Understanding your app version compatibility
• Higher versions = richer capabilities
• Higher versions = reaching fewer users
• Think of it this way – If you write your document in “Microsoft Word 2013”, users running “Word 2003” can’t open it.
• The goal – to achieve maximum market share while keeping maximum capabilities
Powered by:
Designating the right version
• Each platforms has different fragmentation
• It’s easy to see the differences…
Powered by:
Behind the scenes • The version isn’t always what the end user
experience, It’s also the tools and technologies the programmer is given to work with
• Using newer versions shortens your development time and keeps your staff up-to-date with today market
• But then again… less users reach…
Powered by:
So what would you choose?
iOS 5
iOS 6
Powered by:
Great apps need great
distribution opportunities
Powered by:
Types 1. Private
2. Public
• Each platform has it limitations
• Your app structure might depend on it
• It might improve your app security
Powered by:
Public distribution type • It’s not necessarily a monopoly like Apple’s
“AppStore”.
• Android for instance has two major players in the market – Google’s “Play” & Amazon’s “AppStore”
Powered by:
Private distribution type • Usually for apps designated to run “in house”
• Probably custom made for business special needs
• Sometimes it’s sold as a bundle of App + Device
• Might be temporary for beta testing purposes
• Private distribution = Private update mechanism, Remote auditing, Remote crash handling
Powered by:
Most application are living online.
What does it take to make it right?
An iPod, a phone, an internet mobile communicator... these are NOT three separate
devices! And we are calling it iPhone! Today Apple is going to reinvent the phone. And here it is.
- Steve Jobs
Powered by:
Connectivity
• Remember those days you had shaky connectivity? Internet crashes or very low bandwidth?
• With that risk in mind you should plan every step in your application. Code & Usability.
• What are your offline abilities you offer for your user?
Powered by:
This lecture is about mobile,
not “smart phones”.
“Yesterday’s home runs don’t win today’s games”
- Babe Ruth
Powered by:
When you say mobile device, what do you mean?
• Lets take Android for example. What definition fits best?
– “Smart phone OS”? (Nope. Has tablets.)
– “Hand held devices OS”? (Nope. Has other)
– So.. Just a “Mobile OS”? YES!
• What’s the unique features of a mobile platform? In today world – no rules!
Powered by:
Android
Powered by:
You’ve got a great idea!
How are you going to fit it all into
a mobile screen?
“Simplicity is the ultimate form of sophistication”
- Leonardo da Vinci
Powered by:
Common layout decisions
• Portrait? Landscape? Should I support them both?
• How to best express the application contents on various device types?
• Is the development compatible for both iPhone (smart phone) and iPad (tablet) ?
Powered by:
Smart phone vs. Tablet
• They both offer the same features, so the differences are mainly in the layout design
• Don’t save money by deciding “I’ll start developing to smart phone and then move on to tablet”
• You should go the extra mile to make your market share bigger. Never say “no” to users wishing to download your app
Powered by:
TABLET COMPATIBILITY
LEVEL 1 - NONE
Powered by:
Powered by:
TABLET COMPATIBILITY
LEVEL 2 – TABLET COMPATIBLE WITH BASIC LAYOUT CHANGES
Powered by:
TABLET COMPATIBILITY
LEVEL 3 – FULL COMPATIBILITY
Powered by:
UX (User experience)
• Being mobile consumers doesn’t qualify us as UX experts
• Consulting UX mobile designer is crucial
• Everyone that is involved in the application development process should learn the basic principals and practice them in their expertise area
Powered by:
Working under the limited
resources of a mobile device
“There is no reason anyone would want a computer in their home”
- Ken Olson, 1977
Powered by:
Know your limits
• Limited computer power
• Limited storage
• Relies on battery power
• Network bandwidth is expensive
Powered by:
Work with those limits
• Limited computer power -> calculate on server
• Limited storage -> know where to store
• Relies on battery power -> don’t over work
• Network bandwidth is expensive -> offer the user the ability to control it
Powered by:
Questions you might want to ask yourself
• Can I cache some of the data? For example pictures
• Do I have to check the exact GPS right now?
• Is my data structure efficient?
• Is my main algorithm optimized?
• Am I asking too much API requests from servers?
• Am I recycling the data I’m creating in a good sense?
• Am I maximizing the best native libraries?
• Did I close all the resources I’ve used?
Powered by:
Protect yourself and your users
(at least try to)
“The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-
lined room with armed guards”
– Gene Spafford
Powered by:
Common security practices
• Guard against malicious input • Secure access to the application • Encrypt sensitive configuration data • Security of the persistent storage • Data on the wire • Enforce a strong password policy • Limit the processing to something realistic e.g. large
searches • Auditing and logging • Beware of buffer overruns
Powered by:
... And some mobile considerations
• Less permission you ask = Easier gaining user trust
Powered by:
Machen Sie Ihren Benutzernamen
zu Hause fühlen,
selbst bei 2.00, und selbst wenn sie
nicht zahlen 1,999 $,
egal ob es in der Mitte 12.08 regnen
Powered by:
Let’s take a closer look…
Machen Sie Ihren Benutzernamen zu Hause fühlen,
selbst bei 2.00, und selbst wenn sie nicht zahlen $1,999,
egal ob es in der Mitte 12.08 regnen
Make your user feel at home,
even at 2AM, and even if they didn't pay $1.999,
no matter if it's raining in the middle of 08/12
Powered by:
On what localization areas should we focus
• Text
• Numbers
• Date-time
• Currency
Powered by:
Geographic targeting
• The key for good localization is knowing your target or targets
• You can target your app distribution to specific markets
Powered by:
How does it work
When you write your application:
You create a set of default resources, plus alternatives to be used in different locales.
When a user runs your application:
The Android system selects which resources to load, based on the device's locale.
Powered by:
How does it work • Preparing to localization Is simple and should be
a common programming practice in your app even if you don’t plan in the near future to expend it
• Good to know: – You should localize not only the app itself, but the app
page on the market as well
– Client-Server model (localized responses)
– RTL – it’s not that simple (changing layout)