Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Push Laravel Package

cmnty/push

View on GitHub
Deep Wiki
Context7

cmnty/push

Latest Version on Packagist Software License Total Downloads

Web Push library for PHP

Instalation

Require the library with composer:

composer require cmnty/push

This library supports both ext-crypto and lib-openssl for it's encryption needs. While a php fallback can be provided by spomky-labs/php-aes-gcm it is advised to use that only as a last resort.

Usage

<?php

use Cmnty\Push\AggregatePushService;
use Cmnty\Push\Client;
use Cmnty\Push\Crypto\AuthenticationSecret;
use Cmnty\Push\Crypto\PublicKey;
use Cmnty\Push\EndPoint;
use Cmnty\Push\GooglePushService;
use Cmnty\Push\MozillaPushService;
use Cmnty\Push\Notification;
use Cmnty\Push\PushServiceRegistry;
use Cmnty\Push\Subscription;

$notification = new Notification('Hello', 'World!');
$subscription = new Subscription(
    new Endpoint('...'),
    new PublicKey::createFromBase64UrlEncodedString('...'),
    new AuthenticationSecret::createFromBase64UrlEncodedString('...')
);

$pushServiceRegistry = new PushServiceRegistry();
$pushServiceRegistry->addPushService(new GooglePushService('API Key'));
$pushServiceRegistry->addPushService(new MozillaPushService());
$pushService = new AggregatePushService($pushServiceRegistry);
$client = new Client($pushService);

$client->pushNotification($notification, $subscription);

By default, the Cmnty\Push\Crypto\AggregateCrypt class is used to encrypt the notification. This class tries to encrypt the notification using third party libraries or extensions in the following order:

  • Encrypt using ext-crypto implemented by Cmnty\Push\Crypto\ExtCryptoCrypt
  • Encrypt using lib-openssl implemented by Cmnty\Push\Crypto\OpenSSLCrypt
  • Encrypt using native php implemented by Cmnty\Push\Crypto\SpomkyLabsCrypt using spomky-labs/php-aes-gcm

You can also force a certain library or extension to be used by passing it to the PushClient:

<?php

use Cmnty\Push\Client;
use Cmnty\Push\Crypto\Cryptograph;
use Cmnty\Push\Crypto\ExtCryptoCrypt;

$pushService = ...;
$cryptograph = new Cryptograph(new ExtCryptoCrypt());
$client = new Client($pushService, null, $cryptograph);

If required, you can also provide your own implementation by implementing the Cmnty\Push\Crypto\Crypt interface.

Framework Integration

Credits

License

The MIT License (MIT). Please see License File for more information.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours