SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
MinneBar April 7, 2012

       Leveraging
    Zend Framework
Sending Push Notifications
          By Mike Willbanks
     Software Engineering Manager
             CaringBridge
Housekeeping…


    • Talk
      Slides will be online later!

    • Me
      Software Engineering Manager at CaringBridge

      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/mwillbanks


2
Agenda


    • Overview of Push Notifications
    • Overview of Zend_Mobile [_Push]
    • Android Push Notifications (C2DM)
    • Apple Push Notifications (APNS)
    • Microsoft Push Notifications
    • BlackBerry Push Notifications
    • Questions
      Although you can bring them up at anytime!




3
Overview
What are they?
What is the benefit?
High level; how do these things work?
What Are They


    • Push Notifications…
      Are a message pushed to a central location and delivered to you.

      Are (often) the same thing at a pub/sub model.

      In the Mobile Space…
        • These messages often contain other technologies such as alerts, tiles,
          or raw data.




5
In Pictures…




6
Benefits of Push Notifications
The benefits of push notifications are numerous; the
question is if you have an app and you are running services
to poll; why would you do such a thing!
One word… Battery Life




8
Impact of Polling




9
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
Can We Deliver?




11
Delivery


     • When you poll; things are generally 15+ minutes out to save
       on battery. In a push notification these happen almost
       instantly.
       We’ve generally seen within 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
How These Things Work
The 10,000 foot view.
10,000 Foot View of C2DM




14
10,000 Foot View of APNS




15
10,000 Foot View of Windows Push




16
10,000 Foot View of BlackBerry




17
Overview of Zend_Mobile_Push


     • Created Zend_Mobile component in November because I
       was irritated with the other libraries that currently existed.
     • More fluid way of sending push notifications.
     • 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/libra
        ry/Zend/Mobile/
18
Setting up the Library


     • svn checkout from ZF OR through github
     • Adjust your include_path (likely set in index.php)
     • You’re ready to rock!
     • Once you upgrade to 1.12 after it is released you won’t
       have anything more to do.




19
Walking Through Android
Understanding C2DM
Anatomy of a Message
Pushing Messages
Displaying Items on the Client
Understanding C2DM


     • It allows third-party application servers to send lightweight
       messages to their Android applications.
     • C2DM makes no guarantees about delivery or the order of
       messages.
     • An application on an Android device doesn’t need to be
       running to receive messages.
     • It does not provide any built-in user interface or other
       handling for message data.
     • It requires devices running Android 2.2 or higher that also have
       the Market application installed.
     • It uses an existing connection for Google services (Through the
       Google Market)
21
Registering for C2DM


     • First things first – you must sign up to actually utilize C2DM
       http://code.google.com/android/c2dm/signup.html

       C2DM only works on Android w/ Google Market
         • Basically excludes: Amazon Kindle Fire.




22
Anatomy of the Mobile App




23
How the Application Works


     • We must update the Manifest file to state additional
       permissions.
     • We will then create a broadcast receiver that will handle
       the messages and registration.




24
Example Manifest




25
Handling the Registration (or Unregistering)


     • Registration / Registration Updates and Unregistering.
     • Registration is generally on app start up.




     • Be nice and allow your users to unregister from the push
       notification service 




26
Example Receiver




      More at: http://bit.ly/bxOoMO towards end of article.
27
Implementing a Server


     • Some limitations
       200K messages per day by default; use them wisely however you
        may request more.
       1K message payload maximum.

       You must implement incremental back off.




28
How the Server Works




29
Using Zend_Mobile_Push_C2dm




30
Apple Push Notifications
A brief walk-through on implementing notifications on the
iPhone.
Understanding APNS


     • The maximum size allowed for a notification payload is 256
      bytes.
     • It allows third-party application servers to send lightweight
       messages to their iPhone/iPad applications.
     • Apple makes no guarantees about delivery or the order of
       messages.
     • An application on an iPhone/iPad device doesn’t 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.
32
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.




33
Anatomy of the Application




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


35
Example of Handling Registration




36
Example of Handling Remote Notification




37
Implementing the Server


     • Some Limitations
       Don’t send too many through at a time; meaning around 100K 
         • Every once in a while use a usleep
       Max payload is 256 bytes




38
How the Server Works




