vibes-case-study-2vibes-case-study-2

Building an SDK for push notifications people actually want to use

Building an SDK comes with a certain amount of responsibility as a programmer. A software development kit is a tool developers use to integrate with a system or framework. Because of that, everyone on our team has experience with incomplete, inaccurate or otherwise frustrating SDKs.

Vibes gave us a chance to make something better. As a mobile marketing SaaS provider, Vibes’ job is to make it as easy as possible for customers to use its platform. The team came to Table XI with that in mind, knowing they needed an SDK design and build done quick — and one that would leave people happy.

“Table XI has a greater quality of communication, code and consistency delivering what’s expected than other vendors I’ve worked with.

I’d work with Table XI again in a heartbeat. They’re my go-to vendor, and I’d happily refer them to friends and colleagues.”

Ken Kunz, VP of Technology for Vibes

The goal: Create an SDK to get Vibes clients sending push notifications

We had worked with Vibes once before, updating their Ruby on Rails software, so they knew we could get in, do the work and hand it off to their team on time and on budget. They tasked us with creating an SDK for a new feature of their SaaS product — rich mobile push notifications that could deliver content within the notification. We're very familiar with push messaging, having leveraged it for all sorts of different things for our clients. The trick was learning the Vibes platform and how to build the right SDK for them and their customers.

Mobile development
Project management
SDK best practices

The results: Building an SDK we would want to use

Not only did we end up building an Android SDK and an iOS SDK, we also created a React Native app that could test both, making sure everything worked as cleanly and directly as possible. The app was so well-built, in fact, that Vibes ended up using it as a code example of how the SDK should work in a real app.

Need to arm your team with better resources?

[unex_ce_button id="content_duucl8ha0" button_text_color="#ffffff" button_font="bold" button_font_size="16px" button_width="auto" button_alignment="center" button_text_spacing="2px" button_bg_color="#54b847" button_padding="15px 25px 15px 25px" button_border_width="0px" button_border_color="transparent" button_border_radius="6px" button_text_hover_color="#ffffff" button_text_spacing_hover="2px" button_bg_hover_color="#3a3a3a" button_border_hover_color="#000000" button_link="/contact/" button_link_type="url" button_link_target="_self" has_container="1" in_column=""]CONTACT US[/ce_button]

How we did it

Because we had worked with Vibes before, we skipped our formal discovery processes and went straight into their codebase, really digging into how their current system worked. Right away, we were able to bring up important questions without clear answers. One question about what constitutes a user was good for 30 minutes of debate — can one user have multiple devices, can two users share a device? It might sound like a minor detail, but when you’re creating an SDK for an external audience, there can’t be ambiguity.

“There was mutual trust. Our team members enjoyed working with Table XI, and I got the sense it was mutual. There’s a very positive relationship there.”

Ken Kunz, VP of Technology for Vibes

Once we knew every detail of their system, we were able to start documenting it. Our SDK development process went through each step of enabling, creating and sending rich mobile push notifications. We ran into some backward compatibility problems almost immediately, something we knew would happen, just not to what extent. Both iOS and Android treated push notifications differently on earlier versions, and we had to find out exactly how to work around that so the SDK would create something that works on any device.

“Table XI didn’t blow smoke to win the deal, then take twice as long to get it done. There was no arguing about scope creep or anything. They had a good, solid understanding of what it was going to take, and they could deliver within that estimate.”

Ken Kunz, VP of Technology for Vibes

The only way to make sure push notifications were working, though, was to build an app that could get them. We did that, and got twice the testing power, by building one cross-platform React Native app that could run both the iOS and Android SDKs. We also wrote a React Native dependency — essentially a Javascript wrapper that talks to the native code — something that could be released to Vibes’ customers who are building their own React Native apps. The app itself also proved helpful to Vibes users. Aside from testing their SDKs, it was also clean enough to serve as a code example, so they could see what a finished app with push notifications should look like.

On this project, we really had one job — as quickly as possible, put the latest best practices for building an SDK into action. We were able to do that, and manage a smooth handoff to Vibes’ in-house mobile developers. But we were also able to do a little bit more, finding edge cases that stretched their assumptions and sparked conversations.

We were also able to build a relationship that let us share ideas freely. While we were creating the SDK, Vibes was working on the next iteration of rich push notifications, giving us a symbiotic opportunity to inform the current and future state of the product. By the end we had a good give and take that delivered benefits well beyond a straightforward assignment to build an SDK.

“At every level, we had good communication and collaboration.”

Ken Kunz, VP of Technology for Vibes

Have a project in mind but not sure where to get started?
It all starts with a simple conversation.

[unex_ce_button id="content_amm50v91z" button_text_color="#ffffff" button_font="bold" button_font_size="16px" button_width="auto" button_alignment="center" button_text_spacing="2px" button_bg_color="#54b847" button_padding="15px 25px 15px 25px" button_border_width="0px" button_border_color="transparent" button_border_radius="6px" button_text_hover_color="#ffffff" button_text_spacing_hover="2px" button_bg_hover_color="#3a3a3a" button_border_hover_color="#000000" button_link="/contact/" button_link_type="url" button_link_target="_self" has_container="1" in_column=""]LET’S WORK TOGETHER[/ce_button]