level51/silverstripe-onesignal

Silverstripe module wrapper for OneSignal PHP SDK

Installs: 180

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0

Type:silverstripe-vendormodule

1.0.0 2020-11-02 00:00 UTC

This package is auto-updated.

Last update: 2024-03-29 04:12:49 UTC


README

Build Status Scrutinizer Code Quality Code Coverage License: MIT

Silverstripe module wrapper for OneSignal PHP SDK.

Provides a class OneSignalService for creating/sending notifications. Use convenience classes Notification and NotificationResponse for handling request and response payload.

Requirements

  • Silverstripe ^4.0
  • OneSignal PHP SDK norkunas/onesignal-php-api
  • PSR-18 HTTP client (e.g. symfony/http-client)
  • PSR-17 HTTP factories (e.g. nyholm/psr7)

Installation

composer require level51/silverstripe-onesignal

Documentation

The module is based on the OneSignal API for PHP.

At the moment, only the Notifications API is being used.

This project adheres PSR-2.

Config

Two env vars and one config value are mandatory when initializing OneSignalService. OneSignalException is thrown if not configured properly.

Environment

Define the following vars in your .env file.

  • ONESIGNAL_AUTH_KEY (defined on account/profile level)
  • ONESIGNAL_APP_AUTH_KEY

Since the auth keys are sensitive data, it's recommended to not have them included in any VCS.

Config API

  • app_id

Example:

Level51\OneSignal\OneSignalService:
  app_id: 'xxxxxx-0000-xxxx-0000-xxxxxxxxxx'

Usage

Send a simple notification.

try {
    $notification = Notification::create()
        ->addHeading('en', 'My first notification')
        ->addContent('en', 'Yay, my Silverstripe app created this')
        ->addData('myVar', 'foo');

    $response = OneSignalService::singleton()->createNotification($notification);
    if (!$response->isError()) {
        echo 'Notification with id ' . $response->getId() . ' was sent to ' . $response->getRecipientsCount() . ' recipients';
    }
} catch (OneSignalException $e) {}

Make sure to provide a supported locale for addHeading() and addContent().

Maintainer