risingsun / laravel-notification-channel-apn
Apple APN 推送通知通道
Requires
- php: ^7.0|^8.0
- edamov/pushok: ^0.12
- illuminate/cache: ^5.5|^6.0|^7.0|^8.0
- illuminate/config: ^5.5|^6.0|^7.0|^8.0
- illuminate/events: ^5.5|^6.0|^7.0|^8.0
- illuminate/notifications: ^5.5|^6.0|^7.0|^8.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-11 14:43:28 UTC
README
此包使您能够使用 Laravel 通过 Apple 推送 (APN) 发送通知变得简单。
内容
安装
使用 Composer 安装此包
composer require laravel-notification-channels/apn
设置 APN 服务
在开始使用 APN 服务之前,请先在您的应用中启用推送通知。然后,在证书、标识符和配置文件下创建一个 APNS 密钥以生成密钥 ID 和 .p8 文件。
收集您的密钥 ID,以及您的团队 ID(在 Apple 开发者页面右上角显示)和应用程序包 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)。有关更多信息,请参阅 许可文件。