/** * @param Message|MessageInterface $message * @return Response * @throws \Exception */ public function send(MessageInterface $message) { if (!$message instanceof Message) { throw new \Exception("Receivers should be list od APNS devices"); } $this->connect(); $data = $message->json(); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $data); $result = Response::fromCurl($this->curl); return $result; }
/** * @param Message|MessageInterface $message * @return Response * @throws \Exception */ public function send(MessageInterface $message) { if (!$message instanceof Message) { throw new \Exception("Receivers should be list of APNS devices"); } /** @var Message $message */ $receivers = $message->receivers; $results = new Response(); foreach ($receivers as $id => $receiver) { /** @var Device $receiver */ $this->connect(); curl_setopt($this->curl, CURLOPT_URL, $this->baseUrl . $receiver->path); $data = $message->json(); $headers = []; $headers[] = 'content-length: ' . strlen($data); $headers[] = 'apns-topic: ' . $message->topic; $headers[] = 'apns-expiration: ' . ($message->time_to_live ? (int) $message->time_to_live + time() : 0); switch ($message->priority) { case 5: case 'normal': $headers[] = 'apns-priority: ' . 5; break; case 10: case 'high': $headers[] = 'apns-priority: ' . 10; break; default: $headers[] = 'apns-priority: ' . 10; } curl_setopt($this->curl, CURLOPT_POSTFIELDS, $data); curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers); $results[] = [$receiver, CurlResponse::fromCurl($this->curl)]; $this->close(); } return $results; }