dexetra labs - building apps that can get featured
DESCRIPTION
A presentation from Dexetra Labs talking about how to build apps that have higher chances of getting featured in the Play StoreTRANSCRIPT
Dialapp
2
DownloadsOF COURSE
Expect a download rate anywhere between 10000 and 50000 a day.
3
+1’sTHE NETWORK EFFECT
This is the best way to get to friends of users. And will also keep the downloads rate up, even after featuring. The +1s always help a lot in getting eyeballs and are a very powerful marketing tool.
4
Bragging rightsINVESTORS. FRIENDS. ANYONE.
You can fill one entire slide in that investment deck of yours. And if you are creative with white space, maybe even two.
5
CredibilityOH, IT IS A FEATURED APP?
Well this sets you apart, and makes you special. You can talk about how Google found your app good.
6
Validation.SWEET SWEET VALIDATION
This almost beats your dad finally telling you “Son, you made me proud.”
Your idea has value. Your implementation makes sense! You have succeeded in eliminating poverty. Almost.
7
User feedbackTHE GOOD. THE AWESOME.
You get a good understanding about the usability, and where people are dropping off in big numbers.
The user reviews and mails will pour in, with enough feature requests to fill your roadmap for the next 100 years.
“Private Diary/ tasks add ons If you can please create add-ons for business tasks/calendar, and private diary (other apps on the play store which I use frequently)
it's gonna be fantastic! ”
“Great, efficient and fast Awesome app!
Thanks for adding speed dial. Keep up the great
work So much better
than stock dialer”
8
Media 15 MINUTES OF FAME
So you filled one slide with featured stats. Well you can fill one more with the media mentions you got. That space at the bottom of your website you did not know what to use for: you should include the names of all these magazines there.
9
You’ve been featured!
TESTING YOUR METTLE
10
RuggednessHOW RUGGED IS YOUR SYSTEM
• Ability to take multiple logins at the same time
• Server load handling capability in case you have a server backend
11
Fix it CAN YOU FIX THINGS IN REAL TIME
• Well organized, modular code
• Efficient code
12
Communication
KEEP TALKING TO YOUR USERS
• Keep people posted when things are going well
• Even more important to keep people posted when things are not going well
13
Fast.Reusable. Compatible.
MAKE YOUR CODE
14
Modular coding
SEPARATE UI AND BUSINESS LOGIC
- 6 month update cycle for android UI
- Easy to maintain code
- Reusable
- Easy bug fix
15
Modular coding
SEPARATE UI AND BUSINESS LOGIC
• Use Interface to join different modules
• Create Libraries (e.g. Image loader, common backend)• Easy to reuse, maintain• Quick bugfix
• Use Fragments • Easy to maintain code• Ability to reuse UI Components• Easy to adapt your app for tablet, and different orientations
16
Optimize Overdraw
REMOVE UNWANTED PROCESSING
• Customise listitem parent to reduce overdraw
• Set your main theme colour as Windowbackground color and make your views transparent.
17
18
Optimize Overdraw
THEME COLOR: WINDOWBACKGROUND COLOR
<item name="android:background">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackground">@null</item>
19
Listview and adapters
ANDROID 101: THE BASICS
• Use convertview efficiently (override getItemViewTypeCount and getViewTyePosition method correctly)
• Use cursoradapter and cursorloaders for memory optimization
• Use Mergeadaptor for reusing and maintaining codes
20
ListviewMERGE ADAPTER
Listview listView; // initialize
ListAdapter a, b, c, d;// initializeMergeAdapter adapter = new MergeAdapter(context);adapter.addAdapter(a);adapter.addAdapter(b);adapter.addAdapter(c);adapter.addAdapter(d);
Adapter A
Adapter B
Adapter C
Adapter D
21
ListviewLISTVIEW ITEM OPTIMIZATION
@Overridepublic void requestLayout() { // We will assume that once measured this will not need to resize // itself, so there is no need to pass the layout request to the parent // view (ListView). forceLayout(); }
22
Sensors, http calls
YOU NEED YOUR PHONE TO MAKE CALLS…
• Wi-Fi state, charging state to determine when to make http calls
• Activity sensor to optimise other sensors (Location)
• SyncAdaptors to make your http calls efficient and user friendly
23
onCreate
onStart
THE FASTER, THE BETTER.
This has to run before the UI is populated. Optimizing this will reduce the time it takes for user to see content on the app.
Lesser loading time = Happy user
UX is the secret sauce!
25
Guidelines
UX TRANSLATE THE IDEA FOR THE USER
• Tried and tested methods
• Backward and forward compatible
• Learning curve is not steep
Tips
• Reduce custom UI components - build on top of the existing frameworks
• Don’t change standard navigation patterns
e.g. Back button and Navigation up
26
Stay updated
DROID GOT NEW SHOES
• Innovative/ first movers
• Ride the wave
Tips
• Just keep an eye out for updates
• Google I/O
27
Don’t restrict user base
THINK ABOUT TARGET AUDIENCE
• Bad reviews are bad
• Don’t kill the network effect downloads
Tips
• Code for multiple screens
• Think about landscape mode
• Don’t forget LTR and RTL
28
TranslateTHINK ABOUT TARGET AUDIENCE
• Big target segments might not get catered to
• Low effort, high investment
Tips:
• Thing about how content will sound in different languages
• Use xliff to provide context to make translations better
29
xliffMAKING TRANSLATION SIMPLER
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"><string name="detailed_persons_timeline">
<xliff:g id="person_name" example="John Samuel">%s</xliff:g>\'s Timeline
</string></resources>
Code UsagemTextView.setText(getString(R.string.detailed_persons_timeline, person.getName()));
30
Feedback LISTEN TO USERS AND NUMBERS
• A/B testing
• User reviews
• Analytics• Put in the right checks• Keep a tab of where users are
dropping off
31
Resources
http://developer.android.com
32
Contact
Vijith Menon ([email protected])
Kiran B H ([email protected])
Vishvesh Suriyanarayanan ([email protected])