/** * Create payload hash for message * * @param MessageInterface $message * * @return string * * @throws SendException */ public function createPayload(MessageInterface $message) { $payload = pack('CNNnH*', 1, $message->getIdentifier(), $message->getExpires()->format('U'), 32, $message->getDeviceToken()); $jsonData = $this->createJsonPayload($message); $payloadSize = strlen($jsonData); // Check payload size if ($payloadSize > 2048) { throw new SendException(SendException::ERROR_INVALID_PAYLOAD_SIZE, 1, $message->getIdentifier(), $message); } $payload .= pack('n', $payloadSize); $payload .= $jsonData; return $payload; }