Package Data | |
---|---|
Maintainer Username: | laravel-notification-channels |
Maintainer Contact: | hello@marcelpociot.com (Marcel Pociot) |
Package Create Date: | 2016-08-11 |
Package Last Update: | 2024-06-02 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2025-01-25 15:02:43 |
Package Statistics | |
---|---|
Total Downloads: | 2,168,063 |
Monthly Downloads: | 52,990 |
Daily Downloads: | 1,124 |
Total Stars: | 285 |
Total Watchers: | 15 |
Total Forks: | 121 |
Total Open Issues: | 24 |
This package makes it easy to send OneSignal notifications with Laravel 5.3+.
You can install the package via composer:
$ composer require laravel-notification-channels/onesignal
If you're installing the package in Laravel 5.4 or lower, you must import the service provider:
// config/app.php
'providers' => [
...
NotificationChannels\OneSignal\OneSignalServiceProvider::class,
],
Add your OneSignal App ID and REST API Key to your config/services.php
:
// config/services.php
...
'onesignal' => [
'app_id' => env('ONESIGNAL_APP_ID'),
'rest_api_key' => env('ONESIGNAL_REST_API_KEY')
],
...
Now you can use the channel in your via()
method inside the notification:
use NotificationChannels\OneSignal\OneSignalChannel;
use NotificationChannels\OneSignal\OneSignalMessage;
use NotificationChannels\OneSignal\OneSignalWebButton;
use Illuminate\Notifications\Notification;
class AccountApproved extends Notification
{
public function via($notifiable)
{
return [OneSignalChannel::class];
}
public function toOneSignal($notifiable)
{
return OneSignalMessage::create()
->subject("Your {$notifiable->service} account was approved!")
->body("Click here to see details.")
->url('http://onesignal.com')
->webButton(
OneSignalWebButton::create('link-1')
->text('Click here')
->icon('https://upload.wikimedia.org/wikipedia/commons/4/4f/Laravel_logo.png')
->url('http://laravel.com')
);
}
}
In order to let your Notification know which OneSignal user(s) you are targeting, add the routeNotificationForOneSignal
method to your Notifiable model.
You can either return a single player-id, or if you want to notify multiple player IDs just return an array containing all IDs.
public function routeNotificationForOneSignal()
{
return 'ONE_SIGNAL_PLAYER_ID';
}
If you want to send the notification based on the OneSignal "syncHashedEmail" feature just return an array with the index "email". It isn't possible to use multiple E-Mails on one filter because of a limitation of the OneSignal API.
public function routeNotificationForOneSignal()
{
return ['email' => 'example@example.com'];
}
If you want to send the notification based on the OneSignal "Tags" feature just return an array with the index "tags".
public function routeNotificationForOneSignal()
{
return ['tags' => ['key' => 'device_uuid', 'relation' => '=', 'value' => '1234567890-abcdefgh-1234567']];
}
subject('')
: Accepts a string value for the title.body('')
: Accepts a string value for the notification body.icon('')
: Accepts an url for the icon.url('')
: Accepts an url for the notification click event.webButton(OneSignalWebButton $button)
: Allows you to add action buttons to the notification (Chrome 48+ (web push) only).button(OneSignalButton $button)
: Allows you to add buttons to the notification (Supported by iOS 8.0 and Android 4.1+ devices. Icon only works for Android).setData($key, $value)
: Allows you to set additional data for the message payload. For more information check the OneSignal documentation.setParameter($key, $value)
: Allows you to set additional parameters for the message payload that are available for the REST API. For more information check the OneSignal documentation.setImageAttachments($imageUrl)
: Allows you to set one Image to all possible Attachments OneSignal Attachment documentation.OneSignalMessage::create()
->button(
OneSignalButton::create('id')
->text('button text')
->icon('button icon')
);
OneSignalMessage::create()
->webButton(
OneSignalWebButton::create('id')
->text('button text')
->icon('button icon')
->url('button url')
);
Please see CHANGELOG for more information what has changed recently.
$ composer test
If you discover any security related issues, please email m.pociot@gmail.com instead of using the issue tracker.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.