norkunas/onesignal-php-api

OneSignal API for PHP

Maintainers

πŸ‘ norkunas

Package info

github.com/norkunas/onesignal-php-api

pkg:composer/norkunas/onesignal-php-api

Statistics

Installs: 1 810 830

Dependents: 19

Suggesters: 1

Stars: 236

Open Issues: 9

v2.15.0 2024-09-01 15:54 UTC

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 1f6db112bb535d451c9cb78020725a18f826b364

  • Tomas NorkΕ«nas <norkunas.tom.woop@gmail.com>

apinotificationspushgcmapnsonesignal


README

πŸ‘ 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' => 'your_email@email.com',
]);

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.