示例#1
0
 /**
  * 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']);
         }
     }
 }
示例#2
0
 /**
  * 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;
 }