%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/Messaging/ |
| Current File : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/Messaging/ApnsConfig.php |
<?php
declare(strict_types=1);
namespace Kreait\Firebase\Messaging;
use JsonSerializable;
/**
* @see https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification
* @see https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns
*/
final class ApnsConfig implements JsonSerializable
{
private const PRIORITY_CONSERVE_POWER = '5';
private const PRIORITY_IMMEDIATE = '10';
/** @var array<string, mixed> */
private $config;
private function __construct()
{
}
public static function new(): self
{
return self::fromArray([]);
}
/**
* @param array<string, mixed> $data
*/
public static function fromArray(array $data): self
{
$config = new self();
$config->config = $data;
return $config;
}
public function withDefaultSound(): self
{
return $this->withSound('default');
}
/**
* The name of a sound file in your app’s main bundle or in the Library/Sounds folder of your app’s
* container directory. Specify the string "default" to play the system sound.
*/
public function withSound(string $sound): self
{
$config = clone $this;
$config->config['payload'] = $config->config['payload'] ?? [];
$config->config['payload']['aps'] = $config->config['payload']['aps'] ?? [];
$config->config['payload']['aps']['sound'] = $sound;
return $config;
}
/**
* The number to display in a badge on your app’s icon. Specify 0 to remove the current badge, if any.
*/
public function withBadge(int $number): self
{
$config = clone $this;
$config->config['payload'] = $config->config['payload'] ?? [];
$config->config['payload']['aps'] = $config->config['payload']['aps'] ?? [];
$config->config['payload']['aps']['badge'] = $number;
return $config;
}
public function withImmediatePriority(): self
{
return $this->withPriority(self::PRIORITY_IMMEDIATE);
}
public function withPowerConservingPriority(): self
{
return $this->withPriority(self::PRIORITY_CONSERVE_POWER);
}
public function withPriority(string $priority): self
{
$config = clone $this;
$config->config['headers'] = $config->config['headers'] ?? [];
$config->config['headers']['apns-priority'] = $priority;
return $config;
}
/**
* @return array<string, mixed>
*/
public function jsonSerialize(): array
{
return \array_filter($this->config, static function ($value) {
return $value !== null;
});
}
}