• Stars
    star
    231
  • Rank 167,784 (Top 4 %)
  • Language
    PHP
  • License
    MIT License
  • Created about 9 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

OneSignal API for PHP

OneSignal API for PHP

Latest Stable Version Scrutinizer Code Quality Total Downloads GitHub Workflow Status Software License

Install

Note: All examples are for v2, if you are using PHP <7.3 please read v1 documentation.

This packages requires a PSR-18 HTTP client and PSR-17 HTTP factories to work. You can choose any from psr/http-client-implementation and psr/http-factory-implementation

Example with Symfony HttpClient and nyholm/psr7 http factories, install it with Composer:

composer require symfony/http-client nyholm/psr7 norkunas/onesignal-php-api

And now configure the OneSignal api client:

<?php

declare(strict_types=1);

use OneSignal\Config;
use OneSignal\OneSignal;
use Symfony\Component\HttpClient\Psr18Client;
use Nyholm\Psr7\Factory\Psr17Factory;

require __DIR__ . '/vendor/autoload.php';

$config = new Config('your_application_id', 'your_application_auth_key', 'your_auth_key');
$httpClient = new Psr18Client();
$requestFactory = $streamFactory = new Psr17Factory();

$oneSignal = new OneSignal($config, $httpClient, $requestFactory, $streamFactory);

How to use this library

Applications API

View the details of all of your current OneSignal applications (official documentation):

$myApps = $oneSignal->apps()->getAll();

View the details of a single OneSignal application (official documentation):

$myApp = $oneSignal->apps()->getOne('application_id');

Create a new OneSignal app (official documentation):

$newApp = $oneSignal->apps()->add([
    'name' => 'app name',
    'gcm_key' => 'key'
]);

Update the name or configuration settings of OneSignal application (official documentation):

$oneSignal->apps()->update('application_id', [
    'name' => 'new app name'
]);

Create Segments (official documentation):

$oneSignal->apps()->createSegment('application_id', [
    'name' => 'Segment Name',
    'filters' => [
        ['field' => 'session_count', 'relation' => '>', 'value' => 1],
        ['operator' => 'AND'],
        ['field' => 'tag', 'relation' => '!=', 'key' => 'tag_key', 'value' => '1'],
        ['operator' => 'OR'],
        ['field' => 'last_session', 'relation' => '<', 'value' => '30,'],
    ],
]);

Delete Segments (official documentation):

$oneSignal->apps()->deleteSegment('application_id', 'segment_id');

View the details of all the outcomes associated with your app (official documentation):

use OneSignal\Apps;
use OneSignal\Devices;

$outcomes = $oneSignal->apps()->outcomes('application_id', [
    'outcome_names' => [
        'os__session_duration.count',
        'os__click.count',
        'Sales, Purchase.sum',
    ],
    'outcome_time_range' => Apps::OUTCOME_TIME_RANGE_MONTH,
    'outcome_platforms' => [Devices::IOS, Devices::ANDROID],
    'outcome_attribution' => Apps::OUTCOME_ATTRIBUTION_DIRECT,
]);

Devices API

View the details of multiple devices in one of your OneSignal apps (official documentation):

$devices = $oneSignal->devices()->getAll();

View the details of an existing device in your configured OneSignal application (official documentation):

$device = $oneSignal->devices()->getOne('device_id');

Register a new device to your configured OneSignal application (official documentation):

use OneSignal\Devices;

$newDevice = $oneSignal->devices()->add([
    'device_type' => Devices::ANDROID,
    'identifier' => 'abcdefghijklmn',
]);

Update an existing device in your configured OneSignal application (official documentation):

$oneSignal->devices()->update('device_id', [
    'session_count' => 2,
    'ip' => '127.0.0.1', // Optional. New IP Address of your device
]);

Update an existing device's tags in one of your OneSignal apps using the External User ID (official documentation):

$externalUserId = '12345';
$response = $oneSignal->devices()->editTags($externalUserId, [
    'tags' => [
        'a' => '1',
        'foo' => '',
    ],
]);

Notifications API

View the details of multiple notifications (official documentation):

$notifications = $oneSignal->notifications()->getAll();

Get the details of a single notification (official documentation):

$notification = $oneSignal->notifications()->getOne('notification_id');

Create and send notifications or emails to a segment or individual users. You may target users in one of three ways using this method: by Segment, by Filter, or by Device (at least one targeting parameter must be specified) (official documentation):

$oneSignal->notifications()->add([
    'contents' => [
        'en' => 'Notification message'
    ],
    'included_segments' => ['All'],
    'data' => ['foo' => 'bar'],
    'isChrome' => true,
    'send_after' => new \DateTime('1 hour'),
    'filters' => [
        [
            'field' => 'tag',
            'key' => 'is_vip',
            'relation' => '!=',
            'value' => 'true',
        ],
        [
            'operator' => 'OR',
        ],
        [
            'field' => 'tag',
            'key' => 'is_admin',
            'relation' => '=',
            'value' => 'true',
        ],
    ],
    // ..other options
]);

Mark notification as opened (official documentation):

$oneSignal->notifications()->open('notification_id');

Stop a scheduled or currently outgoing notification (official documentation):

$oneSignal->notifications()->cancel('notification_id');

Notification History (official documentation):

$oneSignal->notifications()->history('notification_id', [
    'events' => 'clicked', // or 'sent'
    'email' => '[email protected]',
]);

Questions?

If you have any questions please open a discussion.

License

This library is released under the MIT License. See the bundled LICENSE file for details.