brandonhudson/onesignal-php-api

PHP 的 OneSignal API

v2.0.3 2020-04-07 01:37 UTC

README

安装

注意:所有示例均针对 v2,如果您使用 PHP <7.3,请阅读 v1 文档

此包需要 PSR-18 HTTP 客户端和 PSR-17 HTTP 工厂才能工作。您可以从 psr/http-client-implementationpsr/http-factory-implementation 中选择任何一项。

使用 Symfony HttpClient 和 nyholm/psr7 http 工厂作为示例,使用 Composer 进行安装

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

现在配置 OneSignal API 客户端

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

如何使用此库

应用程序 API

查看您当前所有 OneSignal 应用程序的详细信息(官方文档

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

查看单个 OneSignal 应用程序的详细信息(官方文档

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

创建新的 OneSignal 应用程序(官方文档

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

更新 OneSignal 应用程序的名或配置设置(官方文档

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

创建段(官方文档

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

删除段(官方文档

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

设备 API

查看您的 OneSignal 应用程序中多个设备的详细信息(官方文档

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

查看您配置的 OneSignal 应用程序中现有设备的详细信息(官方文档

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

将新设备注册到您的配置的 OneSignal 应用程序(官方文档

use OneSignal\Api\Devices;

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

更新您配置的 OneSignal 应用程序中现有设备的详细信息(官方文档

$oneSignal->devices()->update('device_id', [
    'session_count' => 2,
]);

通知 API

查看多个通知的详细信息(官方文档

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

获取单个通知的详细信息(官方文档

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

创建并发送通知或电子邮件到段或单个用户。您可以使用此方法通过三种方式之一定位用户:通过段、通过过滤器或通过设备(至少必须指定一个定位参数)(官方文档

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

标记通知为已打开(《官方文档》)

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

取消已安排或当前正在发出的通知(《官方文档》)

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

通知历史(《官方文档》)

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

有问题?

如果您有任何疑问,请打开一个问题

许可证

此库是在MIT许可证下发布的。有关详细信息,请参阅附带LICENSE文件。