/** * Send message. * * @throws Tiqr_Message_Exception_AuthFailure * @throws Tiqr_Message_Exception_SendFailure * @throws Tiqr_Message_Exception_InvalidDevice * */ public function send() { $service = self::_getService($this->getOptions()); $message = new Zend_Mobile_Push_Message_Apns(); $message->setToken($this->getAddress()); $message->setId($this->getId()); $message->setAlert($this->getText()); $message->setSound('default'); $message->setExpire(30); foreach ($this->getCustomProperties() as $name => $value) { $message->addCustomData($name, $value); } try { $service->send($message); } catch (Zend_Mobile_Push_Exception_ServerUnavailable $e) { throw new Tiqr_Message_Exception_SendFailure("Server unavailable", true, $e); } catch (Zend_Mobile_Push_Exception_InvalidToken $e) { throw new Tiqr_Message_Exception_InvalidDevice("Invalid token", $e); } catch (Zend_Mobile_Push_Exception_InvalidPayload $e) { throw new Tiqr_Message_Exception_SendFailure("Invalid payload", false, $e); } catch (Zend_Mobile_Push_Exception_InvalidTopic $e) { throw new Tiqr_Message_Exception_SendFailure("Invalid topic", false, $e); } catch (Zend_Mobile_Push_Exception $e) { throw new Tiqr_Message_Exception_SendFailure("General send error", false, $e); } $service->close(); }
<?php require_once 'Zend/Mobile/Push/Apns.php'; require_once 'Zend/Mobile/Push/Message/Apns.php'; $message = new Zend_Mobile_Push_Message_Apns(); $message->setAlert('Zend Mobile Push Example'); $message->setBadge(1); $message->setSound('default'); $message->setId(time()); $message->setToken('ABCDEF0123456789'); $apns = new Zend_Mobile_Push_Apns(); $apns->setCertificate('/path/to/provisioning-certificate.pem'); try { $apns->connect(Zend_Mobile_Push_Apns::SERVER_SANDBOX_URI); } catch (Zend_Mobile_Push_Exception_ServerUnavailable $e) { // you can either attempt to reconnect here or try again later exit(1); } catch (Zend_Mobile_Push_Exception $e) { echo 'APNS Connection Error:' . $e->getMessage(); exit(1); } try { $apns->send($message); } catch (Zend_Mobile_Push_Exception_InvalidToken $e) { // you would likely want to remove the token from being sent to again echo $e->getMessage(); } catch (Zend_Mobile_Push_Exception $e) { // all other exceptions only require action to be sent echo $e->getMessage(); } $apns->close();