39
Using Zend_Mobile_Push_Apns




40
Using Zend_Mobile_Push_Apns Feedback




41
Microsoft Push Notifications
Well, I am not certain if they will find the market share yet
but hey; some people need to build apps for it!
Understanding MPNS


     • It allows third-party application servers to send lightweight
       messages to their Windows Mobile applications.
     • Microsoft makes no guarantees about delivery or the order of
       messages. (See a pattern yet?)
     • 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.aspx


43
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
        certificate's Subject value.
       Install the TLS certificate on your web service and enable HTTP
        client authentication.




44
Anatomy of MPNS




45
Registering for Push




46
Implementing the Callbacks for Notifications




47
Using Zend_Mobile_Push_Mpns Raw Messages




48
Using Zend_Mobile_Push_Mpns Toast Messages




49
Using Zend_Mobile_Push_Mpns Tile Messages




50
BlackBerry Push Notifications
Blackberry push notifications are not currently supported…
But we’ll talk about them anyway.
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…




52
Anatomy of BB Push




53
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…




54
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/nfbHXp




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




56
Moving on…
The future, resources and the end!
Next steps


     • ZF 2
       A new version will eventually come that is more inline with where
        Zend Framework 2 is going. However, there are bigger fish to fry
        at this point.
     • 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?




58
Resources

     • Main Sites
        Apple Push Notifications:
         http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Con
         ceptual/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 


59
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

Contenu connexe

Tendances

No more ARP : Another MiTm Attacks
No more ARP : Another MiTm AttacksNo more ARP : Another MiTm Attacks
No more ARP : Another MiTm AttacksKhajornchol Puwarang
 
SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016David Hablewitz
 
The Sametime Mobile Experience
The Sametime Mobile ExperienceThe Sametime Mobile Experience
The Sametime Mobile ExperienceGabriella Davis
 
IBM Notes Traveler Best Practices
IBM Notes Traveler Best PracticesIBM Notes Traveler Best Practices
IBM Notes Traveler Best Practicesjayeshpar2006
 
A Guide To Sametime 9.0.1 Audio & Video
A Guide To Sametime 9.0.1 Audio & VideoA Guide To Sametime 9.0.1 Audio & Video
A Guide To Sametime 9.0.1 Audio & VideoGabriella Davis
 
Working With Sametime For Mobile Devices
Working With Sametime For Mobile DevicesWorking With Sametime For Mobile Devices
Working With Sametime For Mobile DevicesGabriella Davis
 
IBM Notes Traveler Administration and Log Troubleshooting tips - Part 2
IBM Notes Traveler Administration and Log Troubleshooting tips - Part 2IBM Notes Traveler Administration and Log Troubleshooting tips - Part 2
IBM Notes Traveler Administration and Log Troubleshooting tips - Part 2jayeshpar2006
 
IBM Notes Traveler administration and Log troubleshooting tips
IBM Notes Traveler administration and Log troubleshooting tipsIBM Notes Traveler administration and Log troubleshooting tips
IBM Notes Traveler administration and Log troubleshooting tipsjayeshpar2006
 
Show100: Making IBM Notes Traveler Highly Available
Show100: Making IBM Notes Traveler Highly AvailableShow100: Making IBM Notes Traveler Highly Available
Show100: Making IBM Notes Traveler Highly AvailableMitch Cohen
 
BES On Domino
BES On DominoBES On Domino
BES On DominoLisa Duke
 
Open mic IBM Sametime 9 limited use server
Open mic   IBM Sametime 9 limited use serverOpen mic   IBM Sametime 9 limited use server
Open mic IBM Sametime 9 limited use serverRanjit Rai
 
Taking IBM Sametime Mobile
Taking IBM Sametime MobileTaking IBM Sametime Mobile
Taking IBM Sametime MobileGabriella Davis
 
Upgrading to Sametime 9.0.1
Upgrading to Sametime 9.0.1Upgrading to Sametime 9.0.1
Upgrading to Sametime 9.0.1Gabriella Davis
 
LOT-926 Managing and Maintaining IBM Lotus Notes and Domino 8.5 Environments
LOT-926 Managing and Maintaining IBM Lotus Notes and Domino 8.5 EnvironmentsLOT-926 Managing and Maintaining IBM Lotus Notes and Domino 8.5 Environments
LOT-926 Managing and Maintaining IBM Lotus Notes and Domino 8.5 EnvironmentsMarek Zawadzki
 
