Laravel firebase push notification example. We will learn laravel firebase push notification. In this post, I show example of firebase web push notification. This tutorial give firebase web push notification in laravel. Today, I show simple way to firebase push notification in laravel.
We will explain step by step laravel firebase push notification example. Also, we will create example of laravel send push notification firebase. In this example, We step by step to send firebase push notification using laravel.
Google provide free open source send web push notification. Also, You learn example of send firebase push notification using laravel. In this example simple to getting device token of logged in users and send web push notification. Also we will create push notification with laravel app.
Step 1 : Create Firebase Project and App for Firebase Push NotificationIn this step we will login into Firebase Console and create new project for laravel firebase push notification.
Step 2 : Install LaravelIn this step, We will install laravel fresh package firebase push notification using the following command:
composer create-project --prefer-dist laravel/laravel Firebase_Example
Step 3 : Create Laravel AuthIn this step, we will create login system using auth command in laravel, so run below command in your terminal.
composer require laravel/uiphp artisan ui bootstrap --auth // For Generate Auth
npm install // TO Install NPM
npm run dev
Step 4 : Create MigrationIn this step we will to create new migration.
php artisan make:migration add_column_device_token
<?phpuse Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;class AddColumnDeviceToken extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table(‘users’, function (Blueprint $table) {
$table->string(‘device_token’)->nullable();
});
}/** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { // }); }
}
Step 5: Create ModelIn this step, we will add new column device_token in users table as well as model.
<?phpnamespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;class User extends Authenticatable
{
use HasFactory, Notifiable;/** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', 'device_token' ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ];
}
php artisan migrate
Step 6 : Create Route
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\HomeController;Auth::routes();
Route::get(‘/home’, [App\Http\Controllers\HomeController::class, ‘index’])->name(‘home’);
Route::post(‘/save-push-notification-token’, [HomeController::class, ‘savePushNotificationToken’])->name(‘save-push-notification-token’);
Route::post(‘/send-push-notification’, [HomeController::class, ‘sendPushNotification’])->name(‘send.push-notification’);
Step 7: Edit Home ControllerIn this step, We will edit HomeController and added savePushNotificationToken() and sendPushNotification() function. In this controller you require to add server API key , you need to add your server key.
<?phpnamespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;class HomeController extends Controller
{public function __construct() { $this->middleware('auth'); } public function index() { return view('home'); } public function savePushNotificationToken(Request $request) { auth()->user()->update(['device_token'=>$request->token]); return response()->json(['token saved successfully.']); } public function sendPushNotification(Request $request) { $firebaseToken = User::whereNotNull('device_token')->pluck('device_token')->all(); $SERVER_API_KEY = 'Enter_your_serve_key'; $data = [ "registration_ids" => $firebaseToken, "notification" => [ "title" => $request->title, "body" => $request->body, ] ]; $dataString = json_encode($data); $headers = [ 'Authorization: key=' . $SERVER_API_KEY, 'Content-Type: application/json', ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString); $response = curl_exec($ch); dd($response); }
}
Step 8 : Edit Blade FileIn this step, you require to edit on your home.blade.php file and add below code.
@extends('layouts.app')@section(‘content’)
<div class=“container”>
<div class=“row justify-content-center”>
<center><h2>Laravel Firebase Push Notification - web-tuts.com</h2></center>
<div class=“col-md-8”>
<center>
<button id=“btn-nft-enable” onclick=“initFirebaseMessagingRegistration()” class=“btn btn-danger btn-xs btn-flat”>Allow for Notification</button>
</center><br>
<div class=“card”>
<div class=“card-header”>{{ __(‘Dashboard’) }}</div><div class="card-body"> @if (session('status')) <div class="alert alert-success" role="alert"> {{ session('status') }} </div> @endif <form action="{{ route('send.push-notification') }}" method="POST"> @csrf <div class="form-group"> <label>Title</label> <input type="text" class="form-control" name="title"> </div> <div class="form-group"> <label>Body</label> <textarea class="form-control" name="body"></textarea> </div> <button type="submit" class="btn btn-primary">Send Notification</button> </form> </div> </div> </div> </div>
</div>
<script
src=“https://code.jquery.com/jquery-3.4.1.min.js”
integrity=“sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=”
crossorigin=“anonymous”></script>
<script src=“https://www.gstatic.com/firebasejs/8.3.0/firebase-app.js”></script>
<script src=“https://www.gstatic.com/firebasejs/8.3.0/firebase-messaging.js”></script>
<script>
var firebaseConfig = {
apiKey: “XXXX”,
authDomain: “XXXX.firebaseapp.com”,
projectId: “XXXX”,
storageBucket: “XXXX.appspot.com”,
messagingSenderId: “XXXX”,
databaseURL: “https://Your_Project_ID.firebaseio.com”,
appId: “XXXX”
};firebase.initializeApp(firebaseConfig); const messaging = firebase.messaging(); function initFirebaseMessagingRegistration() { messaging .requestPermission() .then(function () { return messaging.getToken({ vapidKey: 'Your_Public_Key' }) }) .then(function(token) { console.log(token); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); $.ajax({ url: '{{ route("save-push-notification-token") }}', type: 'POST', data: { token: token }, dataType: 'JSON', success: function (response) { alert('Token saved successfully.'); }, error: function (err) { console.log('User Chat Token Error'+ err); }, }); }).catch(function (err) { console.log('User Chat Token Error'+ err); }); } messaging.onMessage(function(payload) { const noteTitle = payload.notification.title; const noteOptions = { body: payload.notification.body, icon: payload.notification.icon, }; new Notification(noteTitle, noteOptions); });
</script>
@endsection
Step 9 : Create firebase-messaging-sw.js FileIn this step, we will create firebase-messaging-sw.js in public folder and copy below code.
importScripts('https://www.gstatic.com/firebasejs/8.3.0/firebase-app.js'); importScripts('https://www.gstatic.com/firebasejs/8.3.0/firebase-messaging.js');firebase.initializeApp({ apiKey: "XXXX", authDomain: "XXXX.firebaseapp.com", databaseURL: "https://Your_Project_Id.firebaseio.com", projectId: "XXXX", storageBucket: "XXXX.appspot.com", messagingSenderId: "XXXX", appId: "XXXX" }); const messaging = firebase.messaging(); messaging.setBackgroundMessageHandler(function(payload) { console.log( "[firebase-messaging-sw.js] Received background message ", payload, ); const notificationTitle = "Background Message Title"; const notificationOptions = { body: "Background Message body.", icon: "/itwonders-web-logo.png", }; return self.registration.showNotification( notificationTitle, notificationOptions, );
});
php artisan serve
After enter the following url in your browser.
http://127.0.0.1:8000/home
Output
I hope you understand laravel firebase push notification and it can help you…
The Original Article can be found on web-tuts.com
#laravel #example #laravel8 #firebase