WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Laravel
システム開発
[Laravel]FCMのPush通知の送信
システム開発担当のTFです。
やり方
- Firebaseにプロジェクトを登録し、秘密鍵を生成し取得する
- Google API Client のライブラリを入れる
- 秘密鍵の情報を、.envからconfig設定を行う
- 送信したいメッセージに合わせて整形し、プッシュ通知の処理を作成
参考
サンプル
FCM
プロジェクト
プロジェクトの設定
サービスアカウント
Firebase Admin SDK
新しい秘密鍵を生成
.json
のファイルがダウンロードされる
// Google API Client
composer require google/apiclient:^2.15.0
// エラー等で落ちた場合下記でする( 時間かかる )
// タイムアウト変更
composer config --global process-timeout 2000
composer require google/apiclient:^2.15.0 --prefer-source --ignore-platform-reqs
# FCM認証情報( 取得した秘密鍵内の情報を設定する )
FCM_TYPE=""
FCM_PROJECT_ID=""
FCM_PROJECT_NAME=""
FCM_PRIVATE_KEY_ID=""
FCM_PRIVATE_KEY=""
FCM_CLIENT_EMAIL=""
FCM_CLIENT_ID=""
FCM_AUTH_URI=""
FCM_TOKEN_URI=""
FCM_AUTH_PROVIDER_X509_CERT_URL=""
FCM_CLIENT_X509_CERT_URL=""
# FCMエンドポイント
FCM_PUSH_API="https://fcm.googleapis.com/v1/projects/${FCM_PROJECT_NAME}/messages:send"
<?php
return [
'auth' => [
'type' => env('FCM_TYPE'),
'project_id' => env('FCM_PROJECT_ID'),
'private_key_id' => env('FCM_PRIVATE_KEY_ID'),
'private_key' => env('FCM_PRIVATE_KEY'),
'client_email' => env('FCM_CLIENT_EMAIL'),
'client_id' => env('FCM_CLIENT_ID'),
'auth_uri' => env('FCM_AUTH_URI'),
'token_uri' => env('FCM_TOKEN_URI'),
'auth_provider_x509_cert_url' => env('FCM_AUTH_PROVIDER_X509_CERT_URL'),
'client_x509_cert_url' => env('FCM_CLIENT_X509_CERT_URL'),
],
'push_api' => env('FCM_PUSH_API'),
];
<?php
namespace App\Http\Controllers;
use Google_Client;
class TestController extends Controller
{
public function sendPush($token, $title, $body, $kind, $id)
{
// Google API Client
$googleClient = new Google_Client;
$googleClient->useApplicationDefaultCredentials();
$googleClient->setAuthConfig( config('firebase.auth') );
$googleClient->addScope( 'https://www.googleapis.com/auth/firebase.messaging' );
// FCM認証
$httpClient = $googleClient->authorize();
// メッセージ
$data = [
'message' => [
'token' => $token,
'notification' => [
'title' => $title,
'body' => $body,
],
'data' => [
'title' => $title,
'body' => $body,
'kind' => $kind,
'id' => $id,
],
]
];
// FCMにPOST
$httpClient->post( config('firebase.push_api'), ['json' => $data] );
}
}