Setting Up a Hybrid Domino Environment to Ease your Way to the Cloud
Setting Up a Hybrid Domino Environment to Ease your Way to the CloudSetting Up a Hybrid Domino Environment to Ease your Way to the Cloud
Setting Up a Hybrid Domino Environment to Ease your Way to the CloudGabriella Davis
 
Understanding remote access technologies (Nov 16, 2011) (beginner)
Understanding remote access technologies (Nov 16, 2011) (beginner)Understanding remote access technologies (Nov 16, 2011) (beginner)
Understanding remote access technologies (Nov 16, 2011) (beginner)Henry Van Styn
 

Tendances (16)

No more ARP : Another MiTm Attacks
No more ARP : Another MiTm AttacksNo more ARP : Another MiTm Attacks
No more ARP : Another MiTm Attacks
 
SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016SmartCloud Administration Best Practices MWLUG 2016
SmartCloud Administration Best Practices MWLUG 2016
 
The Sametime Mobile Experience
The Sametime Mobile ExperienceThe Sametime Mobile Experience
The Sametime Mobile Experience
 
IBM Notes Traveler Best Practices
IBM Notes Traveler Best PracticesIBM Notes Traveler Best Practices
IBM Notes Traveler Best Practices
 
A Guide To Sametime 9.0.1 Audio & Video
A Guide To Sametime 9.0.1 Audio & VideoA Guide To Sametime 9.0.1 Audio & Video
A Guide To Sametime 9.0.1 Audio & Video
 
Working With Sametime For Mobile Devices
Working With Sametime For Mobile DevicesWorking With Sametime For Mobile Devices
Working With Sametime For Mobile Devices
 
IBM Notes Traveler Administration and Log Troubleshooting tips - Part 2
IBM Notes Traveler Administration and Log Troubleshooting tips - Part 2IBM Notes Traveler Administration and Log Troubleshooting tips - Part 2
IBM Notes Traveler Administration and Log Troubleshooting tips - Part 2
 
IBM Notes Traveler administration and Log troubleshooting tips
IBM Notes Traveler administration and Log troubleshooting tipsIBM Notes Traveler administration and Log troubleshooting tips
IBM Notes Traveler administration and Log troubleshooting tips
 
Show100: Making IBM Notes Traveler Highly Available
Show100: Making IBM Notes Traveler Highly AvailableShow100: Making IBM Notes Traveler Highly Available
Show100: Making IBM Notes Traveler Highly Available
 
BES On Domino
BES On DominoBES On Domino
BES On Domino
 
Open mic IBM Sametime 9 limited use server
Open mic   IBM Sametime 9 limited use serverOpen mic   IBM Sametime 9 limited use server
Open mic IBM Sametime 9 limited use server
 
Taking IBM Sametime Mobile
Taking IBM Sametime MobileTaking IBM Sametime Mobile
Taking IBM Sametime Mobile
 
Upgrading to Sametime 9.0.1
Upgrading to Sametime 9.0.1Upgrading to Sametime 9.0.1
Upgrading to Sametime 9.0.1
 
LOT-926 Managing and Maintaining IBM Lotus Notes and Domino 8.5 Environments
LOT-926 Managing and Maintaining IBM Lotus Notes and Domino 8.5 EnvironmentsLOT-926 Managing and Maintaining IBM Lotus Notes and Domino 8.5 Environments
LOT-926 Managing and Maintaining IBM Lotus Notes and Domino 8.5 Environments
 
Setting Up a Hybrid Domino Environment to Ease your Way to the Cloud
Setting Up a Hybrid Domino Environment to Ease your Way to the CloudSetting Up a Hybrid Domino Environment to Ease your Way to the Cloud
Setting Up a Hybrid Domino Environment to Ease your Way to the Cloud
 
Understanding remote access technologies (Nov 16, 2011) (beginner)
Understanding remote access technologies (Nov 16, 2011) (beginner)Understanding remote access technologies (Nov 16, 2011) (beginner)
Understanding remote access technologies (Nov 16, 2011) (beginner)
 

En vedette

