notifica-dev/sdk
最新稳定版本:v0.1.0
Composer 安装命令:
composer require notifica-dev/sdk
包简介
Official PHP SDK for notifica.dev
README 文档
README
SDK PHP oficial do notifica.dev — envio de notificações push, e-mail e web a partir do seu backend PHP.
Requisitos
- PHP 8.1 ou superior
- Composer
Instalação
composer require notifica-dev/sdk
Configuração
Instancie o NotificaClient com o seu access token e a URL base da API:
use Notifica\NotificaClient; $notifica = new NotificaClient( accessToken: env('NOTIFICA_ACCESS_TOKEN'), baseUrl: env('NOTIFICA_API_URL'), );
O
baseUrlé opcional. Se omitido, aponta parahttps://api.notifica.dev.
Notificações
O SDK usa uma abordagem baseada em classes para envio de notificações. Cada evento do seu sistema vira uma classe que declara os canais e o conteúdo da mensagem.
Criando uma notificação
use Notifica\Notification; use Notifica\Target; use Notifica\Messages\PushMessage; use Notifica\Messages\EmailMessage; use Notifica\Messages\WebMessage; class PedidoEnviadoNotification extends Notification { public function __construct(private Pedido $pedido) {} // Canais que serão utilizados public function via(): array { return ['push', 'email']; } // Destinatários (opcional — pode ser sobrescrito no send()) public function targets(): array { return [ Target::customer("users:{$this->pedido->userId}"), ]; } // Agendamento (opcional) public function scheduledAt(): ?\DateTimeInterface { return null; // envio imediato } // Chave de idempotência (opcional) // O SDK sufixará o canal automaticamente: "pedido-123-push", "pedido-123-email" public function code(): ?string { return "pedido-enviado-{$this->pedido->id}"; } public function toPush(): PushMessage { return PushMessage::make() ->title('Seu pedido foi enviado!') ->body("Pedido #{$this->pedido->id} está a caminho."); } public function toEmail(): EmailMessage { return EmailMessage::make() ->subject("Pedido #{$this->pedido->id} enviado!") ->body('Seu pedido está a caminho. Acompanhe a entrega pelo link abaixo.') ->to($this->pedido->emailCliente) ->from('pedidos@minhaapp.com.br', 'Minha App'); } public function toWeb(): WebMessage { return WebMessage::make() ->title('Pedido enviado!') ->body("Pedido #{$this->pedido->id} está a caminho.") ->data(['pedido_id' => $this->pedido->id]); } }
Enviando
// Destinatários definidos na própria classe $notifica->send(new PedidoEnviadoNotification($pedido)); // Destinatários sobrescritos na chamada $notifica->send( new PedidoEnviadoNotification($pedido), Target::customer("users:{$user->id}"), );
O método send() retorna um array com a resposta da API para cada canal:
$resultados = $notifica->send(new PedidoEnviadoNotification($pedido)); $resultados['push']['id']; // ID do intent de push $resultados['email']['id']; // ID do intent de e-mail
Destinatários (Target)
Use a classe Target para definir para quem a notificação será enviada:
use Notifica\Target; Target::customer('users:123') // cliente pelo ID externo Target::allDevices() // todos os dispositivos do app Target::device('installation-id') // dispositivo específico Target::emailAddress('user@email.com') // endereço de e-mail direto Target::code('usuarios-premium') // dispositivos com este código Target::tag('premium', 'beta') // dispositivos com estas tags
Dispositivos
Registrar instalação web
$notifica->devices->registerWeb( installationKey: $installationKey, customerExternalId: "users:{$user->id}", name: $user->name, email: $user->email, );
Idempotente — conflitos 409 são ignorados silenciosamente.
Registrar instalação mobile (iOS / Android)
$notifica->devices->registerMobile( platform: 'android', // 'android' ou 'ios' pushProvider: 'expo', pushToken: $expoPushToken, customerExternalId: "users:{$user->id}", customerName: $user->name, tags: ['premium'], );
Token de sessão do cliente
Necessário para autenticar conexões WebSocket e requisições de inbox no frontend:
$token = $notifica->customerTokens->mint("users:{$user->id}"); $token['token']; // token de sessão $token['expiresAt']; // data de expiração (ISO 8601)
Inbox
Listar notificações
$inbox = $notifica->inbox->list( customerExternalId: "users:{$user->id}", page: 1, perPage: 20, readStatus: 'unread', // 'all', 'read' ou 'unread' );
Marcar como lida / não lida
$notifica->inbox->markAsRead($notificationId, "users:{$user->id}"); $notifica->inbox->markAsUnread($notificationId, "users:{$user->id}");
Tratamento de erros
Todas as chamadas à API lançam Notifica\Exceptions\NotificaException em caso de erro HTTP:
use Notifica\Exceptions\NotificaException; try { $notifica->send(new PedidoEnviadoNotification($pedido)); } catch (NotificaException $e) { $e->statusCode; // código HTTP (ex: 422, 503) $e->response; // corpo da resposta como array $e->getMessage(); }
Licença
MIT
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-09