steveeakin / apn
苹果APN推送通知通道
Requires
- php: ^7.3|^8.0
- edamov/pushok: ^0.13
- illuminate/cache: ^6.0|^7.0|^8.0
- illuminate/config: ^6.0|^7.0|^8.0
- illuminate/events: ^6.0|^7.0|^8.0
- illuminate/notifications: ^6.0|^7.0|^8.0
- illuminate/support: ^6.0|^7.0|^8.0
Requires (Dev)
- mockery/mockery: ^1.4
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-24 22:25:21 UTC
README
此包使得使用Laravel通过Apple Push (APN)发送通知变得简单。
内容
安装
使用Composer安装此包
composer require laravel-notification-channels/apn
设置APN服务
在开始使用APN服务之前,请先在您的应用中启用推送通知。然后在证书、标识符和配置文件下创建一个APNS密钥以生成密钥ID和.p8文件。
收集您的密钥ID,以及您的团队ID(显示在苹果开发者页面右上角)和应用程序包ID,并在config/broadcasting.php中进行必要的配置。
'connections' => [ 'apn' => [ 'key_id' => env('APN_KEY_ID'), 'team_id' => env('APN_TEAM_ID'), 'app_bundle_id' => env('APN_BUNDLE_ID'), 'private_key_content' => env('APN_PRIVATE_KEY'), 'production' => env('APN_PRODUCTION', true), ], ],
有关可以提供给客户端的参数的更多信息,请参阅pushok 文档 - 例如,您还可以使用 private_key_path 和 private_key_secret。
用法
现在,您可以通过创建一个ApnMessage来向APN发送消息
use NotificationChannels\Apn\ApnChannel; use NotificationChannels\Apn\ApnMessage; use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return [ApnChannel::class]; } public function toApn($notifiable) { return ApnMessage::create() ->badge(1) ->title('Account approved') ->body("Your {$notifiable->service} account was approved!"); } }
有关创建消息时可用方法的更多信息,请参阅ApnMessage 源代码。
在您的notifiable模型中,请确保包含一个routeNotificationForApn()方法,该方法返回一个或多个令牌。
public function routeNotificationForApn() { return $this->apn_token; }
按消息配置
如果您需要为消息提供自定义配置,可以提供一个Pushok客户端的实例,它将替换默认客户端。
$customClient = new Pushok\Client(Pushok\AuthProvider\Token::create($options)); return ApnMessage::create() ->title('Account approved') ->body("Your {$notifiable->service} account was approved!") ->via($customClient)
VoIP推送通知
发送VoIP推送通知与发送常规消息非常相似。您只需使用ApnVoipChannel通道和ApnVoipMessage(它具有与常规ApnMessage相同的API)。
use NotificationChannels\Apn\ApnVoipChannel; use NotificationChannels\Apn\ApnVoipMessage; use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return [ApnVoipChannel::class]; } public function toApnVoip($notifiable) { return ApnVoipMessage::create() ->badge(1); } }
在您的notifiable模型中,请确保包含一个routeNotificationForApnVoip()方法,该方法返回一个或多个令牌。
public function routeNotificationForApnVoip() { return $this->apn_voip_token; }
变更日志
请参阅变更日志以获取最近更改的更多信息。
测试
$ composer test
安全
如果您发现任何安全相关的问题,请通过电子邮件info@fruitcake.nl报告,而不是使用问题跟踪器。
贡献
请参阅贡献指南以获取详细信息。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。