Laravel One Signal is Laravel Wrapper for One Signal. One Signal is a great platform for send a push notification to your users.
Install the package by the following command,
composer require ladumor/one-signal:0.4.0
Run the following command to publish config file,
php artisan vendor:publish --provider="Ladumor\OneSignal\OneSignalServiceProvider"
Add the provider to your config/app.php
into provider
section if using lower version of laravel,
Ladumor\OneSignal\OneSignalServiceProvider::class,
Add the Facade to your config/app.php
into aliases
section,
'OneSignal' => \Ladumor\OneSignal\OneSignal::class,
Add your api keys and OneSignal app id to your .env
,
ONE_SIGNAL_APP_ID=XXXXXX-XXXXXX-XXXXXX-XXXXXX (YOUR APP ID)
ONE_SIGNAL_AUTHORIZE=XXXXXX (REST API KEY)
ONE_SIGNAL_AUTH_KEY=XXXXXXX (YOUR USER AUTH KEY)
You can call them into your code with,
For send push notification, use the sendPush method by calling,
$fields['include_player_ids'] = ['xxxxxxxx-xxxx-xxx-xxxx-yyyyyyyyy'];
$message = 'hey!! this is test push.!'
OneSignal::sendPush($fields, $message);
Optionally, you can obtain the id of the notification like this,
$notificationID = OneSignal::sendPush($fields, $message);
echo $notificationID["id"];
To cancel a notification, use the cancelNotification method by calling,
$notificationID = 'xxxxxxxx-xxxx-xxx-xxxx-yyyyyyyyy';
OneSignal::cancelNotification($notificationID);
You can customise a contents and pass it in fields. message does not required when you pass contents
$fields['include_player_ids'] = ['xxxxxxxx-xxxx-xxx-xxxx-yyyyyyyyy'];
$fields['contents'] = array(
"en" => 'English Message',
"es" => 'Spanish Message',
);
OneSignal::sendPush($fields);
For retrieve all notifications, use the getNotifications
method by calling,
OneSignal::getNotifications();
You can check here return response format.
For retrieve single notification, use the getNotification
method with id param by calling,
OneSignal::getNotification($notificationId);
You can check here return response format.
For retrieve all user devices, use the getDevices
method by calling,
OneSignal::getDevices();
You can check here return response format.
For retrieve single Devices, use the getDevice
method with id param by calling,
OneSignal::getDevice($deviceId);
You can check here return response format.
For add a device in your application, use the addDevice
method by calling, if you want to create device in different application than you can specify app_id
in $fields
array.
$fields = [
'device_type' => 0,
'identifier' => '7abcd558f29d0b1f048083e2834ad8ea4b3d87d8ad9c088b33c132706ff445f0',
'timezone' => '-28800',
'game_version' => '1.1',
'device_os' => '7.0.4',
'test_type' => 1,
'device_model' => "iPhone 8,2",
'tags' => array("foo" => "bar")
];
return OneSignal::addDevice($fields);
You can check here supported parameters and guide.
For update a device in your application, use the addDevice
method by calling, if you want to update device in different application than you can specify app_id
in $fields
array.
$fields = [
'device_type' => 0,
'identifier' => '7abcd558f29d0b1f048083e2834ad8ea4b3d87d8ad9c088b33c132706ff445f0',
'timezone' => '-28800',
'game_version' => '1.1',
'device_os' => '7.0.4',
'test_type' => 1,
'device_model' => "iPhone 8,2",
'tags' => array("foo" => "bar")
];
$playerId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
return OneSignal::updateDevice($fields, $playerId);
You can check here supported parameters and guide.
NOTE: REQUIRED ONE-SIGNAL PAID PLAN
For add a new segment in your application, use the createSegment
method by calling,
$fields = [
'name' => 'iOS, Android, Web',
"filters" => array("field" => "device_type", "relation" => "=", "value" => "Android"),
];
return OneSignal::createSegment($fields);
You can check here supported parameters and guide.
OneSignal::deleteSegment('YOUR_SEGMENT_ID')
NOTE: REQUIRED ONE-SIGNAL PAID PLAN
You can check here for more guide.
Note*: Auth key must be set in one-signal.php
how to get auth_key?
View the details of all of your current OneSignal apps
$apps = OneSignal::getApps();
You can check here api response.
View the details of single of your current OneSignal app or other app by passing app id.
// It's return default site which is configured in config.
$app = OneSignal::getApp();
// you can specify app id as wel but it's optional
$app = OneSignal::getApp('YOUR_APP_ID');
You can check here api response.
Creates a new OneSignal app.
$fields = array(
'name' => "TestByMe"
);
OneSignal::createApp($fields);
You can check here supported parameters and guide.
Update a new OneSignal app.
$fields = array(
'name' => "TestByMe"
);
OneSignal::updateApp($fields);
// you can pass second param as a appId if you want to update other app.. default take from config.
You can check here supported parameters and guide.
You can generate a User Device APIs with just one command,
php artisan one-signal.userDevice:publish
this command generate following files,
- UserDeviceAPIController
- UserDeviceAPIRepository
- UserDevice (model)
- Migration
Also, do not forget to add following routes in to the api.php
file.
use App\Http\Controllers\API\UserDeviceAPIController;
Route::post('user-device/register', [UserDeviceAPIController::class, 'registerDevice']);
Route::get('user-device/{playerId}/update-status', [UserDeviceAPIController::class, 'updateNotificationStatus']);
Please see Change Log here
The MIT License (MIT). Please see License File for more information