SlideShare a Scribd company logo
1 of 60
Download to read offline
MNPHP January 5, 2012




ZF: Push Notifications
         By Mike Willbanks
    Software Engineering Manager
            CaringBridge
About Mike…


    • Software Engineering Manager at CaringBridge
    • Open Source Contributor


    • Where you can find me:
      Twitter: mwillbanks

      G+: Mike Willbanks

      IRC (freenode): lubs

      Blog: http://blog.digitalstruct.com




2
Agenda


    • Overview of Push Notifications
    • Overview of Zend_Mobile [_Push]
      Not currently implemented in ZF 1.x; maybe ZF 1.12.

    • 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
       Hopefully will make it into the ZF 1.12 release planned within the
        next month or two.
     • Handles sending push notifications to 3 systems
       APNS, C2DM and MPNS

     • Library is located in my GitHub account
       https://github.com/mwillbanks/Zend_Mobile


18
Setting up the Library


     • Git clone the package somewhere you would like it to live.
     • Adjust your include_path (likely set in index.php)
     • You’re ready to rock!
     • Hopefully; in the future you won’t have to do anything 




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
Are these even going to be needed in another year?
I keep thinking about adding them in; but I am completely
unsure if they work…
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
       Since I do not touch blackberry; or have the desire, I would ensure
        the library works for people that want it; just help me test it!




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:
       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


     • Be aware… this code is highly alpha – never been tested.




     • If you do use BlackBerry push messages; please connect
       with me so that I can include this in the Zend_Mobile_Push
       component.




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


     • ZF 2
       If / when this library makes it into ZF 1.x; I will be working on it
        for 2.x. My first focus is ensuring it’s successful addition to ZF 1.x.
        I have some code for the 2.x version but some minor refactoring is
        due to fit the new model.
     • BlackBerry
       Who knows where they will end up. All I know is that developing
        for it seems painful and the documentation is certainly not what I
        would like to see.
       There is a large need for a quality implementation but at the same
        point developers are not highly interested in their platform.



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

        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 after the meetup.
 Slideshare: http://www.slideshare.net/mwillbanks

 Twitter: mwillbanks

 G+: Mike Willbanks

 IRC (freenode): lubs

 Blog: http://blog.digitalstruct.com

More Related Content

What's hot

MQ Guide France - IBM MQ and Containers
MQ Guide France - IBM MQ and ContainersMQ Guide France - IBM MQ and Containers
MQ Guide France - IBM MQ and ContainersRobert Parker
 
IBM MQ and Kafka, what is the difference?
IBM MQ and Kafka, what is the difference?IBM MQ and Kafka, what is the difference?
IBM MQ and Kafka, what is the difference?David Ware
 
Zimbra APxJ Partner Summit 2017 - Zimbra Bytes
Zimbra APxJ Partner Summit 2017 - Zimbra BytesZimbra APxJ Partner Summit 2017 - Zimbra Bytes
Zimbra APxJ Partner Summit 2017 - Zimbra BytesZimbra
 
Android push-applications-android
Android push-applications-androidAndroid push-applications-android
Android push-applications-androidwadise
 
Running IBM MQ in the Cloud
Running IBM MQ in the CloudRunning IBM MQ in the Cloud
Running IBM MQ in the CloudRobert Parker
 
M14: MQ security deep dive ITC 2019
M14: MQ security deep dive ITC 2019M14: MQ security deep dive ITC 2019
M14: MQ security deep dive ITC 2019Robert Parker
 
Com day how to bring windows azure portal to your datacenter
Com day   how to bring windows azure portal to your datacenterCom day   how to bring windows azure portal to your datacenter
Com day how to bring windows azure portal to your datacenterChristopher Keyaert
 
Zimbra APxJ Partner Summit 2017 - Showcase
Zimbra APxJ Partner Summit 2017 - ShowcaseZimbra APxJ Partner Summit 2017 - Showcase
Zimbra APxJ Partner Summit 2017 - ShowcaseZimbra
 
IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017Robert Parker
 
Fault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mqFault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mqDavid Ware
 