Web并发模型粗浅探讨
Web并发模型粗浅探讨Web并发模型粗浅探讨
Web并发模型粗浅探讨Robbin Fan
 
How is this relevant to me? A Human Centred Approach to Public Engagement
How is this relevant to me? A Human Centred Approach to Public EngagementHow is this relevant to me? A Human Centred Approach to Public Engagement
How is this relevant to me? A Human Centred Approach to Public EngagementFergus Bisset
 
Oracle Exec Summary 7000 Unified Storage
Oracle Exec Summary 7000 Unified StorageOracle Exec Summary 7000 Unified Storage
Oracle Exec Summary 7000 Unified StorageDavid R. Klauser
 
Mariocarretero reseñaconstructivismo
Mariocarretero reseñaconstructivismoMariocarretero reseñaconstructivismo
Mariocarretero reseñaconstructivismoGeovanny Armijos
 
Europa Del Settecento
Europa Del SettecentoEuropa Del Settecento
Europa Del Settecentomapaa
 
Cymphonix Launches iPhone App and New Version of Network Composer Software
Cymphonix Launches iPhone App and New Version of Network Composer SoftwareCymphonix Launches iPhone App and New Version of Network Composer Software
Cymphonix Launches iPhone App and New Version of Network Composer SoftwareJulie Tangen
 
Jak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikaciJak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikacijan korbel
 
Future Success Web 2 Overview
Future Success Web 2 OverviewFuture Success Web 2 Overview
Future Success Web 2 Overviewpapin0
 
Trackless Speed Gate
Trackless  Speed GateTrackless  Speed Gate
Trackless Speed Gatecholder
 
Ruby In Enterprise Development
Ruby In Enterprise DevelopmentRuby In Enterprise Development
Ruby In Enterprise DevelopmentRobbin Fan
 
Dec 06, Sermon Am
Dec 06, Sermon AmDec 06, Sermon Am
Dec 06, Sermon AmGeo Acts
 
Mlj Project Done 2
Mlj Project Done 2Mlj Project Done 2
Mlj Project Done 2guestc3cdd
 
The High School Connection: Bridging the Gap Between High School and College
The High School Connection: Bridging the Gap Between High School and CollegeThe High School Connection: Bridging the Gap Between High School and College
The High School Connection: Bridging the Gap Between High School and CollegeElizabeth Nesius
 
第10-11週
第10-11週第10-11週
第10-11週fudy9015
 
Lecture 3 Perl & FreeBSD administration
Lecture 3 Perl & FreeBSD administrationLecture 3 Perl & FreeBSD administration
Lecture 3 Perl & FreeBSD administrationMohammed Farrag
 
Axiologix Company Presentation Jan 2011
Axiologix Company Presentation Jan 2011Axiologix Company Presentation Jan 2011
Axiologix Company Presentation Jan 2011InboundMarketingPR.com
 

En vedette (20)

Web并发模型粗浅探讨
Web并发模型粗浅探讨Web并发模型粗浅探讨
Web并发模型粗浅探讨
 
How is this relevant to me? A Human Centred Approach to Public Engagement
How is this relevant to me? A Human Centred Approach to Public EngagementHow is this relevant to me? A Human Centred Approach to Public Engagement
How is this relevant to me? A Human Centred Approach to Public Engagement
 
Oracle Exec Summary 7000 Unified Storage
Oracle Exec Summary 7000 Unified StorageOracle Exec Summary 7000 Unified Storage
Oracle Exec Summary 7000 Unified Storage
 
Mariocarretero reseñaconstructivismo
Mariocarretero reseñaconstructivismoMariocarretero reseñaconstructivismo
Mariocarretero reseñaconstructivismo
 
Europa Del Settecento
Europa Del SettecentoEuropa Del Settecento
Europa Del Settecento
 
èDip 4rt eso
èDip 4rt esoèDip 4rt eso
èDip 4rt eso
 
Cymphonix Launches iPhone App and New Version of Network Composer Software
Cymphonix Launches iPhone App and New Version of Network Composer SoftwareCymphonix Launches iPhone App and New Version of Network Composer Software
Cymphonix Launches iPhone App and New Version of Network Composer Software
 
Jak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikaciJak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikaci
 
