Apple APN 推送通知通道
Requires
- php: ^8.1
- edamov/pushok: ^0.16
- illuminate/cache: ^9.0|^10.0|^11.0
- illuminate/config: ^9.0|^10.0|^11.0
- illuminate/events: ^9.0|^10.0|^11.0
- illuminate/notifications: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- nesbot/carbon: ^2.66|^3.0
Requires (Dev)
- mockery/mockery: ^1.5.1
- phpunit/phpunit: ^10.0
- squizlabs/php_codesniffer: ^3.5
- v5.4.0
- v5.3.0
- v5.2.0
- v5.1.0
- v5.0.0
- v4.4.0
- v4.3.0
- v4.2.0
- v4.1.0
- v4.0.0
- v3.8.0
- v3.7.0
- v3.6.0
- v3.5.0
- 3.4.0
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.1
- v3.0.0
- v2.3.0
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.0
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- 0.x-dev
- v0.6.0
- v0.5.0
- v0.4.0
- 0.3.2
- v0.3.1
- v0.3.0
- dev-master / 0.2.x-dev
- v0.2.1
- v0.2.0
- 0.1.1
- v0.1.0
- dev-webocoders-master
- dev-KoIIIeY-KoIIIeY-patch-1
This package is auto-updated.
Last update: 2024-09-13 09:47:39 UTC
README
此包使您能够使用 Laravel 通过 Apple Push (APN) 发送通知变得容易。
内容
安装
使用 Composer 安装此包
composer require laravel-notification-channels/apn
设置 APN 服务
在开始使用 APN 服务之前,请在您的应用中启用推送通知。然后在证书、标识符和配置文件下创建 APNS 密钥以生成密钥 ID 和 .p8 文件。
收集您的密钥 ID、团队 ID(显示在 Apple 开发者页面右上角)以及应用包标识符,并在 config/broadcasting.php
中按需进行配置。
JWT 令牌认证
'connections' => [ 'apn' => [ 'key_id' => env('APN_KEY_ID'), 'team_id' => env('APN_TEAM_ID'), 'app_bundle_id' => env('APN_BUNDLE_ID'), // Enable either `private_key_path` or `private_key_content` depending on your environment // 'private_key_path' => env('APN_PRIVATE_KEY'), 'private_key_content' => env('APN_PRIVATE_KEY'), 'private_key_secret' => env('APN_PRIVATE_SECRET'), 'production' => env('APN_PRODUCTION', true), ], ],
请参阅建立基于令牌的 APNs 连接,它将指导您如何获取必要参数的值。
使用证书 (.pem) 认证
'connections' => [ 'apn' => [ 'app_bundle_id' => env('APN_BUNDLE_ID'), 'certificate_path' => env('APN_CERTIFICATE_PATH'), 'certificate_secret' => env('APN_CERTIFICATE_SECRET'), 'production' => env('APN_PRODUCTION', true), ], ],
如果您使用基于证书的 APNs 进行连接,则不需要 key_id
和 team_id
。您可以参考使用证书发送推送通知
请参阅建立基于证书的 APNs 连接,它将指导您如何获取必要参数的值。
有关客户端可以提供的参数的更多信息,请参阅pushok
文档。
用法
现在,您可以通过创建一个 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)。有关更多信息,请参阅 许可文件。