Push to Me: Mobile Push Notifications (Zend Framework)

6,319
-1

Published on

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

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,319
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
115
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Push to Me: Mobile Push Notifications (Zend Framework)

  1. 1. ThatConference August 14th 2012 Push to Me!Mobile Push Notifications By Mike Willbanks Sr. Web Architect Manager Barnes and Noble
  2. 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. 3. Agenda • Overview of Push Notifications • Android Push Notifications (C2DM) • Apple Push Notifications (APNS) • Microsoft Push Notifications • BlackBerry Push Notifications • Questions3
  4. 4. OverviewWhat are they?What is the benefit?High level; how do these things work?
  5. 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. 6. In Pictures…6
  7. 7. Benefits of Push NotificationsBattery LifeDelivery
  8. 8. One word… Battery Life8
  9. 9. Impact of Polling9
  10. 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. 11. Can We Deliver?11
  12. 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. 13. How These Things WorkThe 10,000 foot view.
  14. 14. 10,000 Foot View of GCM Registration Request Registration ID Push Messages Send Messages Store ID14
  15. 15. 10,000 Foot View of APNS15
  16. 16. 10,000 Foot View of Windows Push16
  17. 17. 10,000 Foot View of BlackBerry17
  18. 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. 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. 20. Walking Through AndroidUnderstanding GCMAnatomy of a MessagePushing MessagesDisplaying Items on the Client
  21. 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. 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. 23. Anatomy of the Mobile App Google Your Application Cloud Your Web Service Messaging Register Registration ID Save Registration ID23
  24. 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. 25. Example Manifest25
  26. 26. Handling the Registration (or Unregistering)26
  27. 27. Example Intent Service27
  28. 28. Renders something like…28
  29. 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. 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. 31. Using Zend_Mobile_Push_Gcm31
  32. 32. Apple Push NotificationsA brief walk-through on implementing notifications on theiPhone.
  33. 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. 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. 35. Anatomy of the Application35
  36. 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. 37. Example of Handling Registration37
  38. 38. Example of Handling Remote Notification38
  39. 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. 40. How the Server Works40
  41. 41. Using Zend_Mobile_Push_Apns41
  42. 42. Using Zend_Mobile_Push_Apns Feedback42
  43. 43. Microsoft Push NotificationsWindows Mobile has really usable push notifications!
  44. 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. 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. 46. Anatomy of MPNS46
  47. 47. Registering for Push47
  48. 48. Implementing the Callbacks for Notifications48
  49. 49. Using Zend_Mobile_Push_Mpns Raw Messages49
  50. 50. Using Zend_Mobile_Push_Mpns Toast Messages50
  51. 51. Using Zend_Mobile_Push_Mpns Tile Messages51
  52. 52. BlackBerry Push NotificationsBlackberry push notifications are not currently supported…But we’ll talk about them anyway.
  53. 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. 54. Anatomy of BB Push54
  55. 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-1.1.0.16-sources.jar   Completely uncertain on how to make it all work…55
  56. 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. 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. 58. Moving on…The future, resources and the end!
  59. 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. 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. 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

×