Sunday, May 31, 2015

What's new in GCM 3.0 (Android M)

   Google understands the power of messaging and brought significant changes in their GCM platform.   I will try to write one more article with more usecases on each feature, until then hope this would be helpful.

i) Extending the support beyond Android and Chrome: Yes :) now you can send push messages to iOS platform as well using GCM 3.0. You still need to get the APNS token from Apple and it depends upon Apple to deliver the message, when App is in background. Google have mapped the commonly used Apple payload parameters. Integration of Google's sdks on our iOS app is required for this support.
Whats the major Advantage: 
a) Upstream messaging : Apple doesn't currently support that. Though with help of silent push we can manage delivery receipts, this facility makes job much simpler though. 
b) Topics subscription 
c)  Diagnostics Tools access 

ii)  Topics: 
       This is a wonderful and welcome change. This helps us to create topics,subscribe/unsubscribe users to topic and publish update. Just send the message to created topic alone and all the devices subscribed to that topic would receive it. This is similar to our preference center (Please read this if you have missed it ) and we all appreciate why preference center is important for better UX. 
       Our app might have multiple areas of interest and I might be willing to receive only about a particular topic/area of interest rather than receiving every alert. (for e.g..,  on a shopping App, I might be interested to receive alerts only about Baby products and Deals of the day). Currently we might have been managing this with a Preference center and handling all the database flags around subscriptions. But after this topics change, we don't need to do this heavy lifting and Google itself has now provided tools through this for cleaner way of implementing preference center.
       This is supported for iOS as well by GCM 3.0.

iii) OS level notifications on Chrome:
     Same push notifications, but wherever (Windows, Linux,Mac (not iOS), Android) Chrome is installed.  My understanding based on the demo, is when we send a push notification on a Android device for Chrome webpage, it would come in notifications tray (including lock screen) where other notifications are listed. This is a feature which I have been longing on Android/iOS devices and wish iOS also provides this support in future. This is good thing because currently on lot of articles where they have debated about html vs native apps, they would have called out, push notifications are not possible in html/ webapp, this feature overcomes that and providing the same UX as native app by dropping the message on Notifications tray. 
     I assume this along with Google Now can do lot in future.

iv) Diagnostics Tools for developers:
    An option provided in Playstore console to see the status of message sent. This definitely helps if we know the registration token of the user or message-id (an id GCM returns to us when we send a message).  
    It would be great if Google expands on this idea and provide facilities to App publishers to understand overall acceptance of each push campaigns, as, of now App publishers are unable to attribute the reason for low push opens, easily. Even if its just a console with status percentages for every campaign that would greatly help. This can also be extended by Topics as well. 

v) Device Group Messaging: [This is similar to the "User Notifications" & "UpStream messaging" topic discussed in 2014 I/O]
    This is also a powerful feature, where we can group registration ids together and form a group and send one message to group by which it reaches to all persons in the group. 
    A typical use case would be to group all devices belonging to a user and when user opens the message on a particular device, we can send a upstream message from that device to server and send a message to other devices to dismiss the notification on other devices. This can also be implemented with help of delivery_receipts_requested key in GCM, which automatically provides you the delivery receipts. 

vi) Permissions:
     Permissions is a platform wide change, so the permission will be prompted upon GCM usage. We need to wait and see how this looks. It would be great if the permission message is customizable as we can explain the benefit, they gain by accepting push notification rather than just prompting "App would send notification.." which generally leads to low opt-ins. You might see lot of Apps in iOS displaying a custom alert before displaying the actual OS notification, as iOS is not permitting to change the OS alert copy.  [Ref Permissions 101]
   
vii) Introduction of Instance Id:
           Which they define in three words: Identity for Robots.
 It contains two parts one instance of an App (It is the app which we have installed) and a security token (used to send message to GCM). This can be viewed synonymous to existing registration token of GCM. 
  I am also aligning to think whether we can use this as an identifier for devices, as we don't have one. We were using UDID on iOS which Apple banned using and we don't have a neat way of defining id for Apps which doesn't require a login. More to come on this topic. 

  Important Note: GCM register() has been deprecated, and it is recommended to use InstanceID to perform general GCM registration management.


No comments:

Post a Comment