Push to Me: Mobile Push Notifications (Zend Framework)
Upcoming SlideShare
Loading in...5

Like this? Share it with your network


Push to Me: Mobile Push Notifications (Zend Framework)



Implementation of Push notifications for the various providers. Google GCM, Apple APNS, Microsoft MPNS and a little detail on Blackberry.

Implementation of Push notifications for the various providers. Google GCM, Apple APNS, Microsoft MPNS and a little detail on Blackberry.



Total Views
Views on SlideShare
Embed Views



6 Embeds 14

http://kimsq.coinband.net 5
https://si0.twimg.com 3
http://www.linkedin.com 2
https://www.linkedin.com 2
https://twimg0-a.akamaihd.net 1
http://kimsq.coin-box.kr 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Push to Me: Mobile Push Notifications (Zend Framework) Presentation Transcript

  • 1. ThatConference August 14th 2012 Push to Me!Mobile Push Notifications By Mike Willbanks Sr. Web Architect Manager Barnes and Noble
  • 2. Housekeeping… • Talk   Slides will be online later! • Me   Sr. Web Architect Manager at Barnes and Noble   Prior MNPHP Organizer   Open Source Contributor (Zend Framework and various others)   Where you can find me: • Twitter: mwillbanks G+: Mike Willbanks • IRC (freenode): mwillbanks Blog: http://blog.digitalstruct.com • GitHub: https://github.com/mwillbanks2
  • 3. Agenda • Overview of Push Notifications • Android Push Notifications (C2DM) • Apple Push Notifications (APNS) • Microsoft Push Notifications • BlackBerry Push Notifications • Questions3
  • 4. OverviewWhat are they?What is the benefit?High level; how do these things work?
  • 5. What Are They • Push Notifications…   Are a message pushed to a central location and delivered to you.   Are (often) the same thing as a pub/sub model.   In the Mobile Space… • These messages often contain other technologies such as alerts, tiles, or raw data.5
  • 6. In Pictures…6
  • 7. Benefits of Push NotificationsBattery LifeDelivery
  • 8. One word… Battery Life8
  • 9. Impact of Polling9
  • 10. Battery Life • Push notification services for mobile are highly efficient; it runs in the device background and enables your application to receive the message. • The other part of this; if you implemented it otherwise you would be polling. This not only wastes precious battery but also wastes their bandwidth.   NOTE: This is not always true; if you are sending data to the phone more often than a poll would do in 15 minutes; you are better off implementing polling.10
  • 11. Can We Deliver?11
  • 12. Delivery • When you poll; things are generally 15+ minutes out to save on battery. In a push notification these happen almost instantly.   In practice have seen 1-3s between sending a push notification to seeing it arrive on the device. • Additionally; push notifications can be sent to the device even if it is offline or turned off. • However, not all messages are guaranteed for delivery   You may hit quotas   Some notification servers only allow a single message to be in queue at 1 time (some group by collapse key), and others remove duplicates.12
  • 13. How These Things WorkThe 10,000 foot view.
  • 14. 10,000 Foot View of GCM Registration Request Registration ID Push Messages Send Messages Store ID14
  • 15. 10,000 Foot View of APNS15
  • 16. 10,000 Foot View of Windows Push16
  • 17. 10,000 Foot View of BlackBerry17
  • 18. Overview of Zend_Mobile_Push • Created Zend_Mobile component   Consistency, Quality, Ease of Use • Requires Zend Framework 1.x   Committed in the ZF trunk; waiting for 1.12 release. • Handles sending push notifications to 3 systems   APNS, C2DM and MPNS • Library is located in my GitHub account & ZF Trunk   https://github.com/mwillbanks/Zend_Mobile   http://framework.zend.com/svn/framework/standard/trunk/ library/Zend/Mobile/18
  • 19. Setting up the Library • Manual Setup (Current Method)   svn checkout from ZF OR through github   Adjust your include_path (likely set in index.php) • ZF 1.12   Once released; no manual setup necessary.19
  • 20. Walking Through AndroidUnderstanding GCMAnatomy of a MessagePushing MessagesDisplaying Items on the Client
  • 21. Understanding GCM • Allows application servers to send their app messages. • Is no guarantee for delivery or the order of messages. • Application does not need to be running to receive messages. • It does not provide any built-in user interface or other handling for message data. • Requires Android 2.2 with Google Play store installed. • It uses an existing connection for Google services   Pre 3.0 devices requires a Google Account to be setup.   4.0.4 or higher does not.21
  • 22. Registering for GCM • Sign in to the Google API’s console page   https://code.google.com/apis/console   Create a Project – keep note of the project #   Select Services   Turn on Google Cloud Messaging   Accept terms of use   Create an API key22
  • 23. Anatomy of the Mobile App Google Your Application Cloud Your Web Service Messaging Register Registration ID Save Registration ID23
  • 24. How the Application Works • Import the GCM libraries   /path/to/sdk-dir/extras/google/gcm-client/dist/gcm.jar • Update AndroidManifest.xml   We need certain permissions for GCM to run. • Create GCMIntentService   Receives the GCM messages from the GCMBroadcastReceiver24
  • 25. Example Manifest25
  • 26. Handling the Registration (or Unregistering)26
  • 27. Example Intent Service27
  • 28. Renders something like…28
  • 29. Implementing a Server • Some limitations   No Quota!   4KB payload maximum   You must implement incremental back off. • Old Limitations of C2DM   200K messages per day by default; use them wisely however you may request more.   1K message payload maximum.29
  • 30. How the Server Works Google Your Web Your Application Cloud Application Messaging Message sent to Message with Application Registration IDs Queues t ill Requires ust Project # Device m sent or be online expires and API token30
  • 31. Using Zend_Mobile_Push_Gcm31
  • 32. Apple Push NotificationsA brief walk-through on implementing notifications on theiPhone.
  • 33. Understanding APNS •  The maximum size allowed for a notification payload is 256 bytes. • Allows application servers to send their app messages. • No guarantees about delivery or the order of messages. • Application does not need to be running to receive messages. • Message adheres to strict JSON but is abstracted away for us in how we will be using it today. • Messages should be sent in batches. • A feedback service must be listened to.33
  • 34. Preparing to Implement Apple Push Notifications • You must create a SSL certificate and key from the provisioning portal • After this is completed the provisioning profile will need to be utilized for the application. • Lastly, you will need to install the certificate and key on the server.   In this case; you will be making a pem certificate.34
  • 35. Anatomy of the Application35
  • 36. How the Application Works • Registration   The application calls the registerForRemoteNotificationTypes: method.   The delegate implements the application:didRegisterForRemoteNotificationsWithDeviceToken: method to receive the device token.   It passes the device token to its provider as a non-object, binary value. • Notification   By default this just works based on the payload; for syncing you would implement this on the launch.36
  • 37. Example of Handling Registration37
  • 38. Example of Handling Remote Notification38
  • 39. Implementing the Server • Some Limitations   Don’t send too many through at a time; meaning around 100K J • Every once in a while use a usleep   Max payload is 256 bytes39
  • 40. How the Server Works40
  • 41. Using Zend_Mobile_Push_Apns41
  • 42. Using Zend_Mobile_Push_Apns Feedback42
  • 43. Microsoft Push NotificationsWindows Mobile has really usable push notifications!
  • 44. Understanding MPNS • Allows application servers to send their app messages. • No guarantee about delivery or the order of messages. • 3 types of messages: Tile, Toast or Raw • Limitations:   One push channel per app, 30 push channels per device, additional adherence in order to send messages   3K Payload, 1K Header • http://msdn.microsoft.com/en-us/library/ff402537.aspx44
  • 45. Preparing to Implement MPNS • Upload a TLS certificate to Windows Marketplace   The Key-Usage value of the TLS certificate must be set to include client authentication.   The Root Certificate Authority (CA) of the certificate must be one of the CAs listed at: SSL Root Certificates for Windows Phone.   Stays authenticated for 4 months.   Set Service Name to the Common Name (CN) found in the certificates Subject value.   Install the TLS certificate on your web service and enable HTTP client authentication.45
  • 46. Anatomy of MPNS46
  • 47. Registering for Push47
  • 48. Implementing the Callbacks for Notifications48
  • 49. Using Zend_Mobile_Push_Mpns Raw Messages49
  • 50. Using Zend_Mobile_Push_Mpns Toast Messages50
  • 51. Using Zend_Mobile_Push_Mpns Tile Messages51
  • 52. BlackBerry Push NotificationsBlackberry push notifications are not currently supported…But we’ll talk about them anyway.
  • 53. Understanding BlackBerry Push • It allows third-party application servers to send lightweight messages to their BlackBerry applications. • Allows a whopping 8K or the payload • Uses WAP PAP 2.2 as the protocol • Mileage may vary…53
  • 54. Anatomy of BB Push54
  • 55. Application Code • They have a “Sample” but it is deep within their Push SDK. Many of which are pre-compiled.   Documentation is hard to follow and the sample isn’t exactly straight forward: • Install the SDK then go to BPSS/pushsdk-low-level/sample-push- enabled-app/ and unzip sample-push-enabled-app-   Completely uncertain on how to make it all work…55
  • 56. Preparing to Implement • You need to register with BlackBerry and have all of the application details ready to go:   https://www.blackberry.com/profile/?eventId=8121 • Download the PHP library:   NOTE: I am not certain if any of these actually work…   Updated to be OO; non-tested and a bit sloppy: https://github.com/mwillbanks/BlackBerryPush   Original source: http://bit.ly/nfbHXp56
  • 57. Implementing BB Push w/ PHP • Again, never tested nor do I know if it works. • If you do use BlackBerry push messages; please connect with me   I would like to allow us to get these into the component.57
  • 58. Moving on…The future, resources and the end!
  • 59. Next steps • ZF 2   Working on Service Modules that will implement underlying functionality soon. • Hopefully by October? • BlackBerry   There is a need for a quality implementation in PHP but RIM’s documentation and how they work with developers makes this increasingly difficult. • Register, Forums and bad documentation… all for?59
  • 60. Resources •  Main Sites   Apple Push Notifications: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/ Conceptual/RemoteNotificationsPG/Introduction/Introduction.html   Google C2DM (Android): http://code.google.com/android/c2dm/   Microsoft Push Notifications: http://msdn.microsoft.com/en-us/library/ff402558(v=vs.92).aspx   BlackBerry Push Notifications: http://us.blackberry.com/developers/platform/pushapi.jsp •  Push Clients:   Zend_Mobile: •  https://github.com/mwillbanks/Zend_Mobile •  http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Mobile/   BlackBerry: https://github.com/mwillbanks/BlackBerryPush •  Might be broken but at least better than what I found anywhere else J60
  • 61. Questions?These slides will be posted to SlideShare & SpeakerDeck.  Slideshare: http://www.slideshare.net/mwillbanks  SpeakerDeck: http://speakerdeck.com/u/mwillbanks  Twitter: mwillbanks  G+: Mike Willbanks  IRC (freenode): mwillbanks  Blog: http://blog.digitalstruct.com  GitHub: https://github.com/mwillbanks