skvn / pushok
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) or certificate-based authentication
0.2.2
2017-01-20 14:35 UTC
Requires
- php: ^7.0
- ext-curl: *
- ext-gmp: *
- ext-intl: *
- ext-openssl: *
- ext-xml: *
- lib-curl: >=7.46.0
- lib-openssl: >=1.0.2.5
- spomky-labs/jose: ^6.1.1
Requires (Dev)
- ext-xdebug: *
- phpunit/phpunit: ~4.0||~5.0
- satooshi/php-coveralls: dev-master
- squizlabs/php_codesniffer: ^2.3
This package is auto-updated.
Last update: 2024-11-29 05:03:30 UTC
README
Note: This library is under development
Pushok is a simple PHP library for sending push notifications to APNs.
Features
- Uses new Apple APNs HTTP/2 connection
- Supports JWT-based authentication
- Supports new iOS 10 features such as Collapse IDs, Subtitles and Mutable Notifications
- Uses concurrent requests to APNs
- Tested and working in APNs production environment
- Supports Certificate-based authentication
Requirements
- PHP >= 7.0
- lib-curl >= 7.46.0 (with http/2 support enabled)
- lib-openssl >= 1.0.2e
Docker image that meets requirements can be found here.
Install
Via Composer
$ composer require edamov/pushok
Getting Started
<?php require __DIR__ . '/vendor/autoload.php'; 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 = $payload->setSound('default'); //add custom value to your notification, needs to be customized $payload = $payload->setCustomValue('key', 'value'); $deviceTokens = ['<device_token_1>', '<device_token_2>', '<device_token_3>']; $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 edamov@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.