smartervision / laravel-fcm-notification
Laravel FCM (Firebase Cloud Messaging) 通知通道
Requires
- php: >=5.6.4
- google/apiclient: ^2.0
- guzzlehttp/guzzle: ^6.2|^7.0
- illuminate/config: ~5.3|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/notifications: ~5.3|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/queue: ~5.3|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ~5.3|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- mockery/mockery: ~1.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-24 15:58:59 UTC
README
Laravel FCM (Firebase Cloud Messaging) 通知通道
使用此包通过 Laravel 向 Firebase Cloud Messaging 发送推送通知。需要 Laravel 5.5+。
此包仅与 Legacy HTTP Server Protocol 兼容
安装
此包可以通过 Composer 安装。
composer require benwilkins/laravel-fcm-notification
如果要在 在 使用 Artisan 创建通知 在您的通知的 向您的通知添加方法 当向特定设备发送时,请确保您的可通知实体定义了 当向一个主题发送时,您可以在通知的 或者,当根据条件发送时 您可以使用 要处理任何 Laravel 通知通道响应,请查看 Laravel Notification Events 此通道返回一个 JSON 数组响应 请参阅 FCM Legacy HTTP Server Protocol 中的响应解析文档。 MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。// config/app.php
'providers' => [
...
Benwilkins\FCM\FcmNotificationServiceProvider::class,
...
];
config/services.php
中添加您的 Firebase API 密钥。return [
...
...
/*
* Add the Firebase API key
*/
'fcm' => [
'key' => env('FCM_SECRET_KEY')
]
];
示例用法
php artisan make:notification SomeNotification
public function via($notifiable)
方法中返回 [fcm]
public function via($notifiable)
{
return ['fcm'];
}
public function toFcm($notifiable)
,并返回 FcmMessage
实例use Benwilkins\FCM\FcmMessage;
...
public function toFcm($notifiable)
{
$message = new FcmMessage();
$message->content([
'title' => 'Foo',
'body' => 'Bar',
'sound' => '', // Optional
'icon' => '', // Optional
'click_action' => '' // Optional
])->data([
'param1' => 'baz' // Optional
])->priority(FcmMessage::PRIORITY_HIGH); // Optional - Default is 'normal'.
return $message;
}
routeNotificationForFcm
方法/**
* Route notifications for the FCM channel.
*
* @param \Illuminate\Notifications\Notification $notification
* @return string
*/
public function routeNotificationForFcm($notification)
{
return $this->device_token;
}
toFcm
方法中定义它use Benwilkins\FCM\FcmMessage;
...
public function toFcm($notifiable)
{
$message = new FcmMessage();
$message->to('the-topic', $recipientIsTopic = true)
->content([...])
->data([...]);
return $message;
}
use Benwilkins\FCM\FcmMessage;
...
public function toFcm($notifiable)
{
$message = new FcmMessage();
$message->contentAvailable(true)
->priority('high')
->condition("'user_".$notifiable->id."' in topics")
->data([...]);
return $message;
}
setHeaders()
提供可选的标题或覆盖请求标题use Benwilkins\FCM\FcmMessage;
...
public function toFcm($notifiable)
{
$message = new FcmMessage();
$message->setHeaders([
'project_id' => "48542497347" // FCM sender_id
])->content([
'title' => 'Foo',
'body' => 'Bar',
'sound' => '', // Optional
'icon' => '', // Optional
'click_action' => '' // Optional
])->data([
'param1' => 'baz' // Optional
])->priority(FcmMessage::PRIORITY_HIGH); // Optional - Default is 'normal'.
return $message;
}
解析响应
{
"multicast_id": "number",
"success": "number",
"failure": "number",
"canonical_ids": "number",
"results": "array"
}
许可