Need help with pushok?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

edamov
236 Stars 73 Forks MIT License 164 Commits 12 Opened issues

Description

PHP client for Apple Push Notification Service (APNs) - Send push notifications to iOS using the new APNs HTTP/2 protocol with token-based (JWT with p8 private key)

Services available

!
?

Need anything else?

Contributors list

Pushok

PHP >= 7.2 Build Status Latest Version on Packagist Total Downloads Coverage Status Quality Score Software License

Pushok is a simple PHP library for sending push notifications to APNs.

Features

  • [X] Uses new Apple APNs HTTP/2 connection
  • [X] Supports JWT-based authentication
  • [X] Supports Certificate-based authentication
  • [X] Supports new iOS 10 features such as Collapse IDs, Subtitles and Mutable Notifications
  • [X] Uses concurrent requests to APNs
  • [X] Tested and working in APNs production environment

Requirements

  • PHP >= 7.2
  • lib-curl >= 7.46.0 (with http/2 support enabled)
  • lib-openssl >= 1.0.2e

Docker image that meets requirements can be found here. Or you can follow this tutorial to create your own docker image with curl with HTTP/2 support.

Install

Via Composer

$ composer require edamov/pushok

Getting Started

use Pushok\AuthProvider;
use Pushok\Client;
use Pushok\Notification;
use Pushok\Payload;
use Pushok\Payload\Alert;

$options = [ 'key_id' => 'AAAABBBBCC', // The Key ID obtained from Apple developer account 'team_id' => 'DDDDEEEEFF', // The Team ID obtained from Apple developer account 'app_bundle_id' => 'com.app.Test', // The bundle ID for app obtained from Apple developer account 'private_key_path' => DIR . '/private_key.p8', // Path to private key 'private_key_secret' => null // Private key secret ];

$authProvider = AuthProvider\Token::create($options);

$alert = Alert::create()->setTitle('Hello!'); $alert = $alert->setBody('First push notification');

$payload = Payload::create()->setAlert($alert);

//set notification sound to default $payload->setSound('default');

//add custom value to your notification, needs to be customized $payload->setCustomValue('key', 'value');

$deviceTokens = ['', '', ''];

$notifications = []; foreach ($deviceTokens as $deviceToken) { $notifications[] = new Notification($payload,$deviceToken); }

$client = new Client($authProvider, $production = false); $client->addNotifications($notifications);

$responses = $client->push(); // returns an array of ApnsResponseInterface (one Response per Notification)

foreach ($responses as $response) { $response->getApnsId(); $response->getStatusCode(); $response->getReasonPhrase(); $response->getErrorReason(); $response->getErrorDescription(); }

Testing

$ composer test

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.