PHPackages                             uzdevid/yii2-fcm - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. uzdevid/yii2-fcm

ActiveYii2-extension[Mail &amp; Notifications](/categories/mail)

uzdevid/yii2-fcm
================

Yii2 frameworki uchun Firebase Cloud Messaging orqali push xabar yuborish va veb saytda qabul qilish uchun kengaytma.

1.2.0(3y ago)41601MITPHP

Since Apr 23Pushed 3y agoCompare

[ Source](https://github.com/uzdevid/yii2-fcm)[ Packagist](https://packagist.org/packages/uzdevid/yii2-fcm)[ RSS](/packages/uzdevid-yii2-fcm/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (4)Used By (1)

Yii2 Firebase Cloud Messaging
=============================

[](#yii2-firebase-cloud-messaging)

Yii2 frameworki uchun [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging) orqali push xabar yuborish va veb saytda qabul qilish uchun kengaytma.

> **Eslatma:** Ushbu kengaytma, Cloud Messaging API (Legacy) dan foydalanadi.

Avvalam bor [firebase](https://firebase.google.com) saytidan ro'yhatdan o'tishingiz va loyiha yaratishingiz lozim. So'ng, yangi loyihangizning sozlamalaridan "Cloud Messaging" bo'limiga kirib, Cloud Messaging API (Legacy) ni faollashtirish kerak bo'ladi.

Faollashtirganingizdan so'ng `Server key` beriladi. Ushbu `Key`ni keyinroq config/web.php fayliga yozish kerak bo'ladi.

---

O'rnatish
---------

[](#ornatish)

```
composer require uzdevid/yii2-fcm
```

yoki

```
php composer.phar require uzdevid/yii2-fcm
```

yoki `composer.json` fayliga ushbu qatorni qo'shing

```
"uzdevid/yii2-fcm": "*"
```

---

Sozlash
-------

[](#sozlash)

config/web.php

```
return [
    // ...
    'components' => [
        // ...
        'notifier' => [
            'class' => 'uzdevid\fcm\Notifier',
            'serverKey' => '{serverKey}', // Cloud Messaging API (Legacy) ni faollashtirganingizdan so'ng, "Server key" beriladi.
        ],
        // ...
    ],
    // ...
]
```

Push habar yuborish
-------------------

[](#push-habar-yuborish)

```
$token = "frYfozsx0K7e..."; // Push habar qabul qiluvchi qurilmaning tokeni
$notification = [
    'title' => 'Salom, dunyo!',
    'body' => 'Bu birinchi push habarim',
    'data' => [
        // qo'shimcha ma'lumotlar
    ]
];

$params = [
    // qo'shimcha parametrlar (majburiy emas)
];

Yii::app()->notifier->notify($token, $notification, $params);
```

> **Eslatma:** Push habar qabul qiluvchi qurilmaning tokenini mijoz (veb, mobil, ...) ilovalari serverga yuborishi kerak bo'ladi.

> **Eslatma:** Yuqorida foydalanilgan `notify()` metodida xatolik yuz bersa `Exception` va `BadRequestHttpException` istisnolarini larni qaytarishi mumkin.

Shular bilan server tomonidan qilinadigan ishlar tugadi.

---

Veb saytda push habar qabul qilish
----------------------------------

[](#veb-saytda-push-habar-qabul-qilish)

> **Eslatma:** Push habarlarni qabul qilish va uni ustida qandaydir amal bajarish faqat mijoz tarafida amalga oshiriladi. Hozirgi holatda mijoz bu veb sayt.

> **Eslatma:** Push habarlar foydalanuvchiga ko'rsatilishi uchun Operatsion tizim (Windows, Android, ...) brauzerga ruxsat bergan bo'lishi va brauzer ham veb saytga ruxsat bergan bo'lishi hamda veb sayt `https` holatida ishlashi shart.

Firebase loyihangizning bosh sahifasida veb ilova yaratishingiz lozim. Ilova yaratilganidan so'ng, Sizga mijoz tarafni sozlash uchun kerakli ma'lumotlar beriladi.

### 1. Sozlash

[](#1-sozlash)

Yuqorida berilgan ma'lumotlarni `config/params.php` fayliga yozishingiz kerak.

```
return [
    // ...
    'fcm' => [
        'apiKey' => '{apiKey}',
        'authDomain' => '{authDomain}',
        'databaseURL' => '{databaseURL}',
        'projectId' => '{projectId}',
        'storageBucket' => '{storageBucket}',
        'messagingSenderId' => '{messagingSenderId}',
        'appId' => '{appId}',
        'measurementId' => '{measurementId}',
        'vapidKey' => '{vapidKey}',
    ],
    // ...
];
```

yoki `` tegi ichiga quyidagi konstantani yozishingiz kerak.

```
const firebaseConfig = {
    apiKey: "{apiKey}",
    authDomain: "{authDomain}",
    databaseURL: "{databaseURL}",
    projectId: "{projectId}",
    storageBucket: "{storageBucket}",
    messagingSenderId: "{messagingSenderId}",
    appId: "{appId}",
    measurementId: "{measurementId}",
    vapidKey: "{vapidKey}"
};
```

> **Eslatma:** `vapidKey` parametrini olish uchun Web Push Certificate yaratishingiz kerak bo'ladi. Web Push Certificates (Project settings/Cloud Messaging/Web configuration) bo'limida yaratib olishingiz mumkin.

---

### 2. Fayllarni ulash

[](#2-fayllarni-ulash)

`layouts/main.php` - faylingizga (yoki boshqa umumiy layout fayliga) ushbu qatorni qo'shing. Ushbu qator sahifaga kerakli bo'lgan js fayllarini ulaydi.

```
\uzdevid\fcm\FcmAsset::register($this);
```

### 3. Qurilma tokenini qabul qilish va serverga yuborish

[](#3-qurilma-tokenini-qabul-qilish-va-serverga-yuborish)

`` tegi ichiga quyidagi javascript funksiyani yarating va serverga yuborish uchun kodni yozing. Ushbu funksiya qurilma tokeni qabul qilinganda kengaytma tomonidan ishga tushuriladi

```
function saveToken(token) {
    // serverga yuborish uchun kodni yozing
}
```

### 4. Push habarni sahifada qabul qilish

[](#4-push-habarni-sahifada-qabul-qilish)

`` tegi ichiga quyidagi javascript kodni yozing. Ushbu funksiya yangi push habar kelganida kengaytma tomonidan ishga tushuriladi. `payload` - serverdan yuborilgan ma'lumotlar

```
function onNotify(payload) {
    // habarni foydalanuvchiga ko'rsatish, yoki boshqa amallarni bajarish uchun kodni yozing
}
```

`onNotify()` funksiyasi foydalanuvchi veb sahifada faol bo'lgan vaqti kelgan push habarni ko'rsatish uchun kerak bo'ladi.

### 5. Brauzer faol bo'lmagan vaqti push habarlarni qabul qilish

[](#5-brauzer-faol-bolmagan-vaqti-push-habarlarni-qabul-qilish)

`web` papkasi ichiga `firebase-messaging-sw.js` faylini yarating va quyidagi kodni yozing.

web/firebase-messaging-sw.js

```
importScripts("https://www.gstatic.com/firebasejs/9.1.3/firebase-app-compat.js");
importScripts("https://www.gstatic.com/firebasejs/9.1.3/firebase-messaging-compat.js");

firebase.initializeApp({
    apiKey: "{apiKey}",
    authDomain: "{authDomain}",
    projectId: "{projectId}",
    storageBucket: "{storageBucket}",
    messagingSenderId: "{messagingSenderId}",
    appId: "{appId}",
    measurementId: "{measurementId}",
    vapidKey: "{vapidKey}"
});

const messaging = firebase.messaging();
```

Ushbu kod faylni brauzeringiz `Service worker` sifatida faollashtiradi. Tekshirib ko'rishingiz uchun `ctrl+shift+i` tugmalarini bosing va `Application/Service workers` bo'limiga o'ting.

---

### 6. Tekshirish

[](#6-tekshirish)

Barchasini sozlab bo'lganingizdan so'ng, server yoki curl, postman yoki boshqa yo'llar orqali push habar yuborib tekshirib ko'rishingiz mumkin.

```
curl --location 'https://fcm.googleapis.com/fcm/send' \
--header 'Authorization: key={serverKey}' \
--header 'Content-Type: application/json' \
--data '{
    "to": "{token}",
    "notification": {
        "title": "test",
        "body": "test",
        "data": {}
    }
}'
```

---

- Taklif va shikoyatlar uchun:
- Moddiy taraflama qo'llab quvvatlash uchun:

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~9 days

Total

3

Last Release

1096d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/104216283?v=4)[UzDevid](/maintainers/uzdevid)[@uzdevid](https://github.com/uzdevid)

---

Top Contributors

[![DikoIbragimov](https://avatars.githubusercontent.com/u/167644693?v=4)](https://github.com/DikoIbragimov "DikoIbragimov (12 commits)")

---

Tags

firebaseFCMyii2extensionpush notificationscloud-messaginguzdevid

### Embed Badge

![Health badge](/badges/uzdevid-yii2-fcm/health.svg)

```
[![Health](https://phpackages.com/badges/uzdevid-yii2-fcm/health.svg)](https://phpackages.com/packages/uzdevid-yii2-fcm)
```

###  Alternatives

[nterms/yii2-mailqueue

Email queue component for yii2 that works with yii2-swiftmailer.

87129.2k2](/packages/nterms-yii2-mailqueue)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
