This package makes it easy to send push notifications using OneSignal with Laravel 8.0+ and 9.0+
This plugin sends notifications only with OneSignal Player ID.
You can install this package via composer:
composer require macellan/onesignal
Add your OneSignal appId to your config/services.php:
// config/services.php
...
'onesignal' => [
'app_id' => env('ONESIGNAL_APP_ID', ''),
],
...
You can use the channel in your via() method inside the notification:
use Illuminate\Notifications\Notification;
use Macellan\OneSignal\OneSignalMessage;
class AccountApproved extends Notification
{
public function via($notifiable)
{
return ['onesignal'];
}
public function toOneSignal($notifiable)
{
return OneSignalMessage::create()
->setSubject('Awesome App')
->setBody('Your account was approved!');
}
}
You can change appId of a specific notification, just add the setAppId() method
public function toOneSignal($notifiable)
{
return OneSignalMessage::create()
->setAppId('Other AppId')
}
In your notifiable model, make sure to include a routeNotificationForOneSignal() method.
public function routeNotificationForOneSignal()
{
return $this->player_id;
}
Sometimes you may need to send a notification to someone who is not stored as a "user" of your application. Using the Notification::route method, you may specify ad-hoc notification routing information before sending the notification:
Notification::route('onesignal', 'player_id')
->notify(new AccountApproved());