Future Success Web 2 Overview
Future Success Web 2 OverviewFuture Success Web 2 Overview
Future Success Web 2 Overview
 
Debt Taxes
Debt TaxesDebt Taxes
Debt Taxes
 
Cpmarativesquiz2
Cpmarativesquiz2Cpmarativesquiz2
Cpmarativesquiz2
 
Trackless Speed Gate
Trackless  Speed GateTrackless  Speed Gate
Trackless Speed Gate
 
Ruby In Enterprise Development
Ruby In Enterprise DevelopmentRuby In Enterprise Development
Ruby In Enterprise Development
 
Dec 06, Sermon Am
Dec 06, Sermon AmDec 06, Sermon Am
Dec 06, Sermon Am
 
Directions
DirectionsDirections
Directions
 
Mlj Project Done 2
Mlj Project Done 2Mlj Project Done 2
Mlj Project Done 2
 
The High School Connection: Bridging the Gap Between High School and College
The High School Connection: Bridging the Gap Between High School and CollegeThe High School Connection: Bridging the Gap Between High School and College
The High School Connection: Bridging the Gap Between High School and College
 
第10-11週
第10-11週第10-11週
第10-11週
 
Lecture 3 Perl & FreeBSD administration
Lecture 3 Perl & FreeBSD administrationLecture 3 Perl & FreeBSD administration
Lecture 3 Perl & FreeBSD administration
 
Axiologix Company Presentation Jan 2011
Axiologix Company Presentation Jan 2011Axiologix Company Presentation Jan 2011
Axiologix Company Presentation Jan 2011
 

Similaire à Leveraging Zend Framework for Push Notifications

Mobile Push Notifications
Mobile Push NotificationsMobile Push Notifications
Mobile Push NotificationsMike Willbanks
 
Push to Me: Mobile Push Notifications (Zend Framework)
Push to Me: Mobile Push Notifications (Zend Framework)Push to Me: Mobile Push Notifications (Zend Framework)
Push to Me: Mobile Push Notifications (Zend Framework)Mike Willbanks
 
Getting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixGetting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixJake Peyser
 
Getting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixGetting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixDev_Events
 
AME-1936 : Enterprise Messaging for Next-Generation Core Banking
AME-1936 : Enterprise Messaging for Next-Generation Core BankingAME-1936 : Enterprise Messaging for Next-Generation Core Banking
AME-1936 : Enterprise Messaging for Next-Generation Core Bankingwangbo626
 
Get over the Cloud with Bluemix
Get over the Cloud with BluemixGet over the Cloud with Bluemix
Get over the Cloud with BluemixCodemotion
 
Application Delivery Platform Towards Edge Computing - Bukhary Ikhwan
Application Delivery Platform Towards Edge Computing - Bukhary IkhwanApplication Delivery Platform Towards Edge Computing - Bukhary Ikhwan
Application Delivery Platform Towards Edge Computing - Bukhary IkhwanOpenNebula Project
 
Docker:- Application Delivery Platform Towards Edge Computing
Docker:- Application Delivery Platform Towards Edge ComputingDocker:- Application Delivery Platform Towards Edge Computing
Docker:- Application Delivery Platform Towards Edge ComputingBukhary Ikhwan Ismail
 
ArcBlock Presents 5 Winning Factors to Building a Successful DApp
ArcBlock Presents 5 Winning Factors to Building a Successful DAppArcBlock Presents 5 Winning Factors to Building a Successful DApp
ArcBlock Presents 5 Winning Factors to Building a Successful DAppArcBlock
 
How-to-handle-all-kind-of-notifications.pdf
How-to-handle-all-kind-of-notifications.pdfHow-to-handle-all-kind-of-notifications.pdf
How-to-handle-all-kind-of-notifications.pdfHammam Oktajianto
 
Managing WorkSpaces at Scale | AWS Public Sector Summit 2016
Managing WorkSpaces at Scale | AWS Public Sector Summit 2016Managing WorkSpaces at Scale | AWS Public Sector Summit 2016
Managing WorkSpaces at Scale | AWS Public Sector Summit 2016Amazon Web Services
 
News scavenger a SharePoint and Apps Story
News scavenger  a SharePoint and Apps StoryNews scavenger  a SharePoint and Apps Story
News scavenger a SharePoint and Apps StoryInnoTech
 
