Sunday, June 29, 2014

What is Push Feedback Service and how to implement it effectively

A feedback service would help us identify whether a device is still opted in to receive push notification from our app. This is one of the ways to measure whether our push campaign is successful or not. The feedback service is not instant, that is Apple would not immediately know when user turns off push at device level for a given App. Apple would add that device to its do-not-send push- list [a name for discussion’s sake] only when there is a failure in delivering the push.

Say you send a marketing campaign push and user receives it and for some reason turns-off the push notification permission for our app. When you execute the feedback service, that user’s device wouldn’t be in Apple’s do-not-send-push-list. But when you send your next push and as it fails for that user’s device, then the user’s device would be in Apple’s do-not-send-push list. Note push notifications that expire before being delivered are not considered a failed delivery and don’t impact the feedback service. The feedback service’s list is cleared after you read it.

 Assume there is a marketing push campaign, and we want to measure success. Do we need to send one more user facing push to identify how many users have opted out of push after the campaign?? No, there is a way, which is using silent push (available from ioS 7 and above). Silent push is nothing but setting content-available key as part of payload. When that key is present in payload, iOS would treat that as silent push, which means user would never know a push was sent to their device.

 Typical Silent push payload in iOS:
{
aps = {
"content-available" = 1;
sound = "";
};
}

         So the steps to identify how many users have turned off push notification after a push campaign, would be to send a silent push and execute the feedback service. 

        These steps can be used on a small set of population to measure the engagement, before we send the actual push campaign.

         Now the question would be is there a silent push equivalent in Android. Well, there is Send-to-Sync messages which can be used. These Send-to-Sync messages update app data using push notifications. But I haven’t used it before. The advantage in Android is whenever a push reaches a device, it is not immediately displayed in notification manager, it signals our app and our App can decide whether we can display it or hide it. Leveraging this we can have a key in payload to help our app decide to hide the push and mimic this as a silent push and then ping GCM to check for NotRegistered error message.
         
     Just in, in android latest version, as part of the payload we can specify delivery_receipt_request value to true, on setting that GCM would indicate whether the message is delivered and we can use upstream messaging using XMPP to indicate to our server whether user have read the message. 
    

No comments:

Post a Comment