laravel-notification-channels/pubnub

PubNub Notifications Channel for Laravel

Downloads

2098

Stars

10

Version

1.1.0

PubNub Notifications Channel for Laravel

Latest Version on Packagist Software License Build Status StyleCI Quality Score Code Coverage Total Downloads

PubNub Notifications Channel for Laravel 5.5+ & 6.0. This channel allows you to send message payloads as well as push notifications to iOS, Android and Windows using PubNub.

Contents

Installation

composer require laravel-notification-channels/pubnub

Add the service provider to your config/app.php

// config/app.php
'providers' => [
    ...
    NotificationChannels\Pubnub\PubnubServiceProvider::class,
],

Setting up the PubNub service

Add your PubNub Publish Key, Subscribe Key and Secret Key to your config/services.php

// config/services.php
...

'pubnub' => [
    'publish_key'   => env('PUBNUB_PUBLISH_KEY'),
    'subscribe_key' => env('PUBNUB_SUBSCRIBE_KEY'),
    'secret_key'    => env('PUBNUB_SECRET_KEY'),
],

... 

Usage

use NotificationChannels\Pubnub\PubnubChannel;
use NotificationChannels\Pubnub\PubnubMessage;
use Illuminate\Notifications\Notification;

class InvoicePaid extends Notification
{
    public function via($notifiable)
    {
        return [PubnubChannel::class];
    }

    public function toPubnub($notifiable)
    {
        return (new PubnubMessage())
            ->channel('my_channel')
            ->title('My message title')
            ->body('My message body');
    }
}

Alternatively you may supply a channel specifically related to your notifiable by implementing the routeNotificationForPubnub() method.

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;

class User extends Model
{
    use Notifiable;
    
    public function routeNotificationForPubnub()
    {
        return $this->pubnub_channel;
    }
}

Sending a push notification. You may chain any of the withiOS(), withAndroid() and withWindows() methods to add push notifications to the message with each of the platforms.

use NotificationChannels\Pubnub\PubnubChannel;
use NotificationChannels\Pubnub\PubnubMessage;
use Illuminate\Notifications\Notification;

class InvoicePaid extends Notification
{
    public function via($notifiable)
    {
        return [PubnubChannel::class];
    }

    public function toPubnub($notifiable)
    {
        return (new PubnubMessage())
            ->channel('my_channel')
            ->title('Alert: Jon Doe Sent You A Message')
            ->body('Hi')
            ->withiOS(
                (new PubnubMessage())
                    ->sound('default')
                    ->badge(1)
            )
            ->withAndroid(
                (new PubnubMessage())
                    ->sound('notification')
                    ->icon('myicon')
            )
            ->withWindows(
                (new PubnubMessage())
                    ->type('toast')
                    ->delay(450);
            );
    }
}

Available methods

  • channel(''): Specifies the channel the message should be sent to
  • title(''): Sets the title of the message
  • body(''): Sets the body of the message
  • storeInHistory(true): If the message should be stored in the Pubnub history
  • badge(1): Sets the number to display on the push notification's badge (iOS)
  • sound(''): Sets the sound for the push notification (iOS, Android)
  • icon(''): Sets the push notification icon (Android)
  • type(''): Sets the type of push notification (Windows)
  • delay(450): Sets the delay in seconds for the push notification (Windows)
  • setData($key, $value): Adds any extra data to the payload you may need
  • setOption($key, $value): Sets any option to the push notification (iOS, Android, Windows)
  • withiOS(PubnubMessage $message): Sets the push notification for iOS
  • withAndroid(PubnubMessage $message): Sets the push notification for Android
  • withWindows(PubnubMessage $message): Sets the push notification for Windows

Changelog

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Contributing

Please see CONTRIBUTING for details.

Credits

License

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

laravel-notification-channels

Author

laravel-notification-channels