Zimbra versus exchange 2010 presentation
Zimbra versus exchange 2010 presentationZimbra versus exchange 2010 presentation
Zimbra versus exchange 2010 presentationsolarisyourep
 
Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016
Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016
Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016Leif Davidsen
 
Telco Cloud - 04. introduction to hypervisor , docker & container
Telco Cloud - 04. introduction to hypervisor , docker & containerTelco Cloud - 04. introduction to hypervisor , docker & container
Telco Cloud - 04. introduction to hypervisor , docker & containerVikas Shokeen
 
IBM Think 2018: IBM MQ High Availability
IBM Think 2018: IBM MQ High AvailabilityIBM Think 2018: IBM MQ High Availability
IBM Think 2018: IBM MQ High AvailabilityJamie Squibb
 
Multi-cloud deployment with IBM MQ
Multi-cloud deployment with IBM MQMulti-cloud deployment with IBM MQ
Multi-cloud deployment with IBM MQMatt Roberts
 
IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018Robert Parker
 
What's new in IBM MQ
What's new in IBM MQWhat's new in IBM MQ
What's new in IBM MQRobert Parker
 
Building an Active-Active IBM MQ System
Building an Active-Active IBM MQ SystemBuilding an Active-Active IBM MQ System
Building an Active-Active IBM MQ Systemmatthew1001
 
IBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprintIBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprintMatt Roberts
 
The Best of Microsoft Tech Days 2013, following the Cape Town sessions
The Best of Microsoft Tech Days 2013, following the Cape Town sessionsThe Best of Microsoft Tech Days 2013, following the Cape Town sessions
The Best of Microsoft Tech Days 2013, following the Cape Town sessionsBluegrass Digital
 

What's hot (20)

MQ Guide France - IBM MQ and Containers
MQ Guide France - IBM MQ and ContainersMQ Guide France - IBM MQ and Containers
MQ Guide France - IBM MQ and Containers
 
IBM MQ and Kafka, what is the difference?
IBM MQ and Kafka, what is the difference?IBM MQ and Kafka, what is the difference?
IBM MQ and Kafka, what is the difference?
 
Zimbra APxJ Partner Summit 2017 - Zimbra Bytes
Zimbra APxJ Partner Summit 2017 - Zimbra BytesZimbra APxJ Partner Summit 2017 - Zimbra Bytes
Zimbra APxJ Partner Summit 2017 - Zimbra Bytes
 
Android push-applications-android
Android push-applications-androidAndroid push-applications-android
Android push-applications-android
 
Running IBM MQ in the Cloud
Running IBM MQ in the CloudRunning IBM MQ in the Cloud
Running IBM MQ in the Cloud
 
M14: MQ security deep dive ITC 2019
M14: MQ security deep dive ITC 2019M14: MQ security deep dive ITC 2019
M14: MQ security deep dive ITC 2019
 
Com day how to bring windows azure portal to your datacenter
Com day   how to bring windows azure portal to your datacenterCom day   how to bring windows azure portal to your datacenter
Com day how to bring windows azure portal to your datacenter
 
Zimbra APxJ Partner Summit 2017 - Showcase
Zimbra APxJ Partner Summit 2017 - ShowcaseZimbra APxJ Partner Summit 2017 - Showcase
Zimbra APxJ Partner Summit 2017 - Showcase
 
IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017
 
Fault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mqFault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mq
 
Zimbra versus exchange 2010 presentation
Zimbra versus exchange 2010 presentationZimbra versus exchange 2010 presentation
Zimbra versus exchange 2010 presentation
 
Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016
Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016
Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016
 
Telco Cloud - 04. introduction to hypervisor , docker & container
Telco Cloud - 04. introduction to hypervisor , docker & containerTelco Cloud - 04. introduction to hypervisor , docker & container
Telco Cloud - 04. introduction to hypervisor , docker & container
 
IBM Think 2018: IBM MQ High Availability
IBM Think 2018: IBM MQ High AvailabilityIBM Think 2018: IBM MQ High Availability
IBM Think 2018: IBM MQ High Availability
 
