RFMCで携帯電話にララベルから通知を送る

2167 ワード

最初に新しいLaravelプロジェクトを作成し、このvarを追加します.プロジェクトのenvファイルFCM_SERVER_KEY=FIRE_BASE_SERVER_KEY新しいコントローラを作るNotificationController
  public function send_message(Request $request)
   {
     // Call Your FCM Service Class
   }
今ラーラヴェルで新しいサービスを作成するapp/Services/FCMService.php新しい関数を作成します
 <?php
 namespace App\Services;

 use App\Models\User;

 class FCMService
 {

    // send notification to user using firebase cloud messaging
    public static function send_notification($user, $title, $body)
    {
        $user = User::where('id', $user)->first();
        $url = "https://fcm.googleapis.com/fcm/send";
        $server_key = env('FCM_SERVER_KEY');
        $headers = [
            'Authorization' => 'key=' . $server_key,
            'Content-Type' => 'application/json',
        ];
        if (!$user) {
            return response()->json([
                'status' => 'error',
                'message' => 'User not found',
            ], 404);
        }

        // send via GuzzleHttp
        $client = new \GuzzleHttp\Client();
        $response = $client->post($url, [
            'headers' => $headers,
            'json' => [
                'to' => $user->device_token, // user's device token for fcm
                'data' => [
                    'title' => $title,
                    'body' => $body,
                ],
            ],
        ]);

        return $response->getBody();

    }

}
ユーザーテーブルに新しい列を追加device_token ユーザーが携帯電話から新しいアカウントを作成し、ユーザーテーブルからユーザーデバイスに通知を送信するために使用するときに新しいデバイストークンを格納します.
今、我々はfcmserviceに要求を送信することができます
public function send_message(Request $request)
{
  // Call Your FCM Service Class
  \App\Services\FCMService::send_notification($request->user_id, $request->title, $request->body);

return redirect()->back();
}