optimizing apps for technical constraints in emerging markets

Download Optimizing Apps for Technical Constraints in Emerging Markets

Post on 07-Jan-2017



Economy & Finance

1 download

Embed Size (px)


Optimizing Apps For Technical Constraints in Emerging Markets

Optimizing Apps For Technical Constraints in Emerging Markets

Optimizing Apps For Technical Constraints in Emerging MarketsEric Tyler Erict19@gmail.com



Three key questions to consider to optimize for a closer future

Question 1: How can I optimize for varying network connectivity?

Network discrepancies between rural and urban areas

Your apps needs to be data frugal

Optimizing for network constraints: Opera Mini Example

Optimizing for network constraints: Google Maps Example

Top three suggestions for optimizing for network constraints

Question 2: How can I optimize for the discovery of my app?

Need to look beyond the app store for user discovery

Optimizing for app discovery: SHAREit

Optimizing for app discovery: Translation into local dialects

Optimizing for app discovery: Indus OS Example

Top three suggestions for optimizing app discovery

3rd Question: How can I optimize for a wide range of devices?

This fragmentation has wide ranging implications

Optimizing for hardware constraints: Adapting to devices

Optimizing for constraints: Facebook Lite Example

Guide of recommendations for optimizing within constraints

SLIDE 19: Data constraintsUtilize caching and compression: https://code.facebook.com/posts/1365439333482197/how-we-built-facebook-lite-for-every-android-phone-and-networkCaching: https://www.youtube.com/watch?v=7lxVqqWwTb0&index=1&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiuhttps://www.youtube.com/playlist?list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiuMinimize APK size - http://stackoverflow.com/questions/3815269/how-to-reduce-app-apk-sizeOptimize data fetching and pushing: https://code.facebook.com/posts/1365439333482197/how-we-built-facebook-lite-for-every-android-phone-and-network Build asynchronous requests: http://gsmaterminals.github.io/Developer-Guidelines-Public/#4_1_asynchrony

Network ConstraintsOptimize client-server & network interaction - http://developer.android.com/training/efficient-downloads/efficient-network-access.html & http://developer.android.com/training/basics/network-ops/managing.html & https://code.facebook.com/posts/952628711437136/classes-performance-and-network-segmentation-on-android/Consider an offline mode: http://gsmaterminals.github.io/Developer-Guidelines-Public/#3_2_3_offline_mode Include low-bandwidth rendering: http://gsmaterminals.github.io/Developer-Guidelines-Public/#3_2_4_bandwidth_awareness Account for wifi offloading: http://www.aptilo.com/mobile-data-offloading/wifi-offload-3g-4g

Hardware constraintsAdapt application behavior for different device classes - https://github.com/facebook/device-year-classMinimize RAM, battery and storage Ram -https://source.android.com/devices/tech/debug/procstats.html Power - https://source.android.com/devices/tech/power/index.html Battery - https://source.android.com/devices/tech/power/batterystats.htmlMemory -- http://developer.android.com/training/articles/memory.htmlAccount for multiple screens: https://github.com/facebook/device-year-classEnsure background is dormant: http://gsmaterminals.github.io/Developer-Guidelines-Public/#4_6_background_foreground_modes


Efficient Network Connection UsageAccount for seamless network switching

Offloading to wifiAsynschonyOffline modeBandwith AwarenessEfficient network connectionsOptimized Traffic UsageUtilize Compression Dormant background modemethods of optimal data transmission (efficient protocols, caching, compression, data aggregation, pipelining, etc.)Resilient to changing network conditionsSupport Compression

Usability/ Asynchrony (Asynchronous requests)Techniques such as pipelining and asynchrony should be used to ensure that the client operates smoothlyEfficient network connection usageUse strategies that minimiseand optimise data traffic and avoid unnecessary data transfers, especially when roaming.Background/ foreground modes Deactivate background processes when not required. Deactivate background processes when not required.Background/ foreground modes, SchedulingDesign polling applications to aggregate their network activities.Connection loss and error handlingApplications should be resilient to changing network conditions and errors.CompressionApplications using HTTP should support compression.Data pushApplications should use push services in preference to polling.

Slow connectivity-Provide low-bandwidth UI for seamless downgrade-Use progress rendering-Prioritize serving the most popular user request

Intermittent connectivity-Work seamlessly between 2g/3g/LTE-Pre-cache and download when wifi available-Core usability in offline when connection lost

Hardware Account for capability for small screens Built for limited RAM/local storage Optimize for minimal batter usage

SoftwareOptimize for small app footprintProvide an mobile-web version

CostsMinimize cost from download through usage Only update when necessary and small size Communicate the value-add of updates



View more >