Multi-cloud deployment with IBM MQ
Multi-cloud deployment with IBM MQMulti-cloud deployment with IBM MQ
Multi-cloud deployment with IBM MQ
 
IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018
 
What's new in IBM MQ
What's new in IBM MQWhat's new in IBM MQ
What's new in IBM MQ
 
Building an Active-Active IBM MQ System
Building an Active-Active IBM MQ SystemBuilding an Active-Active IBM MQ System
Building an Active-Active IBM MQ System
 
IBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprintIBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprint
 
The Best of Microsoft Tech Days 2013, following the Cape Town sessions
The Best of Microsoft Tech Days 2013, following the Cape Town sessionsThe Best of Microsoft Tech Days 2013, following the Cape Town sessions
The Best of Microsoft Tech Days 2013, following the Cape Town sessions
 

Viewers also liked

Jak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikaciJak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikacijan korbel
 
Soc. Unit I, Packet 2
Soc. Unit I, Packet 2Soc. Unit I, Packet 2
Soc. Unit I, Packet 2NHSDAnderson
 
Innova day motorsporttech_eng_b
Innova day motorsporttech_eng_bInnova day motorsporttech_eng_b
Innova day motorsporttech_eng_bFrancesco Baruffi
 
第四、五週
第四、五週第四、五週
第四、五週fudy9015
 
2 Thessalonians 2
2 Thessalonians 22 Thessalonians 2
2 Thessalonians 2Geo Acts
 
How to start? The Product
How to start? The Product How to start? The Product
How to start? The Product Ido Green
 
Europa Del Settecento
Europa Del SettecentoEuropa Del Settecento
Europa Del Settecentomapaa
 
Soft Launch an Institutional Eportfolio Initiative
Soft Launch an Institutional Eportfolio InitiativeSoft Launch an Institutional Eportfolio Initiative
Soft Launch an Institutional Eportfolio InitiativeElizabeth Nesius
 
2013 accenture-consumer-electronics-products-and-services-usage-report
2013 accenture-consumer-electronics-products-and-services-usage-report2013 accenture-consumer-electronics-products-and-services-usage-report
2013 accenture-consumer-electronics-products-and-services-usage-reportFrançois Avril
 
Downtown Arena Renderings
Downtown Arena RenderingsDowntown Arena Renderings
Downtown Arena Renderingswhitneyk7
 
第12週-2
第12週-2第12週-2
第12週-2fudy9015
 
Dec 27 Sermon
Dec 27 SermonDec 27 Sermon
Dec 27 SermonGeo Acts
 
Lessons Learned and Best Practices for Game Development in the Cloud
Lessons Learned and Best Practices for Game Development in the CloudLessons Learned and Best Practices for Game Development in the Cloud
Lessons Learned and Best Practices for Game Development in the Cloudsarahnovotny
 
Presentazione del Tecnopolo di Modena presso Unione Terre di Castelli
Presentazione del Tecnopolo di Modena presso Unione Terre di CastelliPresentazione del Tecnopolo di Modena presso Unione Terre di Castelli
Presentazione del Tecnopolo di Modena presso Unione Terre di CastelliFrancesco Baruffi
 
Jan 4 Sermon
Jan 4 SermonJan 4 Sermon
Jan 4 SermonGeo Acts
 
Portfolio of Mariya Pantyukhina
Portfolio of Mariya PantyukhinaPortfolio of Mariya Pantyukhina
Portfolio of Mariya PantyukhinaMariya Pantyukhina
 

Viewers also liked (20)

WebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossibleWebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossible
 
Jak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikaciJak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikaci
 
Soc. Unit I, Packet 2
Soc. Unit I, Packet 2Soc. Unit I, Packet 2
Soc. Unit I, Packet 2
 
Innova day motorsporttech_eng_b
Innova day motorsporttech_eng_bInnova day motorsporttech_eng_b
Innova day motorsporttech_eng_b
 
第四、五週
第四、五週第四、五週
第四、五週
 
