to the use r’s de vi ce by a ce ntra li se d se rve r. DEFI NI TIO N • They don’t have to have a payload • Text, sound, and badge • All notifications are interactive notifications 6
/ iOS / Windows Something • Silent / With Payload: Text, Sound, or Badge (or a selection of these) • Scheduled by time / Scheduled by location (geo-fenced) • With Custom actions / Without Custom actions • Annoying / Useful NOTIFICATIO N TYP ES 9
to be sent by a server • The Game notifications that drive you nuts are most often Local notifications • The same rules / content restrictions apply to both Local & Remote notifications NOTIFICATIO N TYP ES 10 LOCAL / REMOTE
• IE supports Pinned Sites (think Live tiles for your website) • Notify.js also offers a nice abstraction for the Notifications API NOTIFICATIO N TYP ES 11 BROWSER / NATI VE SERVER P USH ED NOTI FICATIONS MAY APPLY TO YOUR WEBSITE, T OO!
Mobile Device • Mac • Watch NOTIFICATIO N TYP ES 12 ANDROID / I OS / WI NDOW S SOM ETHI NG I’M SURE THER E’S SU PPORT FOR BLACKBERRY, TOO • Windows Phone / Windows 10 • Mobile device • PC • Band • BlackBerry • LOL, just trolling you
The User must opt-in • Can badge the App icon. (I’m OCD about those damn badges) NOTIFICATIO N TYP ES 13 SILENT / W ITH PAYLOAD DON’T UNDER ESTIMATE THE QUIE T ONES
point in time (including “now”) 2. Geofenced notifications • Location Services hybrid new in iOS 8 • When the user enters a monitored region, the app can schedule a Local notification to fire “now” NOTIFICATIO N TYP ES 14 SCHEDULED BY TI ME / SCHE DULE D BY LOCATIO N (GEO -F ENCE D) OKAY, I’M C HEATIN G
App does not need to start after an interaction • You may create actions that do not require the device to be unlocked! • Custom actions can be marked as “destructive”. Cannot be styled, though. NOTIFICATIO N TYP ES 16 WI TH CUSTOM ACTI ONS / WIT HOUT CUST OM ACTIO NS FINA LLY!
/ iOS / Windows Something • Silent / With Payload: Text, Sound, or Badge (or a selection of these) • Scheduled by time / Scheduled by location (geo-fenced) • With Custom actions / Without Custom actions • Annoying / Useful NO TI FICATION TY P ES - RECAP 19
a condition is satisfied (event, time, trigger, etc) • Query the user’s state (do they have a Do Not Disturb set? What is the time in their current Time Zone) YOU WA NT SOME. WH AT SHOULD YOU DO? 23 REGISTER THE USER • Do it as late as possible & guide the user • Consider supporting just certain types of notifications (e.g. Direct Messages)
THE NOTIF ICATI ON PART 1 • Is the app running? Should you even disturb the user? • Don’t overwhelm the user! • Be respectful YOU WA NT SOME. WH AT SHOULD YOU DO? 24 REGISTER THE USER • Do it as late as possible & guide the user • Consider supporting just certain types of notifications (e.g. Direct Messages) • When a condition is satisfied (event, time, trigger, etc) • Query the user’s state (do they have a Do Not Disturb set? What is the time in their current Time Zone)
THE NOTIF ICATI ON PART 1 YOU WA NT SOME. WH AT SHOULD YOU DO? 25 REGISTER THE USER • Do it as late as possible & guide the user • Consider supporting just certain types of notifications (e.g. Direct Messages) • Is the app running? Should you even disturb the user? • Don’t overwhelm the user! • Be respectful • When a condition is satisfied (event, time, trigger, etc) • Query the user’s state (do they have a Do Not Disturb set? What is the time in their current Time Zone)
NT SOME. HOW SHOULD YOU DO I T? • Parse or Urban Airship make it ridiculously easy to get started ($ cost) • Relying on a 3rd part may cause grievances that are outside of your control • If you’re serious about it, then move to Option 2. 27
THIRD PART Y YOU WA NT SOME. HOW SHOULD YOU DO I T? • Parse or Urban Airship make it ridiculously easy to get started ($ cost) • Relying on a 3rd part may cause grievances that are outside of your control • If you’re serious about it, then move to Option 2. • Build a Façade on top of your API • Backend code used to be hard to write • Tip: Make sure you implement the Feedback Queue 28
USE A THIRD PART Y YOU WA NT SOME. HOW SHOULD YOU DO I T? • Parse or Urban Airship make it ridiculously easy to get started ($ cost) • Relying on a 3rd part may cause grievances that are outside of your control • If you’re serious about it, then move to Option 2. • LOL • I wish I knew how to blush. This would be a good time to do it 29 AS K ME. IT’LL BE MAGI CAL • Build a Façade on top of your API • Backend code used to be hard to write • Tip: Make sure you implement the Feedback Queue
TION 1 USE A THIRD PART Y YOU WA NT SOME. HOW SHOULD YOU DO I T? 30 AS K ME. IT’LL BE MAGI CAL • Parse or Urban Airship make it ridiculously easy to get started ($ cost) • Relying on a 3rd part may cause grievances that are outside of your control • If you’re serious about it, then move to Option 2. • LOL • I wish I knew how to blush. This would be a good time to do it • Build a Façade on top of your API • Backend code used to be hard to write • Tip: Make sure you implement the Feedback Queue
8. 256 bytes for iOS 7 and older • Delivery of notifications is a “best effort”, not guaranteed. It is not intended to deliver data to your app, only to notify the user that there is new data available. • Limited number of custom actions • Limited “styling” options • Watch Glances and Custom Long-look notifications require a Watch extension • No confirmation that the Notification was displayed to the user 32
“Opt In” rather than “Opt Out” 2. Allow user to specify the types of messages they wish to receive. Support DND. Think Time Zone! 3. High volume of Notifications? Consider providing a “Snooze” custom action! 4. Only send relevant messages. This is NOT a direct marketing channel 5. Don't send confidential or sensitive data through push notifications 6. Consider promoting custom actions that do not require the app to start up 7. Use clear language and keep the message short 8. Choose the lowest frequency of notifications that still delivers a great user experience 9. Be aware of context. Is the user in your app right now? 10.Consider aggregating multiple messages into a more generic “group” 34