Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Surviving ASuccessfulApp Launch
482.000 Downloads
iOS & Android 02.07.- 15.10.2013
Launching July 2013?!
• Using Java/JSP-centric platform
• Complex code base
• Lots of business logic in JSPs & taglibs
• No “out-of-the-box” REST API
No REST APINo Mobile Apps
The REST API
• Retro-fitted below the UI module
• Using Jersey REST Service stack
• Exposes simplified business logic
• Mixture of refactoring and rewriting
• Two months development time for v1
REST API Guidelines
• Smart API and stupid apps
• Human-browsable HTML from REST API
• Mobile apps never builds a URL
• REST API versioning and bootstrapping
• Custom HTTP Headers
REST API Bootstrapping
Custom HTTP Headers• Custom HTTP headers for each request
‣ X-WH-Application-Token - licensees
‣ X-WH-User-Token - credentials
‣ X-WH-Client - mobile app version
‣ X-WH-Security-Version - security
• Transport client-side state (e.g. credentials)
• Keep track of the mobile app usage on the server side
Now we have an API
but still no apps?!
Android & iOS Apps
• No know-how available at willhaben.at
• Building internal know-how takes time
• Teaming up with Tailored Apps
One Day Workshop
• Teaming up in a meeting room
• Writing Android & iOS prototype
• Use the shiny new REST API v1
• Prototype can be installed on a real phone
• Lots of food, drinks and coffee
Android Prototype
Android Prototype
Mikeis speaking
• Product Management and UX Designer -> Sketches, Mockups, Screens
• Product Development got order to create API to offer features of Willhaben website.
• App Developer between PM and PD working with Mockups/Screens and API.
• Weekly iterations to give and get feedback on UI and API.
Test Phase• Using Alpha channel of the Google Play Store to
distribute alpha versions internally.
• Friendly users got a link to a APK for beta testing. Easier than Beta channel.
• Barrier 1: Google+ account required.
• Barrier 2: Community not visible to public. User cannot opt-in. Invite to Community necessary.
• Barrier 3: Many steps required: Accept invitation. Follow link. Accept testing. Goto Play store. Download.
The Search & Filter Case
The Search & Filter Case
• Product management wanted a simple search and filter interface. "change a few filter values and start search"
• Product development assumed that the API should provide the same functionality as the existing web platform
Technical Components• ActionbarSherlock (who doesn't use it?)
• Android Annotations
• Robospice (SpringAndroid/Gson)
• Universal Image Loader
• EndlessAdapter
• GooglePlayServices for location
• Ant, later Gradle
The Power of Open Source
• Memory Leak found before final release
• Eclipse Memory Analyzer points to RoboSpice listener
• No solution on the mailing list
• Forked Robospice and removed listener
• Tests showed the memory leak was gone
• Ship it
The Power of Open Source
Device Fragmentation
• 3625 supported devices
• Supported API levels
‣ 8 to 18
‣ 11 Levels ~ 2.2-4.3
• Real problems cause : ~ 4
Sony Xperia 2.x
Which button to press?!
Sony Xperia 2.x
• TextViews displayed as buttons on start screen
• The styles of the TextView was set to a Holo-based style.
• No Click listener for TextView only on Layout.
• The users were confused - and it looked very ugly.
Simple Date Format?!• "yyyy-MM-dd'T'HH:mm:ssZZ"
• 2013-07-01T0018:24+0300 (GT-N7100 Build/JZO54K)
• 2013-08-29T08:25:0026+0200 (LT30p Build/9.1.A.1.141)
• 2013-08-08T09:0047:33+0200 (ZTE BLADE III Build/IMM76D)
• ????-??-??T??:??+???? (RC0709B Build/IMM76D) Q-Pad
Caching
• Caching of network request
• HttpCache might be faulty on some devices.
• A HTTP status code of 304 caused Robospice to return null objects
Screen Size
Screen Size• The only problem is the support of 240dp
devices - still 10%.
• You can only display a very limited amount of information.
• Designers never think about them. "All devices are 320dp". Maybe they think about "landscape".
• Developer easily forgets them, too. Rarely has a developer a device this small.
How (Not) To Soft Launch
• Development opts for Soft Launch
‣ Enough time to fix critical problems
• Product Management opts for Hard Launch
‣ Becoming a Top App is mandatory
• Product Management won :-)
How (Not) To Soft Launch
• Allocated additional time for DEV & OPS
‣ 12 hour performance tests with maximum load
‣ Re-tested system failure and recovery scenarios
‣ Reviewed system monitoring
Hard Launch - First Week
• Hundreds of exceptions in the server log file each and every day
‣ Tons of user will find any dormant bug
‣ First aid patches to work around bugs in the mobile apps
• Releasing twice a day
• No server crashes - no downtime
The FirstLaunchParty
12 Weeks Later
Installation History
Android Versions
Device Distribution
Tablet Distribution
Still Awake?!
Questions & Answers
willhaben.at
• Leading Austrian classified ads provider
• 2,0 million ads online
• 3,5 million unique clients
• 15,0 million visits/month
• We are looking for smart developers