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);
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,
]);
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,
]);
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' => '',
],
]);
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' => 'your_email@email.com',
]);
If you have any questions please open a discussion.
This library is released under the MIT License. See the bundled LICENSE file for details.