SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 

Tendances (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
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
 

Plus de Mike Willbanks

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

Plus de 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
 

Dernier

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Dernier (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

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