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

How not to fuckup with building mobile SDK and ...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

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.

Avatar for Vitaliy Zasadnyy

Vitaliy Zasadnyy

October 19, 2017

More Decks by Vitaliy Zasadnyy

Other Decks in Technology

Transcript

  1. @zasadnyy With building the mobile SDK How not to Fuck

    Up Vitaliy Zasadnyy Head of Mobile @ GetSocial
  2. @zasadnyy Cost of fixing API Spend 10x more time on

    line of examples comparing to production code
  3. <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()
  4. <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>
  5. @zasadnyy Keep compatibility Select minimum supported platform version. After detailed

    market research Update maximum supported version. Continuously
  6. @zasadnyy Solving integration time problems Easy way to get SDK

    version Unique log tag Debug SDK configuration Actionable errors
  7. @zasadnyy Solving end-user side problems void trackError(GetSocialException exception) { ...

    AnalyticsTrackManager.trackAnalyticsEvent( AnalyticsEventDetails.Name.SDK_ERROR, eventProperties); }
  8. @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() { ... }
  9. @zasadnyy API can be you biggest asset of liability -

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