How not to fuckup with building mobile SDK and make clients happy

How not to fuckup with building mobile SDK and make clients happy

Presentation from GDG DevFest Nantes 2017
More information at: https://devfest.gdgnantes.com/

Abstract:
Are you working on the client library? Or design a public API for the module that is going to be used by other team or department?

In this session, Vitality will share his experience and key learnings from building a mobile SDKs for last 4 years.

F456ed67b75e58e533d11b301f5f62b5?s=128

Vitaliy Zasadnyy

October 19, 2017
Tweet

Transcript

  1. 1.

    @zasadnyy With building the mobile SDK How not to Fuck

    Up Vitaliy Zasadnyy Head of Mobile @ GetSocial
  2. 4.
  3. 5.
  4. 6.
  5. 12.
  6. 15.

    @zasadnyy Cost of fixing API Spend 10x more time on

    line of examples comparing to production code
  7. 19.

    <receiver android:name="im.getsocial.InstallReferrerReceiver"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER"/> </intent-filter> </receiver> <provider android:name="im.getsocial.sdk.invites.ImageContentProvider" <meta-data

    android:name="im.getsocial.sdk.AppId" android:value="LuDPp7W0J4"/> <activity android:name="com.demo.GetSocialDeepLinkingActivity"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="https" android:host="demo.gsc.im"/> <data android:scheme="getsocial" android:host="LuDPp7W0J4"/> </intent-filter> </activity> GetSocial.init()
  8. 20.

    <receiver android:name="im.getsocial.InstallReferrerReceiver"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER"/> </intent-filter> </receiver> <provider android:name="im.getsocial.sdk.invites.ImageContentProvider" <meta-data

    android:name="im.getsocial.sdk.AppId" android:value="LuDPp7W0J4"/> <activity android:name="com.demo.GetSocialDeepLinkingActivity"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="https" android:host="demo.gsc.im"/> <data android:scheme="getsocial" android:host="LuDPp7W0J4"/> </intent-filter> </activity>
  9. 31.
  10. 36.
  11. 41.
  12. 46.

    @zasadnyy Keep compatibility Select minimum supported platform version. After detailed

    market research Update maximum supported version. Continuously
  13. 53.
  14. 54.
  15. 55.
  16. 62.
  17. 65.
  18. 68.

    @zasadnyy Solving integration time problems Easy way to get SDK

    version Unique log tag Debug SDK configuration Actionable errors
  19. 73.

    @zasadnyy Solving end-user side problems void trackError(GetSocialException exception) { ...

    AnalyticsTrackManager.trackAnalyticsEvent( AnalyticsEventDetails.Name.SDK_ERROR, eventProperties); }
  20. 74.
  21. 75.
  22. 77.
  23. 80.
  24. 82.

    @zasadnyy Backward compatibility Use @Deprecation cycle /** * @deprecated use

    {@link #getAllIdentities()} instead. * Method will be removed in SDK v5.0.0. */ @Deprecated public List<String> getIdentities() { ... }
  25. 87.
  26. 88.
  27. 92.

    @zasadnyy API can be you biggest asset of liability -

    Joshua Bloch Put yourself in your customer’s shoes - Cesare Rocchi