kawankoding / laravel-fcm
一个用于在 Laravel 应用程序中发送 Firebase 通知的包
Requires
- php: ^5.6|^7.0|^8.0|^8.1|^8.2
- illuminate/support: ^5.1|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
README
一个简单的包,帮助您使用 Laravel 应用程序发送 Firebase 通知
安装
您可以通过 composer 获取此包
$ composer require kawankoding/laravel-fcm "^0.2.0"
Laravel
您必须注册服务提供者
// config/app.php 'Providers' => [ // ... Kawankoding\Fcm\FcmServiceProvider::class, ]
如果您想使用外观,也必须安装它
// config/app.php 'aliases' => [ // ... 'Fcm' => Kawankoding\Fcm\FcmFacade::class, ];
接下来,您必须发布配置文件以定义您的 FCM 服务器密钥
php artisan vendor:publish --provider="Kawankoding\Fcm\FcmServiceProvider"
这是已发布文件的正文
return [ /** * Set your FCM Server Key * Change to yours */ 'server_key' => env('FCM_SERVER_KEY', ''), ];
Lumen
将以下服务提供者添加到 bootstrap/app.php
文件中
$app->register(Kawankoding\Fcm\FcmServiceProvider::class);
同时将配置文件 laravel-fcm.php 复制到 config/laravel-fcm.php
将配置添加到 bootstrap/app.php
文件中 重要: 这需要在注册服务提供者之前完成
$app->configure('laravel-fcm'); ... $app->register(Kawankoding\Fcm\FcmServiceProvider::class);
在 .env
文件中设置您的 FCM 服务器密钥
APP_NAME="Laravel"
# ...
FCM_SERVER_KEY=putYourKeyHere
方法参考
-
->to()
-
->toTopic()
-
->data()
-
->notification()
-
->priority()
-
->timeToLive()
-
->enableResponseLog()
-
->send()
使用方法
如果您只想发送带有通知参数的 FCM,以下是一个仅使用数据参数发送 FCM 的示例
$recipients = [ 'clKMv.......', 'GxQQW.......', ]; fcm() ->to($recipients) ->priority('high') ->timeToLive(0) ->data([ 'title' => 'Test FCM', 'body' => 'This is a test of FCM', ]) ->send();
注意:默认情况下,Firebase 服务器将在 4 周内排队您的通知。您可以通过设置 ->timeToLive(value_in_seconds)
来更改此行为。例如,上面的代码片段 "->timeToLive(0)" 将跳过队列,目标设备(例如,android)必须在通知到达时在线,否则目标设备将不会收到通知。
如果您想向主题发送 FCM,请使用方法 toTopic($topic) 而不是 to()
fcm() ->toTopic($topic) // $topic must an string (topic name) ->priority('normal') ->timeToLive(0) ->notification([ 'title' => 'Test FCM', 'body' => 'This is a test of FCM', ]) ->send();
如果您只想发送带有通知参数的 FCM,以下是一个仅使用通知参数发送 FCM 的示例
fcm() ->to($recipients) // $recipients must an array ->priority('high') ->timeToLive(0) ->notification([ 'title' => 'Test FCM', 'body' => 'This is a test of FCM', ]) ->send();
如果您想同时发送带有数据和通知参数的 FCM,以下是一个同时使用数据和通知参数发送 FCM 的示例
fcm() ->to($recipients) // $recipients must an array ->priority('normal') ->timeToLive(0) ->data([ 'title' => 'Test FCM', 'body' => 'This is a test of FCM', ]) ->notification([ 'title' => 'Test FCM', 'body' => 'This is a test of FCM', ]) ->send();
日志记录
要查看 Firebase 的原始响应,请在调用 send()
方法之前调用 enableResponseLog()
方法。
fcm() ->to($recipients) // ... ->enableResponseLog() ->send();
然后您可以在文件 storage/logs/laravel.log
中检查响应日志。