The Art of Message Queues
The Art of Message QueuesThe Art of Message Queues
The Art of Message QueuesMike Willbanks
 
Cloud Native Applications Maturity Model
Cloud Native Applications Maturity ModelCloud Native Applications Maturity Model
Cloud Native Applications Maturity ModelJim Bugwadia
 
Do I Need A Service Mesh.pptx
Do I Need A Service Mesh.pptxDo I Need A Service Mesh.pptx
Do I Need A Service Mesh.pptxPINGXIONG3
 
Connecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the EnterpriseConnecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the EnterpriseAndrew Schofield
 

Similaire à Leveraging Zend Framework for Push Notifications (20)

Mobile Push Notifications
Mobile Push NotificationsMobile Push Notifications
Mobile Push Notifications
 
Push to Me: Mobile Push Notifications (Zend Framework)
Push to Me: Mobile Push Notifications (Zend Framework)Push to Me: Mobile Push Notifications (Zend Framework)
Push to Me: Mobile Push Notifications (Zend Framework)
 
Getting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixGetting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on Bluemix
 
Getting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixGetting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on Bluemix
 
Getting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixGetting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on Bluemix
 
AME-1936 : Enterprise Messaging for Next-Generation Core Banking
AME-1936 : Enterprise Messaging for Next-Generation Core BankingAME-1936 : Enterprise Messaging for Next-Generation Core Banking
AME-1936 : Enterprise Messaging for Next-Generation Core Banking
 
Get over the Cloud with Bluemix
Get over the Cloud with BluemixGet over the Cloud with Bluemix
Get over the Cloud with Bluemix
 
Application Delivery Platform Towards Edge Computing - Bukhary Ikhwan
Application Delivery Platform Towards Edge Computing - Bukhary IkhwanApplication Delivery Platform Towards Edge Computing - Bukhary Ikhwan
Application Delivery Platform Towards Edge Computing - Bukhary Ikhwan
 
Docker:- Application Delivery Platform Towards Edge Computing
Docker:- Application Delivery Platform Towards Edge ComputingDocker:- Application Delivery Platform Towards Edge Computing
Docker:- Application Delivery Platform Towards Edge Computing
 
ArcBlock Presents 5 Winning Factors to Building a Successful DApp
ArcBlock Presents 5 Winning Factors to Building a Successful DAppArcBlock Presents 5 Winning Factors to Building a Successful DApp
ArcBlock Presents 5 Winning Factors to Building a Successful DApp
 
How-to-handle-all-kind-of-notifications.pdf
How-to-handle-all-kind-of-notifications.pdfHow-to-handle-all-kind-of-notifications.pdf
How-to-handle-all-kind-of-notifications.pdf
 
Webinar : Microservices and Containerization
Webinar : Microservices and ContainerizationWebinar : Microservices and Containerization
Webinar : Microservices and Containerization
 
Managing WorkSpaces at Scale | AWS Public Sector Summit 2016
Managing WorkSpaces at Scale | AWS Public Sector Summit 2016Managing WorkSpaces at Scale | AWS Public Sector Summit 2016
Managing WorkSpaces at Scale | AWS Public Sector Summit 2016
 
DA8_presentation
DA8_presentationDA8_presentation
DA8_presentation
 
Cloud computing v2final
Cloud computing v2finalCloud computing v2final
Cloud computing v2final
 
News scavenger a SharePoint and Apps Story
News scavenger  a SharePoint and Apps StoryNews scavenger  a SharePoint and Apps Story
News scavenger a SharePoint and Apps Story
 
The Art of Message Queues
The Art of Message QueuesThe Art of Message Queues
The Art of Message Queues
 
Cloud Native Applications Maturity Model
Cloud Native Applications Maturity ModelCloud Native Applications Maturity Model
Cloud Native Applications Maturity Model
 
Do I Need A Service Mesh.pptx
Do I Need A Service Mesh.pptxDo I Need A Service Mesh.pptx
Do I Need A Service Mesh.pptx
 
Connecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the EnterpriseConnecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the Enterprise
 

Plus de Mike Willbanks

2015 ZendCon - Do you queue
2015 ZendCon - Do you queue2015 ZendCon - Do you queue
2015 ZendCon - Do you queueMike Willbanks
 