2 Thessalonians 2
2 Thessalonians 22 Thessalonians 2
2 Thessalonians 2
 
How to start? The Product
How to start? The Product How to start? The Product
How to start? The Product
 
Europa Del Settecento
Europa Del SettecentoEuropa Del Settecento
Europa Del Settecento
 
The concept of disruptive innovation
The concept of  disruptive innovationThe concept of  disruptive innovation
The concept of disruptive innovation
 
Soft Launch an Institutional Eportfolio Initiative
Soft Launch an Institutional Eportfolio InitiativeSoft Launch an Institutional Eportfolio Initiative
Soft Launch an Institutional Eportfolio Initiative
 
第八週
第八週第八週
第八週
 
2013 accenture-consumer-electronics-products-and-services-usage-report
2013 accenture-consumer-electronics-products-and-services-usage-report2013 accenture-consumer-electronics-products-and-services-usage-report
2013 accenture-consumer-electronics-products-and-services-usage-report
 
geek_lifestyle
geek_lifestylegeek_lifestyle
geek_lifestyle
 
Downtown Arena Renderings
Downtown Arena RenderingsDowntown Arena Renderings
Downtown Arena Renderings
 
第12週-2
第12週-2第12週-2
第12週-2
 
Dec 27 Sermon
Dec 27 SermonDec 27 Sermon
Dec 27 Sermon
 
Lessons Learned and Best Practices for Game Development in the Cloud
Lessons Learned and Best Practices for Game Development in the CloudLessons Learned and Best Practices for Game Development in the Cloud
Lessons Learned and Best Practices for Game Development in the Cloud
 
Presentazione del Tecnopolo di Modena presso Unione Terre di Castelli
Presentazione del Tecnopolo di Modena presso Unione Terre di CastelliPresentazione del Tecnopolo di Modena presso Unione Terre di Castelli
Presentazione del Tecnopolo di Modena presso Unione Terre di Castelli
 
Jan 4 Sermon
Jan 4 SermonJan 4 Sermon
Jan 4 Sermon
 
Portfolio of Mariya Pantyukhina
Portfolio of Mariya PantyukhinaPortfolio of Mariya Pantyukhina
Portfolio of Mariya Pantyukhina
 

Similar to Zend Framework Push Notifications

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
 
Get over the Cloud with Bluemix
Get over the Cloud with BluemixGet over the Cloud with Bluemix
Get over the Cloud with BluemixCodemotion
 
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
 
Cloud Native Applications Maturity Model
Cloud Native Applications Maturity ModelCloud Native Applications Maturity Model
Cloud Native Applications Maturity ModelJim Bugwadia
 
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
 
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
 
VPCs, Metrics Framework, Back pressure : MuleSoft Virtual Muleys Meetups
VPCs, Metrics Framework, Back pressure  : MuleSoft Virtual Muleys MeetupsVPCs, Metrics Framework, Back pressure  : MuleSoft Virtual Muleys Meetups
VPCs, Metrics Framework, Back pressure : MuleSoft Virtual Muleys MeetupsAngel Alberici
 
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
 
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
 
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
 
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
 
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
 
Connecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the EnterpriseConnecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the EnterpriseAndrew Schofield
 
Inter connect2015 ame-3495
Inter connect2015 ame-3495Inter connect2015 ame-3495
Inter connect2015 ame-3495Phil Coxhead
 
Lotus Notes Mobile Application Development Using XPages
Lotus Notes Mobile Application Development Using XPagesLotus Notes Mobile Application Development Using XPages
Lotus Notes Mobile Application Development Using XPagesCognizant
 
Introduction to Bluemix and Watson
Introduction to Bluemix and WatsonIntroduction to Bluemix and Watson
Introduction to Bluemix and WatsonJake Peyser
 

Similar to Zend Framework Push Notifications (20)

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
 
Get over the Cloud with Bluemix
Get over the Cloud with BluemixGet over the Cloud with Bluemix
Get over the Cloud with 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
 
