SlideShare a Scribd company logo
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 Containers
Robert 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 Bytes
Zimbra
 
Android push-applications-android
Android push-applications-androidAndroid push-applications-android
Android push-applications-android
wadise
 
Running IBM MQ in the Cloud
Running IBM MQ in the CloudRunning IBM MQ in the Cloud
Running IBM MQ in the Cloud
Robert 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 2019
Robert 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 - Showcase
Zimbra
 
IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017
Robert Parker
 
Fault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mqFault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mq
David Ware
 
Zimbra versus exchange 2010 presentation
Zimbra versus exchange 2010 presentationZimbra versus exchange 2010 presentation
Zimbra versus exchange 2010 presentation
solarisyourep
 
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
Leif 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 & container
Vikas 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 Availability
Jamie Squibb
 
Multi-cloud deployment with IBM MQ
Multi-cloud deployment with IBM MQMulti-cloud deployment with IBM MQ
Multi-cloud deployment with IBM MQ
Matt Roberts
 
IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018IBM MQ in Containers - Think 2018
IBM MQ in Containers - Think 2018
Robert Parker
 
What's new in IBM MQ
What's new in IBM MQWhat's new in IBM MQ
What's new in IBM MQ
Robert 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 System
matthew1001
 
IBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprintIBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprint
Matt 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 sessions
Bluegrass 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

WebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossibleWebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossible
Yoan-Alexander Grigorov
 
Jak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikaciJak vytvořit pozoruhodnou web aplikaci
Jak vytvořit pozoruhodnou web aplikaci
jan 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 Initiative
Elizabeth Nesius
 
第八週
第八週第八週
第八週
fudy9015
 
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週-2
fudy9015
 
Dec 27 Sermon
Dec 27 SermonDec 27 Sermon
Dec 27 Sermon
Geo 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 Cloud
sarahnovotny
 
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
Francesco Baruffi
 
Jan 4 Sermon
Jan 4 SermonJan 4 Sermon
Jan 4 Sermon
Geo Acts
 
Portfolio of Mariya Pantyukhina
Portfolio of Mariya PantyukhinaPortfolio of Mariya Pantyukhina
Portfolio of Mariya Pantyukhina
Mariya 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 Bluemix
Jake 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 Bluemix
Paula Peña (She, Her, Hers)
 
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
Dev_Events
 
Get over the Cloud with Bluemix
Get over the Cloud with BluemixGet over the Cloud with Bluemix
Get over the Cloud with Bluemix
Codemotion
 
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
wangbo626
 
Cloud Native Applications Maturity Model
Cloud Native Applications Maturity ModelCloud Native Applications Maturity Model
Cloud Native Applications Maturity Model
Jim 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 Computing
Bukhary 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 Ikhwan
OpenNebula Project
 
Webinar : Microservices and Containerization
Webinar : Microservices and ContainerizationWebinar : Microservices and Containerization
Webinar : Microservices and Containerization
Newt Global Consulting LLC
 
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
Angel 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.pdf
Hammam 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 Story
InnoTech
 
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
PINGXIONG3
 
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
ArcBlock
 
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
Amazon Web Services
 
Connecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the EnterpriseConnecting IBM MessageSight to the Enterprise
Connecting IBM MessageSight to the Enterprise
Andrew Schofield
 
Inter connect2015 ame-3495
Inter connect2015 ame-3495Inter connect2015 ame-3495
Inter connect2015 ame-3495
Phil 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 XPages
Cognizant
 
Introduction to Bluemix and Watson
Introduction to Bluemix and WatsonIntroduction to Bluemix and Watson
Introduction to Bluemix and Watson
Jake 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 queue
Mike Willbanks
 
ZF2: Writing Service Components
ZF2: Writing Service ComponentsZF2: Writing Service Components
ZF2: Writing Service Components
Mike Willbanks
 
Writing Services with ZF2
Writing Services with ZF2Writing Services with ZF2
Writing Services with ZF2
Mike 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 2012
Mike 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 2012
Mike 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 Framework
Mike 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 2011
Mike 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 Queues
Mike Willbanks
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database Deployments
Mike Willbanks
 
LiquiBase
LiquiBaseLiquiBase
LiquiBase
Mike 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

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 

Recently uploaded (20)

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 

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