# Pushwoosh notification channel for Laravel

Build status Downloads Latest release Code coverage License

This package makes sending notifications using Pushwoosh a breeze.

# Contents

# Requirements

This make use of this package you need:

  • Laravel 5.5 or higher
  • PHP 7.0 or higher
  • An active Pushwoosh subscription

# Installation

To install this package run the following command:

composer require laravel-notification-channels/pushwoosh

Next, add the following lines to your config/services.php:

'pushwoosh' => [
    'application' => env('PUSHWOOSH_APP_CODE'),
    'token' => env('PUSHWOOSH_TOKEN'),
],

You can now add the PUSHWOOSH_APP_CODE (found here) and the PUSHWOOSH_TOKEN (found here) to your environment file.

# Usage

Using this package, you can use Pushwoosh just like any other notification channel within Laravel. For more information about Laravel's notification system, see the official documentation.

# Routing notifications

In order for Pushwoosh to know to what devices it needs to send to, you will need to add the routeNotificationForPushwoosh to your notifiable model(s), for example:

class Customer extends Model
{
    use Notifiable;
    
    public function routeNotificationForPushwoosh()
    {
        return (new PushwooshRecipient)->device($this->device_id);
    }
}

The routeNotificationForPushwoosh method may return a string, an array of strings or a PushwooshRecipient instance. For more information about the PushwooshRecipient class refer to the available methods section.

# Sending notifications

Sending a pushwoosh message is easy, add pushwoosh to your notification's via method and implement the toPushwoosh method, for example:

class WishlistItemOnSale extends Notification
{
    public function via($notifiable)
    {
        return ['pushwoosh'];
    }
    
    public function toPushwoosh($notifiable)
    {
        return (new PushwooshMessage)
            ->content('Your wishlist item ' . $this->product->name . ' is on sale, get it now!')
            ->url(route('products.show', $this->product))
            ->deliverAt(Carbon::now()->addMinutes(10));
    }
}

The toPushwoosh method may return a string or an instance of the PushwooshMessage class, for more information on the PushwooshMessage class refer to the available methods section.

# Available methods

This section details the public API of this package.

# PushwooshMessage

Below is a list of available methods on the PushwooshMessage class.

Method Description
campaign($campaign) Set the Pushwoosh campaign code
content($content[, $language]) Set the message content (optionally for a specific language)
deliverAt($when[, $timezone]) Set the delivery moment
identifier($identifier) Set the Pushwoosh unique identifier (defaults to the notification ID)
preset($preset) Set the Pushwoosh preset code
throttle($limit) Throttle the rollout (100-1000 pushes per second)
url($url[, $shorten]) Set the URL the message should link to
useRecipientTimezone() Respect the recipients' timezone when delivering the message

# PushwooshRecipient

Below is a list of available methods on the PushwooshRecipient class.

Method Description
device($device[, ...]) Limit the delivery to the given device(s)
platform($platform[, ...]) Limit the delivery to the given platform(s)
user($user[, ...]) Limit the delivery to the given user(s)
within($lat, $lng, $range) Limit the delivery to the given geo zone
# Platforms

Below is a list of supported platforms, for the PushwooshRecipient::platform method.

  • Amazon
  • Android
  • Blackberry
  • Chrome
  • Firefox
  • iOS
  • Mac
  • Safari
  • Windows
  • Windows Phone

# Changelog

Please see the changelog for more information on what has changed recently.

# Testing

composer test

# Contributing

If you want to contribute to this package, take a look at the contribution guide.

# Credits

# License

This product is licensed under the MIT License (MIT). Please see the License File for more information.