Back and still a bit jet lagged, I had an amazing time at Google I/O. There were a lot of exciting announcements, but this is my top 3:
1. Design Support Library
For me, this was the biggest one. Over the couple of months I’ve been building a couple of apps, including Bundle for Android and in the process I also implemented a bunch of components that I needed for implementing Material Design in these apps. The Design Support Library provides standard components and implementations that help to implement you Material Design and honestly…we should have gotten these last year.
One of the major components is CoordinatorLayout which allows to add behaviours to views and coordinates interaction between views. Sounds abstract? One example is having a FAB on screen that automatically moves up when a Snackbar is shown, or hides when the view is scrolled up.
2. Google Cloud Messaging
Google Cloud Messaging or GCM for short, has also gotten a big update. One of the very useful features that are added are topics. A client can now subscribe to a topic and GCM messages can be published to specific topics to target only subscribed clients. GCM not only works for Android, but also for Chrome and iOS apps. This allows for a consistent server implementation, which is pretty cool.
There’s now a new kind of registration token as well, which is also a separate API, called Instance Id. Instance ids represent a unique and stable device token for your app. Passing a token to a server let’s you check the validity of the token and returns some useful information, like the platform the token is for (Android, iOS, Chrome) or if the device is rooted for example.
3. Permission model changes
This was of course the big thing for Android: big changes to permissions. No longer will users be prompted for permissions when installing your app. Apps should now request permissions at runtime and users can enable or disable app permissions at any time. From a developer perspective this sounds quite scary, but what needs to be noted is that the permissions have also be simplified. An app does not have to ask for internet permissions anymore for example.
Personally I think this is a good change, but I still think there’s a case to be made for “required” permissions in some way. For example, a camera app can simply not function without permission to the camera, but a user can deny permission this permission if they like. That would effectively render the app useless and in order not to crash, the app should handle that case as well. Now that the developer preview for M is available, this one is on the top of my list to try out.