Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History
Zend_Mobile_Push

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

Zend Framework: Zend_Mobile_Push Component Proposal

Proposed Component Name Zend_Mobile_Push
Developer Notes http://framework.zend.com/wiki/display/ZFDEV/Zend_Mobile_Push
Proposers Mike Willbanks
Zend Liaison TBD
Revision 1.1 - 28 November 2011: Initial Draft. (wiki revision: 4)

Table of Contents

1. Overview

Zend_Mobile_Push is a component for implementing push notifications for the 3 major push notification platforms (Apple (Apns), Google (C2dm), and Microsoft (Mpns). The actual implementation is based on mostly abstraction.

2. References

3. Component Requirements, Constraints, and Acceptance Criteria

  • This component will implement base interfaces along with an abstract class to attempt to bundle common behaviors
  • This component will implement the current specifications for APNS, C2DM and MPNS.
  • This component will throw exceptions that should be caught (InvalidAuth, InvalidToken, etc)
  • This component will not handle the storage of tokens or ID's (no implementation of a persistent storage state).
  • This component will not attempt to handle re-connections or exponential back off.
  • This component will not provide a server component that runs in the background.
  • This component will not interface with a logger.

4. Dependencies on Other Framework Components

Zend_Http_Client - for implementation of sending messages to C2DM and MPNS.
Zend_Filter_Alpha - for filtering out dynamic text to ensure alpha characters.
Zend_Loader - for dynamically loading exception classes based on responses.

5. Theory of Operation

The operation of this component is very simple. It is based simply off of interfaces and abstract classes to implement the server and messages. All common operations have been stated there. The instances of each type of message does not make sense in the context of an abstract factory or a factory at all since each must be implemented in a specific way. Each individual instance must be explicitly stated such as "new Zend_Mobile_Push_C2dm()" including the type of message "new Zend_Mobile_Push_Message_C2dm".

Generally an instance of the client will be created followed by a message that will be passed to the send method of the client. Every attempt was made to standardize some of the handling of each individual item.

6. Milestones / Tasks

  • Milestone 1: Finish proposal and architectural description. [Done]
  • Milestone 2: Working prototype. [Done]
  • Milestone 3: Unit tests exist, work, and are checked into github. [Partially Done]
  • Milestone 4: Refinements [Not Done]
  • Milestone 5: Initial documentation exists. [Not Done]

7. Class Index

  • Zend_Mobile_Exception
  • Zend_Mobile_Push_Exception
  • Zend_Mobile_Push_Exception_MessageTooBig
  • Zend_Mobile_Push_Exception_InvalidRegistration
  • Zend_Mobile_Push_Exception_InvalidToken
  • Zend_Mobile_Push_Exception_DeviceQuotaExceeded
  • Zend_Mobile_Push_Exception_NotRegistered
  • Zend_Mobile_Push_Exception_MissingCollapseKey
  • Zend_Mobile_Push_Exception_InvalidAuthToken
  • Zend_Mobile_Push_Exception_InvalidTopic
  • Zend_Mobile_Push_Exception_ServerUnavailable
  • Zend_Mobile_Push_Exception_MismatchSenderId
  • Zend_Mobile_Push_Exception_QuotaExceeded
  • Zend_Mobile_Push_Exception_MissingRegistration
  • Zend_Mobile_Push_Apns
  • Zend_Mobile_Push_C2dm
  • Zend_Mobile_Push_Mpns
  • Zend_Mobile_Push_Message_Exception
  • Zend_Mobile_Push_Message_Mpns_Tile
  • Zend_Mobile_Push_Message_Mpns_Raw
  • Zend_Mobile_Push_Message_Mpns_Toast
  • Zend_Mobile_Push_Message_Apns
  • Zend_Mobile_Push_Message_C2dm
  • Zend_Mobile_Push_Message_Mpns
  • Zend_Mobile_Push_Message_Interface
  • Zend_Mobile_Push_Message_Abstract
  • Zend_Mobile_Push_Interface
  • Zend_Mobile_Push_Abstract

8. Use Cases

UC-01

Sending an APNS Message

UC-02

Feedback of an APNS Message

UC-03

Sending a C2DM Message

UC-04

Sending a MPNS Raw Message

UC-05

Sending a MPNS Toast Message

UC-06

Sending a MPNS Tile Message

9. Class Skeletons

See: https://github.com/mwillbanks/Zend_Mobile

]]></ac:plain-text-body></ac:macro>

Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.