Upgrading to Android Marshmallow: S’more reasons to listen to your users

Updating your app to target the latest version of Android can be tricky – there will always be some new challenges to solve. But when you’re called out by an actual Android architect on Google Plus for a problem with your app, you know that you need to act fast…

Android Marshmallow. © Google
Android Marshmallow. © Google

Being Called Out

After our Marshmallow release, our Product Manager Lars Vedo saw a post on Google Plus about our app. In the post, Phil Nickinson from AndroidCentral.com mentioned how, on Marshmallow, he couldn’t share an image to Instagram through Hootsuite without first giving permission in the Instagram app. Phil’s Google Plus page has 37000 followers so it didn’t take long to get our attention. The post also got the attention of Adam Powell, an Android architect at Google. He responded to the above post saying “This means Hootsuite does sharing data wrong.” … Ouch.

Shortly after that post, Lars talked to the Android development team and responded to the post saying that we were going to update how we shared images. With the help of the rest of the team, I did just that: we tested our  solution, it worked, and it was in our next release (accompanied by a 👍 from Adam Powell). It was a great feeling to be able to listen effectively to our customers, fixing the problem quickly, and then engaging with them.

Even though at the time of Phil’s post, Marshmallow was out to under 1% of Android devices, we were notified of a bug early and fixed it quickly. Additionally, despite being called out by an Android architect, we were able to to fix the problem, keeping open lines of communication with our early adopter customers and with the developers of the Android platform.

Preparing for Launch Day

One of the projects that I tackled during my Android co-op term was upgrading our application to use the latest features of Android Marshmallow, including the ability for customers to control app permissions individually. We knew that few of our customers used newer Nexus phones (the only devices  to get the Marshmallow Update on launch day), but we tried our best to have a Marshmallow-ready version of the Hootsuite app out as close to launch day as possible. We rose to meet this challenge, and had an update out to those customers when the first OTA updates started rolling out.

Permissions

One of the bigger changes introduced in Marshmallow is what is often called “Granular Permissions”. This gives customers the ability to grant and revoke application permissions after the application has been installed. In previous Android builds, whatever permissions needed for your application would be  requested at installation time. If your app takes pictures, the customer would have to allow your app to access the camera or the app won’t install. For the end user, there was little to no transparency as to how those permissions were being used in the app.

In Marshmallow, applications only get a small number of permissions upon installation, and can and can request additional permissions  from the customer as they use features of the app. The first time you try to take a picture in the app, a dialog will pop up and ask the customer if they wish to grant the relevant permission to the application. More transparency for the customer, yes – but a lot more work for the development team.

Now, instead of simply not installing the app, it is incumbent on the developer to control access to portions of their application. As an example, with our new Twitter search feature, customers can search Twitter with their location to get results relevant to that location. For older devices, location permission would have been granted upon installation, which no information as to how it was used. On  Marshmallow, however, location service permission isn’t required until the end user initiates a location search.

But what if the customer doesn’t want to give the location permission? Do we just lock them out of that portion of the application? No – we do our best to work with the customer. In this case, we do all location based searches worldwide, rather than a  specific place. Of course, this example only works for location searches – it doesn’t always work that way. If you want to share a photo to Instagram through Hootsuite but you don’t want to grant the app permission to use your camera, then you’re limited to only sharing pictures you’ve already taken. It’s these conditions that we had to design and develop for, to grant our customers using Marshmallow a seamless experience.

Conclusion

Keeping an Android application up to date is a challenging task, given the myriad devices that operate in the Android ecosystem. Developing for the bleeding edge of Android may seem like it is not worthwhile, but the early adopters are often the ones with connections to Google and have  many online followers. These are the people that form and share opinions on your app first, so always keep them in mind when updating your app. By being responsive to these customers, reacting to their feedback, and engaging with the early adopters, you’ll end up with a much stronger product in the end.

Resources

Thanks

Many thanks to Paul Cowles, Simon Tse, Ben Hergert, Lars Vedo, and Wesley Alcock for their suggestions and editing help. Thanks to the whole Android team for being welcoming and providing mentorship during my co-op term.

About the Author

Neil PowerNeil Power is a co-op student from Memorial University of Newfoundland, working on the Android Development team at Hootsuite. He’s happy to be back at Hootsuite for a second time and happy to be in Vancouver for his final co-op term. Follow him on Twitter @neilpower.