ZF2: Writing Service Components
ZF2: Writing Service ComponentsZF2: Writing Service Components
ZF2: Writing Service ComponentsMike Willbanks
 
Writing Services with ZF2
Writing Services with ZF2Writing Services with ZF2
Writing Services with ZF2Mike Willbanks
 
Varnish Cache - International PHP Conference Fall 2012
Varnish Cache - International PHP Conference Fall 2012Varnish Cache - International PHP Conference Fall 2012
Varnish Cache - International PHP Conference Fall 2012Mike Willbanks
 
Message Queues : A Primer - International PHP Conference Fall 2012
Message Queues : A Primer - International PHP Conference Fall 2012Message Queues : A Primer - International PHP Conference Fall 2012
Message Queues : A Primer - International PHP Conference Fall 2012Mike Willbanks
 
Gearman - Northeast PHP 2012
Gearman - Northeast PHP 2012Gearman - Northeast PHP 2012
Gearman - Northeast PHP 2012Mike Willbanks
 
Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.Mike Willbanks
 
Gearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleGearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleMike Willbanks
 
Varnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright CrazyVarnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright CrazyMike Willbanks
 
SOA with Zend Framework
SOA with Zend FrameworkSOA with Zend Framework
SOA with Zend FrameworkMike Willbanks
 
MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011Mike Willbanks
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKXMike Willbanks
 
Scalable Architecture 101
Scalable Architecture 101Scalable Architecture 101
Scalable Architecture 101Mike Willbanks
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database DeploymentsMike Willbanks
 

Plus de Mike Willbanks (17)

2015 ZendCon - Do you queue
2015 ZendCon - Do you queue2015 ZendCon - Do you queue
2015 ZendCon - Do you queue
 
ZF2: Writing Service Components
ZF2: Writing Service ComponentsZF2: Writing Service Components
ZF2: Writing Service Components
 
Writing Services with ZF2
Writing Services with ZF2Writing Services with ZF2
Writing Services with ZF2
 
Varnish Cache - International PHP Conference Fall 2012
Varnish Cache - International PHP Conference Fall 2012Varnish Cache - International PHP Conference Fall 2012
Varnish Cache - International PHP Conference Fall 2012
 
Message Queues : A Primer - International PHP Conference Fall 2012
Message Queues : A Primer - International PHP Conference Fall 2012Message Queues : A Primer - International PHP Conference Fall 2012
Message Queues : A Primer - International PHP Conference Fall 2012
 
Gearman - Northeast PHP 2012
Gearman - Northeast PHP 2012Gearman - Northeast PHP 2012
Gearman - Northeast PHP 2012
 
Varnish Cache
Varnish CacheVarnish Cache
Varnish Cache
 
Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.
 
Gearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleGearman: A Job Server made for Scale
Gearman: A Job Server made for Scale
 
Varnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright CrazyVarnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright Crazy
 
SOA with Zend Framework
SOA with Zend FrameworkSOA with Zend Framework
SOA with Zend Framework
 
MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKX
 
Art Of Message Queues
Art Of Message QueuesArt Of Message Queues
Art Of Message Queues
 
Scalable Architecture 101
Scalable Architecture 101Scalable Architecture 101
Scalable Architecture 101
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database Deployments
 
LiquiBase
LiquiBaseLiquiBase
LiquiBase
 

