c2is / apns-sender
通过苹果服务向多个设备发送批量通知。
dev-master / 1.x-dev
2016-02-01 17:52 UTC
Requires
- psr/log: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.1
This package is auto-updated.
Last update: 2024-08-29 03:36:18 UTC
README
ApnsSender
安装
使用 composer
composer require c2is/apns-sender
它做什么
此组件解决的问题是需要向多个设备令牌发送相同内容的通知。虽然如果需要的话,可以通过相对较少的努力来实现这一点,但向不同的令牌发送不同的消息并不是一个好的做法。
重点是优雅地处理错误。这种方式是通过向通知服务打开一个流并批量发送通知来实现的。
写入流时可能发生两种错误
- 如果通知服务将错误写入流,如果是可重试的错误(通常是未知错误或“处理错误”),我们会重试向相同的令牌发送相同的通知。如果再次失败,我们会继续下一个。
- 没有来自通知服务的错误 流由于某种原因失败了。我们重试最后一个令牌并继续。
一旦发送完毕,就会进行最后的错误检查,结果与上面相同。然后返回一个包含所有无法解决的问题的数组,这样您就可以根据需要处理它们。
目标是抽象流错误并尽可能多地收集信息供您处理。此组件处理错误发生后流不可写的情况,重试所有无法发送的令牌,并返回一个包含错误状态码和消息的列表,这样您就可以在应用程序中根据需要进行处理。
用法
发送通知相对简单
use C2iS\ApnsSender\Sender; $production = false; // Default value. If false, sends to gateway.sandbox.push.apple.com. If true, sends to gateway.push.apple.com $certFile = '/my/file.pem'; // Your certificate file $certPassword = 'MyPassword'; // Your certificate file's password $message = 'Just testing my awesome notification system works'; // Your notification content $tokens array(); // Device tokens this notification should be sent to $sender = new Sender($production, $certFile, $certPassword); $errors = $sender->send($message, $tokens); // Here be your error handling logic
send 方法返回一个 \C2iS\ApnsSender\Model\MessageError 对象数组
$error->getCustomIdentifier(); // Returns the array key of the token for which the error occurred $error->getToken(); // Returns the device token $error->getErrorCode(); // The APNS error status (255 if not available) $error->getErrorMessage(); // The APNS error message (Unknown error if not available)
顺便说一句,使用的状态码
0 => No error
1 => Processing error
2 => Missing device token
3 => Missing topic
4 => Missing payload
5 => Invalid token size
6 => Invalid topic size
7 => Invalid payload size
8 => Invalid token
255 => Unknown error