/** * Handle the GCM response. Remove, update or retry if appropriate. * * @param \HipsterJazzbo\Telegraph\Pushable $pushable * @param \HipsterJazzbo\Telegraph\Message $message * @param \ZendService\Google\Gcm\Response $response */ protected function handleResponse(Pushable $pushable, Message $message, $response) { $results = $response->getResults(); $result = $results[$pushable->getToken()]; if (isset($result['message_id']) && isset($result['registration_id'])) { call_user_func($this->updateCallback, $pushable, $result['registration_id']); } elseif (isset($result['error'])) { switch ($result['error']) { case 'Unavailable': $this->retry($pushable, $message); break; case 'NotRegistered': call_user_func($this->removeCallback, $pushable); break; default: throw new ServiceException('gcm', $result['error']); } } }
/** * Build a \ZendService\Apple\Apns\Message from a \HipsterJazzbo\Telegraph\Message * * @param \HipsterJazzbo\Telegraph\Pushable $pushable * @param \HipsterJazzbo\Telegraph\Message $message * * @return \ZendService\Apple\Apns\Message */ protected function buildServiceMessage(Pushable $pushable, Message $message) { $apnsMessage = new ApnsMessage(); $apnsMessage->setId((string) Uuid::uuid4()); $apnsMessage->setToken($pushable->getToken()); $apnsMessage->setCustom($message->getData()); if (!empty($message->getBody())) { $alert = new Alert(); $alert->setTitle($message->getTitle()); $alert->setBody($message->getBody()); $apnsMessage->setAlert($alert); } if ($message->getBadge()) { $apnsMessage->setBadge($message->getBadge()); } if ($message->isSilent()) { $apnsMessage->setContentAvailable(1); } return $apnsMessage; }