TigerZF
🌐Español

50.4. Zend_Mobile_Push_Mpns

Zend_Mobile_Push_Mpns proporciona la capacidad de enviar notificaciones push a Windows Phone. MPNS permite el envío de 3 tipos distintos de notificaciones, cuyo comportamiento común se encuentra en la clase base Zend_Mobile_Push_Message_Mpns. Seguida de clases específicas para notificaciones Raw, Toast y Tile.

50.4.1. Envío de mensajes

[Note] Nota

Antes de enviar mensajes, debe implementar las prácticas descritas en Receiving Push Notifications for Windows Phone.

Al implementar MPNS, dispone de varios componentes que utilizará. Zend_Mobile_Push_Mpns, que contiene los componentes de servidor, y Zend_Mobile_Push_Message_Mpns_Raw, que le permite enviar notificaciones raw, Zend_Mobile_Push_Message_Mpns_Toast, que le permite enviar notificaciones toast, y Zend_Mobile_Push_Message_Mpns_Tile, que le permite enviar notificaciones tile. Cada mensaje enviado debe realizar una petición HTTP, así que téngalo en cuenta al enviar en lotes grandes.

La implementación real del código es bastante mínima; sin embargo, deben tenerse en cuenta consideraciones para el manejo de errores.

$mpns = new Zend_Mobile_Push_Mpns();
$messages = array();

// raw notification
$message = new Zend_Mobile_Push_Message_Mpns_Raw();
$message->setToken('http://sn1.notify.live.net/throttledthirdparty/01.00/THETOKEN');
$message->setMessage('<notification><foo id="bar" /></notification>');
$messages[] = $message;

// toast message
$message = new Zend_Mobile_Push_Message_Mpns_Toast();
$message->setToken('http://sn1.notify.live.net/throttledthirdparty/01.00/THETOKEN');
$message->setTitle('Foo');
$message->setMessage('Bar');
$messages[] = $message;

// tile message
$message = new Zend_Mobile_Push_Mpns_Tile();
$message->setToken('http://sn1.notify.live.net/throttledthirdparty/01.00/THETOKEN');
$message->setBackgroundImage('foo.bar');
$message->setCount(1);
$message->setTitle('Bar Foo');
$messages[] = $message;

foreach ($messages as $m) {
    try {
        $mpns->send($m);
    } catch (Zend_Mobile_Push_Exception_InvalidToken $e) {
        echo 'Remove token: ' . $m->getToken() . PHP_EOL;
    } catch (Zend_Mobile_Push_Exception $e) {
        echo 'Error occurred, token: ' . $m->getToken() . ' - ' . $e->getMessage() . PHP_EOL;
    }
}

Tabla 50.5. Excepciones y técnicas de solución

Excepción Significado Solución
Zend_Mobile_Push_Exception Este tipo de excepciones son de naturaleza más genérica y se lanzan desde MPNS o internamente al validar la entrada Lea el mensaje y determine los pasos de solución.
Zend_Mobile_Push_Exception_DeviceQuotaExceeded Ha enviado demasiados mensajes a este dispositivo; puede volver a intentarlo más tarde. Vuelva a intentarlo más tarde o implemente Exponential Backoff .
Zend_Mobile_Push_Exception_InvalidPayload Por lo general, el payload no generará una excepción a menos que su tamaño sea demasiado grande o le falte contenido obligatorio. Compruebe que el tamaño del payload esté dentro de los requisitos de MPNS
Zend_Mobile_Push_Exception_InvalidToken Cualquier forma de token no válido se producirá si el dispositivo ya no está suscrito, está inactivo o no es válido. En algunos casos puede intentar reenviar en una hora; esto se indicará en la excepción. De lo contrario, deberá eliminar el token para que no se le vuelva a enviar.
Zend_Mobile_Push_Exception_QuotaExceeded Ha alcanzado el límite de envíos por día. La limitación por día solo se aplica a los servicios web no autenticados; deberá registrar su aplicación para notificaciones.

50.4.2. Mensajes avanzados

MPNS ofrece la posibilidad de enviar mensajes más avanzados; por ejemplo, los ejemplos anteriores muestran la implementación más básica de un mensaje. Zend_Mobile_Push_Message_Mpns_* le permite realizar mensajes mucho más avanzados, tal como se describe a continuación.

50.4.2.1. Mensajes Tile

Los mensajes Tile tienen atributos opcionales adicionales para Windows Phone 7.1+; debe asegurarse de que está enviando a un dispositivo con la versión adecuada, de lo contrario su notificación fallará.

$message = new Zend_Mobile_Push_Message_Mpns_Tile();
$message->setToken('http://sn1.notify.live.net/throttledthirdparty/01.00/THETOKEN'); // REPLACE WITH NOTIFICATION URI FROM MPNS
$message->setBackgroundImage('foo.jpg');
$message->setCount(1);
$message->setTitle('Bar');

// other optional attributes for wp7.1+
$message->setTileId('/Foo.xaml');
$message->setBackBackgroundImage('blue.jpg');
$message->setBackTitle('Bar');
$message->setBackContent('Foo Bar');
    

50.4.2.2. Mensajes Toast

Los mensajes Toast tienen atributos opcionales adicionales para Windows Phone 7.1+; debe asegurarse de que está enviando a un dispositivo con la versión adecuada, de lo contrario su notificación fallará.

$message = new Zend_Mobile_Push_Message_Mpns_Toast();
$message->setToken('http://sn1.notify.live.net/throttledthirdparty/01.00/THETOKEN'); // REPLACE WITH NOTIFICATION URI FROM MPNS
$message->setTitle('Foo');
$message->setMessage('Bar');

// optional attributes for wp7.1+
$message->setParams('?bar=foo'); //optional parameters