Cloud Native Applications Maturity Model
Cloud Native Applications Maturity ModelCloud Native Applications Maturity Model
Cloud Native Applications Maturity Model
 
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
 
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
 
Webinar : Microservices and Containerization
Webinar : Microservices and ContainerizationWebinar : Microservices and Containerization
Webinar : Microservices and Containerization
 
VPCs, Metrics Framework, Back pressure : MuleSoft Virtual Muleys Meetups
VPCs, Metrics Framework, Back pressure  : MuleSoft Virtual Muleys MeetupsVPCs, Metrics Framework, Back pressure  : MuleSoft Virtual Muleys Meetups
VPCs, Metrics Framework, Back pressure : MuleSoft Virtual Muleys Meetups
 
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
 
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
 
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
 
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
 
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
 
Connecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the EnterpriseConnecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the Enterprise
 
Inter connect2015 ame-3495
Inter connect2015 ame-3495Inter connect2015 ame-3495
Inter connect2015 ame-3495
 
DA8_presentation
DA8_presentationDA8_presentation
DA8_presentation
 
Lotus Notes Mobile Application Development Using XPages
Lotus Notes Mobile Application Development Using XPagesLotus Notes Mobile Application Development Using XPages
Lotus Notes Mobile Application Development Using XPages
 
Introduction to Bluemix and Watson
Introduction to Bluemix and WatsonIntroduction to Bluemix and Watson
Introduction to Bluemix and Watson
 

More from 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
 
The Art of Message Queues
The Art of Message QueuesThe Art of Message Queues
The Art of Message QueuesMike Willbanks
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database DeploymentsMike Willbanks
 

More from Mike Willbanks (18)

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
 
The Art of Message Queues
The Art of Message QueuesThe Art of Message Queues
The Art of Message Queues
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database Deployments
 
LiquiBase
LiquiBaseLiquiBase
LiquiBase
 

Recently uploaded

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
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
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 
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
 

Recently uploaded (20)

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
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
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
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
 
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)
 

Zend Framework Push Notifications

  • 1. MNPHP January 5, 2012 ZF: Push Notifications By Mike Willbanks Software Engineering Manager CaringBridge
  • 2. About Mike… • Software Engineering Manager at CaringBridge • Open Source Contributor • Where you can find me:  Twitter: mwillbanks  G+: Mike Willbanks  IRC (freenode): lubs  Blog: http://blog.digitalstruct.com 2
  • 3. Agenda • Overview of Push Notifications • Overview of Zend_Mobile [_Push]  Not currently implemented in ZF 1.x; maybe ZF 1.12. • 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  Hopefully will make it into the ZF 1.12 release planned within the next month or two. • Handles sending push notifications to 3 systems  APNS, C2DM and MPNS • Library is located in my GitHub account  https://github.com/mwillbanks/Zend_Mobile 18
  • 19. Setting up the Library • Git clone the package somewhere you would like it to live. • Adjust your include_path (likely set in index.php) • You’re ready to rock! • Hopefully; in the future you won’t have to do anything  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 Are these even going to be needed in another year? I keep thinking about adding them in; but I am completely unsure if they work…
  • 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  Since I do not touch blackberry; or have the desire, I would ensure the library works for people that want it; just help me test it! 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:  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 • Be aware… this code is highly alpha – never been tested. • If you do use BlackBerry push messages; please connect with me so that I can include this in the Zend_Mobile_Push component. 56
  • 57. Moving on… The future, resources and the end!
  • 58. Next steps • ZF 2  If / when this library makes it into ZF 1.x; I will be working on it for 2.x. My first focus is ensuring it’s successful addition to ZF 1.x. I have some code for the 2.x version but some minor refactoring is due to fit the new model. • BlackBerry  Who knows where they will end up. All I know is that developing for it seems painful and the documentation is certainly not what I would like to see.  There is a large need for a quality implementation but at the same point developers are not highly interested in their platform. 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  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 after the meetup. Slideshare: http://www.slideshare.net/mwillbanks Twitter: mwillbanks G+: Mike Willbanks IRC (freenode): lubs Blog: http://blog.digitalstruct.com