Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PlayStore Bashing: Learn from the big fails

Eyal LEZMY
November 12, 2013

PlayStore Bashing: Learn from the big fails

Slides with speaker notes can be found here: http://bit.ly/andbigfails

Microsoft, Facebook, Yahoo, ... They are huge firms that are also big Android editors. During this presentation we will discover together the stories of big editors that published apps on the PlayStore (or not) that failed to satisfiy the users or the Android guidelines. To learn from their mistakes.

Eyal LEZMY

November 12, 2013
Tweet

More Decks by Eyal LEZMY

Other Decks in Programming

Transcript

  1. Request only what your app requires 1/3 of apps request

    more permissions than they need MINIMISE PERMISSIONS Users should prefer apps requesting the least permissions
  2. MINIMISE PERMISSIONS Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType(Phone.CONTENT_ITEM_TYPE); startActivityForResult(intent, MY_REQUEST_CODE);

    Start the contact app void onActivityResult(int requestCode, int resultCode, Intent data) { if (data != null) { Uri uri = data.getData(); if (uri != null) { Cursor c = getContentResolver().query(uri, new String[] {Contacts.DISPLAY_NAME, Phone.NUMBER}, null, null, null);} } } }
  3. MINIMISE PERMISSIONS Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType(Phone.CONTENT_ITEM_TYPE); startActivityForResult(intent, MY_REQUEST_CODE);

    Start the contact app Handle the result void onActivityResult(int requestCode, int resultCode, Intent data) { if (data != null) { Uri uri = data.getData(); if (uri != null) { Cursor c = getContentResolver().query(uri, new String[] {Contacts.DISPLAY_NAME, Phone.NUMBER}, null, null, null);} } } }
  4. Need an UUID? TelephonyManager.getDeviceId() Requires READ_PHONE_STATE permission MINIMISE PERMISSIONS NO!

    Settings.Secure.ANDROID_ID Reset at every wipe Not applicable on multi user environment
  5. Need an UUID? Generate your own UUID and use Backup

    API ! MINIMISE PERMISSIONS String id = UUID.randomUUID(). toString();
  6. Need an UUID? Generate your own UUID and use Backup

    API ! MINIMISE PERMISSIONS String id = UUID.randomUUID(). toString(); YES!
  7. Android Backup API · API is available on all Android

    devices. · Manufacturors can implements their own transport and storage for the API · Each device as its own backup data · A new device will take a backup from a device associated with your google account. · IT'S NOT A SYNC API ! MINIMISE PERMISSIONS
  8. Emulator (last devices configuration) Nexus 7 S4 Nexus 10 Mega

    XCover (Android 2.3) Tablets XBOX MUSIC
  9. Emulator (last devices configuration) Nexus 7 S4 Nexus 10 Note

    2 Galaxy Nexus S3 Mega Note 1 XCover (Android 2.3) Tablets XBOX MUSIC
  10. Our Nutshell XBOX MUSIC Brand New devices S4, Mega, HTC

    One, Xperia Z, ... Tablets Nexus 7/10, Tab2, Tab3, Note 10.1, … Old devices XCover Not compatible
  11. <compatible-screens> <screen android:screenSize="small" android:screenDensity="ldpi" /> <screen android:screenSize="small" android:screenDensity="mdpi" /> <screen

    android:screenSize="small" android:screenDensity="hdpi" /> <screen android:screenSize="small" android:screenDensity="xhdpi" /> <screen android:screenSize="normal" android:screenDensity="ldpi" /> <screen android:screenSize="normal" android:screenDensity="mdpi" /> <screen android:screenSize="normal" android:screenDensity="hdpi" /> <screen android:screenSize="normal" android:screenDensity="xhdpi" /> </compatible-screens> XBOX MUSIC
  12. Exclude tablets <compatible-screens> <screen android:screenSize="small" android:screenDensity="ldpi" /> <screen android:screenSize="small" android:screenDensity="mdpi"

    /> <screen android:screenSize="small" android:screenDensity="hdpi" /> <screen android:screenSize="small" android:screenDensity="xhdpi" /> <screen android:screenSize="normal" android:screenDensity="ldpi" /> <screen android:screenSize="normal" android:screenDensity="mdpi" /> <screen android:screenSize="normal" android:screenDensity="hdpi" /> <screen android:screenSize="normal" android:screenDensity="xhdpi" /> </compatible-screens> XBOX MUSIC
  13. Exclude tablets <compatible-screens> <screen android:screenSize="small" android:screenDensity="ldpi" /> <screen android:screenSize="small" android:screenDensity="mdpi"

    /> <screen android:screenSize="small" android:screenDensity="hdpi" /> <screen android:screenSize="small" android:screenDensity="xhdpi" /> <screen android:screenSize="normal" android:screenDensity="ldpi" /> <screen android:screenSize="normal" android:screenDensity="mdpi" /> <screen android:screenSize="normal" android:screenDensity="hdpi" /> <screen android:screenSize="normal" android:screenDensity="xhdpi" /> </compatible-screens> XBOX MUSIC Exclude brand new devices (XXHDPI screens)
  14. Exclude tablets <compatible-screens> <screen android:screenSize="small" android:screenDensity="ldpi" /> <screen android:screenSize="small" android:screenDensity="mdpi"

    /> <screen android:screenSize="small" android:screenDensity="hdpi" /> <screen android:screenSize="small" android:screenDensity="xhdpi" /> <screen android:screenSize="normal" android:screenDensity="ldpi" /> <screen android:screenSize="normal" android:screenDensity="mdpi" /> <screen android:screenSize="normal" android:screenDensity="hdpi" /> <screen android:screenSize="normal" android:screenDensity="xhdpi" /> </compatible-screens> XBOX MUSIC Exclude brand new devices (XXHDPI screens) Too restrictive!
  15. XBOX MUSIC “You should not use this element” It can

    dramatically reduce the potential user base for your application “Use it only as a last resort” When the application absolutely does not work with specific screen configurations “Instead, follow the guide to Supporting Multiple Screens” compatible-screens < >
  16. XBOX MUSIC It does not accept xxhdpi But you can

    instead specify 480 as the value compatible-screens < >
  17. The Mistakes XBOX MUSIC Have they tested on new devices?

    Ignoring the power users Brand new devices are bought by power users and early adopters Does not support preloading music The app is not prefectly opimized for mobility. Why ignoring nomad devices like tablets?
  18. Fight the confusion MICROSOFT OFFICE Office 365 offer is quite

    confusing People used to buy Office licenses, not to subscribe to an Office service They try to avoid confusion
  19. Problem MICROSOFT OFFICE Does not support tablet format A producting

    app has to be compatible with big screens formats
  20. Problem MICROSOFT OFFICE Does not support tablet format A producting

    app has to be compatible with big screens formats - The app is optimized for a phone - On tablet, you can use the Office Webapps - We plan to enable editing with Webapps Microsoft’s answer on PlayStore
  21. Other problems MICROSOFT OFFICE Less features than the competitors Does

    not support local files Does not support edition The backend seems not very ready I have been stuck during 24 hours at the mobile activation, and I’m not alone
  22. Conclusion MICROSOFT OFFICE Adapt your UI to screen sizes depending

    on your features Differenciate your service from competitors Especially when you are new on the market Your backend have to support your mobile distribution