GitXplorerGitXplorer
s

push-notifications-php

public
5 stars
0 forks
0 issues

Commits

List of commits on branch develop.
Verified
3935b98cd2b76e7fce2626c761e96997ab11297c

Formatting source code

ssunaoka committed 5 months ago
Verified
3f6580f65ccc079ec6073a85a4d69e6534c8f6c1

Update GitHub Actions

ssunaoka committed 5 months ago
Verified
aabca508d5c450a35f7c7d8da0090387b612759b

Update GitHub Actions

ssunaoka committed 5 months ago
Verified
94a0b912b706e22c102ca6f901694a2150eac220

PHPStan Improvements

ssunaoka committed 6 months ago
Verified
adbab609ea4d6b8a53d54f70ff01056c1393a83b

Update GitHub Actions

ssunaoka committed 6 months ago
Verified
d4347279097219772a6a6b42c3d178a1f3355ea5

Update CHANGELOG.md

ssunaoka committed 9 months ago

README

The README file for this repository.

Push notifications Library for PHP

Latest License PHP Test codecov


Supported Protocols

Protocol Supported Driver Options
APNs (Token Based) APNs\Token APNs\Token\Option
APNs (Certificate Based) APNs\Certificate APNs\Certificate\Option
APNs (Binary Provider)
FCM (HTTP v1) FCM\V1 FCM\V1\Option
FCM (Legacy JSON) Deprecated FCM\Json FCM\Json\Option
FCM (Legacy Plain Text) Deprecated FCM\PlainText FCM\PlainText\Option
FCM (XMPP)

Installation

composer require sunaoka/push-notifications-php

Basic Usage

For example, in the case of APNs Token Based.

<?php

use Sunaoka\PushNotifications\Drivers\APNs;
use Sunaoka\PushNotifications\Pusher;

$payload = [
    'aps' => [
        'alert' => [
            'title' => 'Game Request',
            'body'  => 'Bob wants to play poker',
        ],
    ],
];

$options = new APNs\Token\Option();
$options->payload = $payload;
$options->authKey = '/path/to/key.p8';
$options->keyId = 'ABCDE12345';
$options->teamId = 'ABCDE12345';
$options->topic = 'com.example.app';

$driver = new APNs\Token($options);

$pusher = new Pusher();
$feedback = $pusher->to('Device token')->send($driver);

$result = $feedback->isSuccess('Device token');
if (! $result) {
    echo $feedback->failure('Device token');
    // BadDeviceToken
}

How to specify options

There are two ways to specify the option.

$options = new APNs\Token\Option();
$options->payload = $payload;
$options->authKey = '/path/to/key.p8';
$options->keyId = 'ABCDE12345';
$options->teamId = 'ABCDE12345';
$options->topic = 'com.example.app';

or

$options = new APNs\Token\Option([
    'payload' => $payload,
    'authKey' => '/path/to/key.p8',
    'keyId'   => 'ABCDE12345',
    'teamId'  => 'ABCDE12345',
    'topic'   => 'com.example.app',
]);

Multicast message

Specify an array of device tokens in Pusher::to(). Then, you can distribute to multiple devices.

$pusher = new Pusher();
$feedback = $pusher->to([
    'Device token 1',
    'Device token 2',
    'Device token 3',
])->send($driver);

How to switch between the production and development environments (only APNs)

This is specified as an argument when creating an instance of Pusher.

// Development environment (default)
$pusher = new Pusher(false);
// Production environment
$pusher = new Pusher(true);

Feedback

The return value of Pusher::send() is a Feedback object.

With the Feedback object, you can determine whether the notification succeeded or failed.

$pusher = new Pusher();
$feedback = $pusher->to('Device token')->send($driver);

$result = $feedback->isSuccess('Device token');
if ($result) {
    echo $feedback->success('Device token');
    // 01234567-0123-0123-0123-01234567890A
} else {
    echo $feedback->failure('Device token');
    // BadDeviceToken
}

HTTP Request Option

You can specify Guzzle Request Options as a driver option.

$options = new APNs\Token\Option();
$options->httpOptions = [
    'connect_timeout' => 3.14
    'timeout'         => 3.14,
    'debug'           => true,
];

More examples

More examples can be found in the examples directory.