/** * Send message. * * @throws Tiqr_Message_Exception_AuthFailure * @throws Tiqr_Message_Exception_SendFailure */ public function send() { $service = self::_getService($this->getOptions()); $data = $this->getCustomProperties(); $data['text'] = $this->getText(); $message = new Zend_Mobile_Push_Message_Gcm(); $message->addToken($this->getAddress()); $message->setId($this->getId()); // TODO: GCM equivalent needed? $message->setData($data); try { $response = $service->send($message); } catch (Zend_Htpp_Client_Exception $e) { throw new Tiqr_Message_Exception_SendFailure("HTTP client error", true, $e); } catch (Zend_Mobile_Push_Exception_ServerUnavailable $e) { throw new Tiqr_Message_Exception_SendFailure("Server unavailable", true, $e); } catch (Zend_Mobile_Push_Exception_InvalidAuthToken $e) { throw new Tiqr_Message_Exception_AuthFailure("Invalid token", $e); } catch (Zend_Mobile_Push_Exception_InvalidPayload $e) { throw new Tiqr_Message_Exception_SendFailure("Payload too large", $e); } catch (Zend_Mobile_Push_Exception $e) { throw new Tiqr_Message_Exception_SendFailure("General send error", false, $e); } // handle errors, ignoring registration_id's foreach ($response->getResults() as $k => $v) { if (isset($v['error'])) { throw new Tiqr_Message_Exception_SendFailure("error in GCM response: " . $v['error'], true); } } }
public function testTokens() { $msg = new Zend_Mobile_Push_Message_Gcm(); $msg->setToken('foo'); $this->assertEquals(array('foo'), $msg->getToken()); $msg->setToken(array('foo', 'bar')); $this->assertEquals(array('foo', 'bar'), $msg->getToken()); $msg->setToken('bar'); $msg->addToken('foo'); $this->assertEquals(array('bar', 'foo'), $msg->getToken()); $msg->clearToken(); $this->assertEquals(array(), $msg->getToken()); }
<?php require_once 'Zend/Mobile/Push/Gcm.php'; require_once 'Zend/Mobile/Push/Message/Gcm.php'; $message = new Zend_Mobile_Push_Message_Gcm(); $message->addToken('ABCDEF0123456789'); $message->setData(array('foo' => 'bar', 'bar' => 'foo')); $gcm = new Zend_Mobile_Push_Gcm(); $gcm->setApiKey('YOUR_API_KEY'); try { $response = $gcm->send($message); } catch (Zend_Mobile_Push_Exception $e) { // exceptions require action or implementation of exponential backoff. die($e->getMessage()); } // handle all errors and registration_id's foreach ($response->getResults() as $k => $v) { if (isset($v['registration_id'])) { printf("%s has a new registration id of: %s\r\n", $k, $v['registration_id']); } if (isset($v['error'])) { printf("%s had an error of: %s\r\n", $k, $v['error']); } if (isset($v['message_id'])) { printf("%s was successfully sent the message, message id is: %s", $k, $v['message_id']); } }