mammutgroup / pushok
用于 Apple Push 通知服务 (APNs) 的 PHP 客户端 - 使用基于令牌(JWT 与 p8 私钥)或证书的认证通过新的 APNs HTTP/2 协议发送 iOS 推送通知
0.2.0
2016-11-10 13:18 UTC
Requires
- php: ^7.0.7
- guzzlehttp/guzzle: ~6.0
- spomky-labs/jose: ^6.1.1
Requires (Dev)
- phpunit/phpunit: ~4.0||~5.0
- satooshi/php-coveralls: dev-master
- squizlabs/php_codesniffer: ^2.3
This package is not auto-updated.
Last update: 2024-09-20 19:19:51 UTC
README
注意: 此库处于开发中
Pushok 是一个简单的 PHP 库,用于向 APNs 发送推送通知。
特性
- 使用新的 Apple APNs HTTP/2 连接
- 支持基于 JWT 的认证
- 支持新的 iOS 10 功能,例如折叠 ID、子标题和可变通知
- 使用并发请求到 APNs
- 已在 APNs 生产环境中测试并工作
- 支持基于证书的认证
要求
- PHP >= 7.0
- lib-curl >= 7.46.0(已启用 http/2 支持)
- lib-openssl >= 1.0.2e
满足要求的 Docker 镜像可以在 此处 找到。或者,您可以按照 此教程 创建自己的具有 HTTP/2 支持的 Docker 镜像。
安装
通过 Composer
$ composer require edamov/pushok
入门
<?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(); }
测试
$ composer test
安全
如果您发现任何与安全相关的问题,请通过电子邮件 edamov@gmail.com 而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。