Dernier

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Dernier (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Leveraging Zend Framework for Push Notifications

  • 1. MinneBar April 7, 2012 Leveraging Zend Framework Sending Push Notifications By Mike Willbanks Software Engineering Manager CaringBridge
  • 2. Housekeeping… • Talk  Slides will be online later! • Me  Software Engineering Manager at CaringBridge  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/mwillbanks 2
  • 3. Agenda • Overview of Push Notifications • Overview of Zend_Mobile [_Push] • Android Push Notifications (C2DM) • Apple Push Notifications (APNS) • Microsoft Push Notifications • BlackBerry Push Notifications • Questions  Although you can bring them up at anytime! 3
  • 4. Overview What 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 at a pub/sub model.  In the Mobile Space… • These messages often contain other technologies such as alerts, tiles, or raw data. 5
  • 7. Benefits of Push Notifications The benefits of push notifications are numerous; the question is if you have an app and you are running services to poll; why would you do such a thing!
  • 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
  • 12. Delivery • When you poll; things are generally 15+ minutes out to save on battery. In a push notification these happen almost instantly.  We’ve generally seen within 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 Work The 10,000 foot view.
  • 14. 10,000 Foot View of C2DM 14
  • 15. 10,000 Foot View of APNS 15
  • 16. 10,000 Foot View of Windows Push 16
  • 17. 10,000 Foot View of BlackBerry 17
  • 18. Overview of Zend_Mobile_Push • Created Zend_Mobile component in November because I was irritated with the other libraries that currently existed. • More fluid way of sending push notifications. • 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/libra ry/Zend/Mobile/ 18
  • 19. Setting up the Library • svn checkout from ZF OR through github • Adjust your include_path (likely set in index.php) • You’re ready to rock! • Once you upgrade to 1.12 after it is released you won’t have anything more to do. 19
  • 20. Walking Through Android Understanding C2DM Anatomy of a Message Pushing Messages Displaying Items on the Client
  • 21. Understanding C2DM • It allows third-party application servers to send lightweight messages to their Android applications. • C2DM makes no guarantees about delivery or the order of messages. • An application on an Android device doesn’t need to be running to receive messages. • It does not provide any built-in user interface or other handling for message data. • It requires devices running Android 2.2 or higher that also have the Market application installed. • It uses an existing connection for Google services (Through the Google Market) 21
  • 22. Registering for C2DM • First things first – you must sign up to actually utilize C2DM  http://code.google.com/android/c2dm/signup.html  C2DM only works on Android w/ Google Market • Basically excludes: Amazon Kindle Fire. 22
  • 23. Anatomy of the Mobile App 23
  • 24. How the Application Works • We must update the Manifest file to state additional permissions. • We will then create a broadcast receiver that will handle the messages and registration. 24
  • 26. Handling the Registration (or Unregistering) • Registration / Registration Updates and Unregistering. • Registration is generally on app start up. • Be nice and allow your users to unregister from the push notification service  26
  • 27. Example Receiver More at: http://bit.ly/bxOoMO towards end of article. 27
  • 28. Implementing a Server • Some limitations  200K messages per day by default; use them wisely however you may request more.  1K message payload maximum.  You must implement incremental back off. 28
  • 29. How the Server Works 29
  • 31. Apple Push Notifications A brief walk-through on implementing notifications on the iPhone.
  • 32. Understanding APNS • The maximum size allowed for a notification payload is 256 bytes. • It allows third-party application servers to send lightweight messages to their iPhone/iPad applications. • Apple makes no guarantees about delivery or the order of messages. • An application on an iPhone/iPad device doesn’t 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. 32
  • 33. 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. 33
  • 34. Anatomy of the Application 34
  • 35. 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. 35
  • 36. Example of Handling Registration 36
  • 37. Example of Handling Remote Notification 37
  • 38. Implementing the Server • Some Limitations  Don’t send too many through at a time; meaning around 100K  • Every once in a while use a usleep  Max payload is 256 bytes 38
  • 39. How the Server Works 39
  • 42. Microsoft Push Notifications Well, I am not certain if they will find the market share yet but hey; some people need to build apps for it!
  • 43. Understanding MPNS • It allows third-party application servers to send lightweight messages to their Windows Mobile applications. • Microsoft makes no guarantees about delivery or the order of messages. (See a pattern yet?) • 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.aspx 43
  • 44. 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 certificate's Subject value.  Install the TLS certificate on your web service and enable HTTP client authentication. 44
  • 47. Implementing the Callbacks for Notifications 47
  • 51. BlackBerry Push Notifications Blackberry push notifications are not currently supported… But we’ll talk about them anyway.
  • 52. 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… 52
  • 53. Anatomy of BB Push 53
  • 54. 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… 54
  • 55. 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/nfbHXp 55
  • 56. 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. 56
  • 57. Moving on… The future, resources and the end!
  • 58. Next steps • ZF 2  A new version will eventually come that is more inline with where Zend Framework 2 is going. However, there are bigger fish to fry at this point. • 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? 58
  • 59. Resources • Main Sites  Apple Push Notifications: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Con ceptual/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  59
  • 60. 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