<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<sect1 id="zend.mobile.push.introduction">
    <title>Zend_Mobile_Push Introduction</title>

    <para>
        Zend_Mobile_Push provides the ability for sending push notifications to
        the vendor specific notification servers.  Currently this list includes
        APNS (iTouch/iPad/iPhone), GCM (Google Android) and MPNS (Windows Phone). 
    </para>

    <para>
        Since many of the underlying implementations vary; please see each
        specific notification class for usage details.  Outlined below are
        details on the common functionality that exists between the
        implementations.
    </para>

    <sect2 id="zend.mobile.push.common-functionality">
        <title>Common Functionality</title>

        <para>
            While each individual push notification adapter contains specific
            functionality; there are commonalities that have been attempted to
            make implementation of the adapters easier.
        </para>

        <table id="zend.mobile.push.common-functionality.adapters">
            <title>Adapters</title>
            <tgroup cols="2" align="left" colsep="1" rowsep="1">
                <thead>
                    <row>
                        <entry>Method</entry>
                        <entry>Description</entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry>close</entry>
                        <entry>Allows you to close an already open connection;
                            if no connection is open will simply default the
                            state.</entry>
                    </row>
                    <row>
                        <entry>connect</entry>
                        <entry>Generally only utilized for APNS; however,
                            assists in maintaining the connection state.</entry>
                    </row>
                    <row>
                        <entry>isConnected</entry>
                        <entry>Allows you to see if you are already connected.</entry>
                    </row>
                    <row>
                        <entry>send</entry>
                        <entry>Allows you to pass in a message to send.  This
                            will send the message to the corresponding system.
                            Note that the send method for APNS will lazily connect
                            if you are not already connected.</entry>
                    </row>
                    <row>
                        <entry>setOptions</entry>
                        <entry>Allows you to set options in bulk for the
                            adapters.</entry>
                    </row>
                </tbody>
            </tgroup>
        </table>

        <para>
            Each individual message varies in implementation; again like
            adapters there are some commonalities that have been addressed to
            ensure consistency between messages.
        </para>


        <table id="zend.mobile.push.common-functionality.messages">
            <title>Messages</title>
            <tgroup cols="2" align="left" colsep="1" rowsep="1">
                <thead>
                    <row>
                        <entry>Method</entry>
                        <entry>Description</entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry>(set|get)Token</entry>
                        <entry>Allows you to set or get the token or device id /
                        unique id that is for any specific device.  For APNS
                        this is the device ID, for GCM it is the registration
                        id and for MPNS it equates to the push url.</entry>
                    </row>
                    <row>
                        <entry>(set|get)Id</entry>
                        <entry>Sets the distict message id that you would give a
                        message.</entry>
                    </row>
                    <row>
                        <entry>setOptions</entry>
                        <entry>Allows you to set a messages options in bulk.</entry>
                    </row>
                    <row>
                        <entry>validate</entry>
                        <entry>Does a <emphasis>very</emphasis> simple test on
                            the message to ensure that it can be sent through
                            the adapter.</entry>
                    </row>
                </tbody>
            </tgroup>
        </table>
    </sect2>
</sect1>
