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.
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.