WTF is a mobile SDK?
When you're building a mobile app you want to prioritise your hard work on the things that give your users the unique value of your product. You want to be adding, improving, and fixing those features.
There are lots of third party tools and services you might decide to use so that you're not building everything from scratch. They might work in the background of your app, or have an interface that your user can interact with. You might want to use something like:
- Google Analytics so that you don't have to invest time in building a tool for monitoring usage.
- YouTube so that you don't have to build a tool for hosting and playing video.
- Intercom so you don't have to build a sophisticated support tool.
This is where mobile SDKs come in.
A mobile SDK is produced by people working on products like these to make it easy for you to bring their features into your own mobile app. In no time at all you can have working features in your app with little worry. Your users get a great experience, you likely get a service that's better than you'd have built yourself with limited time, and you get the freedom to prioritise other valuable things.
Sometimes a mobile SDK is a commercial product, a community project, or something that someone built so solve a problem and shared for us all to benefit from.
Let's dig into the Spotify app for iOS. There are loads of mobile SDKs used in that app to make your experience great. Here's a few:
- In the background, the app uses Fabric Answers, Google Analytics, and Snowplow Tracker for analytics. These give Spotify information about how you use the product.
- They also use Firebase Crashlytics to let their Engineers know when your app experiences a problem or crashes.
- If you've logged into your Spotify account with Facebook or using 1Password, you've used their mobile SDKs to do that.
- If you're using an older version of iOS, those nice blurry backgrounds didn't come for free. Spotify uses FX Blur View to create those background blur effects.
- [Source: MightySignal.]
You can find a mobile SDK for almost any job. Here are some of the most popular commercial ones:
- Google makes loads! AdMob, Analytics, Maps, Auth, Firebase, Drive, Crashlytics, YouTube to name a few.
- Facebook login.
- Square for payments, the Retrofit HTTP client, or Dagger for injecting dependencies.
- Amazon ads.
- Intercom for support, onboarding, and messaging.
- Kakao for messaging, social media, and more.
How do you build one?
It's important to think about who will consume your mobile SDK when it's released, and why they'll use it. Like any software product, start with the problem you're solving for them.
Mobile SDKs are written in the language of the apps they're intended to be used in. The obvious platforms to support are Android and iOS, which means writing them in Java, Kotlin, Objective-C, or Swift.
There are lots of ways to build a mobile app, though, so you could also build for something like Unity3D, Cordova, Ionic, or React Native, to name just a few. For those, you can build your mobile SDK in their native languages, choose one that they're compatible with (eg. C#), or write a wrapper. A wrapper lets the mobile SDK you built for Android or iOS talk to these other technologies.
What's in it for me?
Mobile SDKs are a potential opportunity for many companies for a few reasons.
If you build an app of your own, you can save a lot of time on common tasks by using mobile SDKs. Does your culture encourage deep focus on your customers' problems? Great! Take a shortcut and solve some of your own problems, and maybe even your customers' problems, using the existing tools that are out there.
Are you in B2B2C land? Do your customers have customers? The chances are you're providing a valuable service and it's worth asking yourself, "if my customers could use our product easily in their own mobile apps, could that be an opportunity to grow my business or cater to unaddressed needs?". At Intercom, many of our most successful (and loyal!) customers, those who are really squeezing every bit of value from our products, are using our mobile SDKs.
Have you solved interesting or common problems in an elegant way? Take a leaf out of Square's book and share them with the community as a supported mobile SDK. You might stand to build a great name for yourself and grow brand recognition. That's especially good if you have a growing Engineering team. People will be interested in working for you if they've used your software first hand before.