✨
LaravelでFirebase Cloud MessagingのHTTP v1 APIを使ってプッシュ通知を送信する
Firebase Admin SDK for PHP を使って、LaravelでFirebase Cloud MessagingのHTTP v1 APIを使ってプッシュ通知を送信する方法です。
※クライアント側の実装は省略しています。
バージョン
Laravel: 10.3.2
php: 8.2.4
kreait/firebase-php: 7.1.0
インストール
必要なパッケージをインストールします。
composer require kreait/firebase-php
firebaseのjsonファイルの配置
以下のURLの手順に従って、firebaseのjsonファイルを取得します。
jsonファイルの中身は以下のようになっています。
{
"type": "xxxxx",
"project_id": "xxxxx",
"private_key_id": "xxxxx",
"private_key": "xxxxx",
"client_email": "xxxxx",
"client_id": "xxxxx",
"auth_uri": "xxxxx",
"token_uri": "xxxxx",
"auth_provider_x509_cert_url": "xxxxx",
"client_x509_cert_url": "xxxxx"
}
取得したjsonファイルを、Laravelのプロジェクトのルートディレクトリに配置します。
今回は、firebase.json
という名前で配置したとします。
プッシュ通知を送信するコマンドを作成
今回は通知のサンプルとしてapp/Console/Commands/SendPushCommand.php
にサンプルコマンドを定義します。
php artisan make:command SendPushCommand
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Kreait\Firebase\Factory;
use Kreait\Firebase\Messaging\CloudMessage;
use Kreait\Firebase\Messaging\Notification;
class SendNotificationCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'send_notification {registration_token}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'send sample notification';
/**
* Execute the console command.
*
*/
public function handle()
{
$registrationToken = $this->argument('registration_token');
$factory = (new Factory)->withServiceAccount('firebase.json');
$messaging = $factory->createMessaging();
$notification = Notification::fromArray([
'title' => 'Hello World Title!',
'body' => 'Hello World Body!',
]);
$message = CloudMessage::withTarget('token', $registrationToken)
->withNotification($notification);
$messaging->send($message);
}
}
実行
以下のコマンドを実行します。
引数には、firebaseの登録トークンを指定します。
php artisan send_notification xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
参考
Discussion