This is a simple OneSignal wrapper library for Laravel. It simplifies the basic notification flow with the defined methods. You can send a message to all users or you can notify a single user. Before you start installing this service, please complete your OneSignal setup at https://onesignal.com and finish all the steps that is necessary to obtain an application id and REST API Keys.
First, you'll need to require the package with Composer:
composer require liliom/laravel-onesignal
You don't have to do anything else, this package uses the Package Auto-Discovery feature, and should be available as soon as you install it via Composer.
Update your config/app.php
by adding the following service provider.
'providers' => [
// ...
// ...
Liliom\OneSignal\OneSignalServiceProvider::class,
// ...
];
Then, register class alias by adding an entry in aliases section
'aliases' => [
// ...
'OneSignal' => Liliom\OneSignal\OneSignalFacade::class
];
Finally, publish the config file by running:
php artisan vendor:publish --provider="Liliom\OneSignal\OneSignalServiceProvider"
php artisan vendor:publish --provider="Laravelme\Acquaintances\AcquaintancesServiceProvider"
The command above shall publish a configuration file named onesignal.php
which includes your OneSignal authorization keys.
Please fill the file config/onesignal.php
.
app_id
is your OneSignal App ID and rest_api_key
is your REST API Key, where user_auth_key
is optional.
Or alternatively you can fill your settings in .env
file as the following:
ONE_SIGNAL_APP_ID=
ONE_SIGNAL_REST_API_KEY=
You can easily send a message to all registered users with the command
OneSignal::sendNotificationToAll("Some Message", $url = null, $data = null, $buttons = null, $schedule = null);
$url
, $data
, $buttons
and $schedule
fields are exceptional. If you provide a $url
parameter, users will be redirecting to that url.
You can send a message based on a set of tags with the command
OneSignal::sendNotificationUsingTags("Some Message", ["key" => "device_uuid", "relation" => "=", "value" => 123e4567-e89b-12d3-a456-426655440000], $url = null, $data = null, $buttons = null, $schedule = null);
After storing a user's tokens in a table, you can simply send a message with
OneSignal::sendNotificationToUser("Some Message", $userId, $url = null, $data = null, $buttons = null, $schedule = null);
$userId
is the user's unique id where he/she is registered for notifications. Read https://documentation.onesignal.com/docs/web-push-tagging-guide for additional details.
$url
, $data
, $buttons
and $schedule
fields are exceptional. If you provide a $url
parameter, users will be redirecting to that url.
If you are using the option to set the userId as email address of the user then use the following function
OneSignal::sendNotificationToUserByEmail("Some Message", $email, $filters = [], $segment = ['All'], $url = null, $data = null, $buttons = null, $schedule = null, $smallIcon = null, $LargeIcon = null, $bigPicture = null, $androidAccentCircleColor = null, $androidAccentLedColor = null, $sound = null )
You can simply send a notification to a specific segment with
OneSignal::sendNotificationToSegment("Some Message", $segment, $url = null, $data = null, $buttons = null, $schedule = null);
$url
, $data
, $buttons
and $schedule
fields are exceptional. If you provide a $url
parameter, users will be redirecting to that url.
You can send a custom message with
OneSignal::sendNotificationCustom($parameters);
### Sending a Custom Notification
You can send a async custom message with
OneSignal::async()->sendNotificationCustom($parameters);
Please refer to https://documentation.onesignal.com/reference for all customizable parameters.