Example #1
0
 /**
  * Send Message
  *
  * @param  ApnsMessage          $message
  * @return MessageResponse
  */
 public function send(ApnsMessage $message)
 {
     if (!$this->isConnected()) {
         throw new Exception\RuntimeException('You must first open the connection by calling open()');
     }
     $ret = $this->write($message->getPayloadJson());
     if ($ret === false) {
         throw new Exception\RuntimeException('Server is unavailable; please retry later');
     }
     return new MessageResponse($this->read());
 }
Example #2
0
 /**
  * @param ApnsMessage $message
  * @return MessageResponse
  * @throws Exception\RuntimeException
  */
 public function send(ApnsMessage $message)
 {
     if (!$this->isConnected()) {
         $this->open($this->environment, $this->certificate, $this->passPhrase);
     }
     $ret = $this->write($message->getPayloadJson());
     if ($ret === false) {
         throw new Exception\RuntimeException('Server is unavailable; please retry later');
     }
     if ($ret === 0) {
         throw new Exception\RuntimeException('Server is unavailable; broken pipe or closed connection');
     }
     return new MessageResponse($this->read());
 }
Example #3
0
 /**
  * Get zend apns message.
  *
  * @param Device $device
  * @param mixed $message
  * @return ZendMessage
  */
 protected function getZendMessage(Device $device, $message)
 {
     $message = $this->getMessage($message);
     $options = new Options(array_merge($message->getOptions(), $device->getOptions()));
     // apns identifier
     $zendMessage = new ZendMessage();
     $zendMessage->setId(time());
     // apns alert options
     $zendMessage->setAlert(new ZendMessageAlert($message->getText(), $options->getOption('actionLocKey'), $options->getOption('locKey'), $options->getOption('locArgs'), $options->getOption('launchImage')));
     // apns badge number
     $badge = intval($device->getOption('badge')) + intval($message->getOption('badge'));
     $zendMessage->setBadge($badge);
     // others...
     $zendMessage->setToken($device->getToken());
     $zendMessage->setSound($options->getOption('sound', 'bingbong.aiff'));
     $zendMessage->setCustom($options->getOption('custom', []));
     return $zendMessage;
 }
Example #4
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;
 }
Example #5
0
 /**
  * Get service message from origin.
  *
  * @param \Sly\NotificationPusher\Model\DeviceInterface $device Device
  * @param BaseOptionedModel|\Sly\NotificationPusher\Model\MessageInterface $message Message
  *
  * @return \ZendService\Apple\Apns\Message
  */
 public function getServiceMessageFromOrigin(DeviceInterface $device, BaseOptionedModel $message)
 {
     $badge = $message->hasOption('badge') ? (int) ($message->getOption('badge') + $device->getParameter('badge', 0)) : 0;
     $sound = $message->getOption('sound', 'bingbong.aiff');
     $contentAvailable = $message->getOption('content-available');
     $alert = new ServiceAlert($message->getText(), $message->getOption('actionLocKey'), $message->getOption('locKey'), $message->getOption('locArgs'), $message->getOption('launchImage'));
     if ($actionLocKey = $message->getOption('actionLocKey')) {
         $alert->setActionLocKey($actionLocKey);
     }
     if ($locKey = $message->getOption('locKey')) {
         $alert->setLocKey($locKey);
     }
     if ($locArgs = $message->getOption('locArgs')) {
         $alert->setLocArgs($locArgs);
     }
     if ($launchImage = $message->getOption('launchImage')) {
         $alert->setLaunchImage($launchImage);
     }
     $serviceMessage = new ServiceMessage();
     $serviceMessage->setId(sha1($device->getToken() . $message->getText()));
     $serviceMessage->setAlert($alert);
     $serviceMessage->setToken($device->getToken());
     $serviceMessage->setBadge($badge);
     $serviceMessage->setCustom($message->getOption('custom', array()));
     if (null !== $sound) {
         $serviceMessage->setSound($sound);
     }
     if (null !== $contentAvailable) {
         $serviceMessage->setContentAvailable($contentAvailable);
     }
     return $serviceMessage;
 }