Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/pull/lib/push/message/ |
Upload File : |
<?php namespace Bitrix\Pull\Push\Message; class GoogleMessage extends BaseMessage { const DEFAULT_PAYLOAD_MAXIMUM_SIZE = 4096; public function __construct($sDeviceToken = null) { if (isset($sDeviceToken)) { $this->addRecipient($sDeviceToken); } } /** * Returns batch of the message * @return string */ public function getBatch() { $data = $this->getPayload(); $batch = "Content-type: application/json\r\n"; $batch .= "Content-length: " . strlen($data) . "\r\n"; $batch .= "\r\n"; $batch .= $data; return base64_encode($batch); } public function getPayload(): string { $data = [ "data" => [ 'contentTitle' => $this->title, "contentText" => $this->text, "badge" => $this->badge, "messageParams" => $this->customProperties, "category" => $this->getCategory(), "sound" => $this->getSound(), ], "time_to_live" => $this->expiryValue, "priority" => "high", "registration_ids" => $this->deviceTokens ]; return $this->strippedPayload($data); } public function strippedPayload($data): string { $jsonPayload = json_encode($data, JSON_UNESCAPED_UNICODE); $payloadLength = strlen($jsonPayload); if ($payloadLength > self::DEFAULT_PAYLOAD_MAXIMUM_SIZE) { $text = $this->text; $useSenderText = false; if(array_key_exists("senderMessage", $this->customProperties)) { $useSenderText = true; $text = $this->customProperties["senderMessage"]; } $maxTextLength = $nTextLen = strlen($text) - ($payloadLength - self::DEFAULT_PAYLOAD_MAXIMUM_SIZE); if ($maxTextLength <= 0) { return false; } while (strlen($text = mb_substr($text, 0, --$nTextLen)) > $maxTextLength) ; if($useSenderText) { $this->setCustomProperty("senderMessage", $text); } else { $this->setText($text); } return $this->getPayload(); } return $jsonPayload; } }