mprince/one-signal

Laravel 8+ Wrapper for OneSignal.

dev-main 2021-10-16 08:57 UTC

This package is auto-updated.

Last update: 2022-05-16 10:14:31 UTC


README

Laravel One Signal is Laravel Wrapper for One Signal. One Signal is a great platform for send a push notification to your users.

forked from One Signal

Contents

Installation

Install the package by the following command,

composer require mprince/one-signal

Publish the config file

Run the following command to publish config file,

php artisan vendor:publish --provider="Ladumor\OneSignal\OneSignalServiceProvider"

Add Provider

Add the provider to your config/app.php into provider section if using lower version of laravel,

Ladumor\OneSignal\OneSignalServiceProvider::class,

Add Facade

Add the Facade to your config/app.php into aliases section,

'OneSignal' => \Ladumor\OneSignal\OneSignal::class,

Add ENV data

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,

Usage

Send Push Notification

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"];

Cancel Notification

To cancel a notification, use the cancelNotification method by calling,

$notificationID = 'xxxxxxxx-xxxx-xxx-xxxx-yyyyyyyyy';

OneSignal::cancelNotification($notificationID);

Customise Contents

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);

Get All Notifications

For retrieve all notifications, use the getNotifications method by calling,

OneSignal::getNotifications();

You can check here return response format.

Get Single Notification

For retrieve single notification, use the getNotification method with id param by calling,

OneSignal::getNotification($notificationId);    

You can check here return response format.

Get All Devices

For retrieve all user devices, use the getDevices method by calling,

OneSignal::getDevices();

You can check here return response format.

Get Single Device

For retrieve single Devices, use the getDevice method with id param by calling,

OneSignal::getDevice($deviceId);    

You can check here return response format.

Create Device

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.

Update Device

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.

Create Segment

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')

Delete Segment

NOTE: REQUIRED ONE-SIGNAL PAID PLAN

You can check here for more guide.

Apps

Note*: Auth key must be set in one-signal.php how to get auth_key?

View Apps

View the details of all of your current OneSignal apps

 $apps = OneSignal::getApps();

You can check here api response.

View App

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.

Create App

Creates a new OneSignal app.

 $fields = array(
        'name' => "TestByMe"
    );

 OneSignal::createApp($fields);

You can check here supported parameters and guide.

Update App

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.

User Device

68747470733a2f2f696d672e796f75747562652e636f6d2f76692f774f483171735133534c382f302e6a7067

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']);

Change Log

Please see Change Log here

License

The MIT License (MIT). Please see License File for more information