PHPackages                             nimblephp/firebase - 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. nimblephp/firebase

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

nimblephp/firebase
==================

Standalone Firebase push notifications module for NimblePHP - FCM sending with device registry and delivery queue processed by cron

02↑2900%PHP

Since Jul 1Pushed yesterdayCompare

[ Source](https://github.com/NimbleMVC/Firebase)[ Packagist](https://packagist.org/packages/nimblephp/firebase)[ RSS](/packages/nimblephp-firebase/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

nimblephp/firebase
==================

[](#nimblephpfirebase)

Samodzielny moduł powiadomień push dla NimblePHP oparty na Firebase Cloud Messaging (FCM HTTP v1). Moduł trzyma własny stan (rejestr urządzeń + kolejka wysyłki), a wysyłkę realizuje worker cron — nie wymaga żadnego innego modułu poza `framework` i `migrations`.

Instalacja
----------

[](#instalacja)

```
composer require nimblephp/firebase
```

Migracje (`module_firebase_device`, `module_firebase_delivery`) uruchamiają się przez `Module::onUpdate()` (grupa `module_firebase`) podczas aktualizacji aplikacji.

Konfiguracja (env)
------------------

[](#konfiguracja-env)

Konto serwisowe Firebase Admin SDK — plik albo wartości inline:

ZmiennaZnaczenie`FCM_CREDENTIALS_PATH`ścieżka do `firebase-adminsdk.json` (domyślnie `/run/secrets/firebase-adminsdk.json`)`FCM_PROJECT_ID`id projektu (gdy bez pliku)`FCM_CLIENT_EMAIL`client\_email konta serwisowego`FCM_PRIVATE_KEY`private\_key konta serwisowegoUżycie
------

[](#użycie)

### Rejestracja urządzenia (z kontrolera)

[](#rejestracja-urządzenia-z-kontrolera)

```
$device = $this->loadModel(\NimblePHP\Firebase\ModuleFirebaseDeviceModel::class);

$deviceId = $device->register([
    'installation_id' => $installationId, // unikalny per instalacja
    'token' => $fcmToken,
    'platform' => 'android',
]);
```

`register()` robi upsert po `installation_id` (aktualizuje token, reaktywuje). Powiązanie urządzenia z użytkownikiem to zadanie aplikacji — trzymaj mapowanie user ↔ `device_id` (lub `installation_id`) we własnej tabeli. Moduł celowo nie zna pojęcia konta.

### Kolejkowanie powiadomienia

[](#kolejkowanie-powiadomienia)

```
$delivery = $this->loadModel(\NimblePHP\Firebase\ModuleFirebaseDeliveryModel::class);

// pojedyncze urządzenie
$delivery->enqueue($deviceId, 'Tytuł', 'Treść', ['key' => 'value'], priority: 2);

// wiele urządzeń naraz (id urządzeń ustalasz po swojej stronie)
$service = new \NimblePHP\Firebase\PushService();
$service->enqueueForDevices($delivery, [$deviceId1, $deviceId2], 'Tytuł', 'Treść');
```

### Wysyłka (dwustopniowy cron)

[](#wysyłka-dwustopniowy-cron)

Wysyłka jest rozdzielona, żeby wolne wywołania HTTP do FCM nie blokowały kolejki:

1. **Dispatcher** `#[Cron('* * * * *')]` (`dispatchQueueCron`) — co minutę zmienia wpisy `new → queued` i dorzuca **jedno lekkie zadanie na dostarczenie**(`Cron::addJob`). Same INSERT-y, więc nawet duży backlog rozrzuca się szybko.
2. **Zadanie wysyłki** (`sendDeliveryJob(id)`) — wykonuje pojedyncze wywołanie FCM, ustawia status (`sent`/`failed`/`invalid`) i deaktywuje urządzenie z nieważnym tokenem. Krótkie, nie przetrzymuje kolejki.

Statusy dostarczenia: `new → queued → sent | failed | invalid`.

### Wysyłka bezpośrednia (bez kolejki)

[](#wysyłka-bezpośrednia-bez-kolejki)

```
(new \NimblePHP\Firebase\FcmService())->sendToDevice(
    $fcmToken,
    ['title' => 'Tytuł', 'body' => 'Treść', 'priority' => 2],
    ['key' => 'value']
);
```

Klasy
-----

[](#klasy)

- `FcmService` — transport FCM v1 (OAuth2 JWT RS256, bez zależności zewnętrznych)
- `ModuleFirebaseDeviceModel` — rejestr urządzeń (`register`, `getByInstallationId`, `deactivate`) + cron czyszczący
- `ModuleFirebaseDeliveryModel` — kolejka wysyłki (`enqueue`) + dispatcher cron + `sendDeliveryJob`
- `PushService` — fan-out po liście urządzeń + dispatch/wysyłka kolejki
- `FcmDeliveryException` / `FirebaseException`

###  Health Score

21

↑

LowBetter than 18% of packages

Maintenance65

Regular maintenance activity

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/b71301619d71d2798d3a84f23de616ac1f1c185ab72e4f03e925cff169b03a0d?d=identicon)[krzysztofzylka](/maintainers/krzysztofzylka)

---

Top Contributors

[![krzysztofzylka](https://avatars.githubusercontent.com/u/41385342?v=4)](https://github.com/krzysztofzylka "krzysztofzylka (1 commits)")

### Embed Badge

![Health badge](/badges/nimblephp-firebase/health.svg)

```
[![Health](https://phpackages.com/badges/nimblephp-firebase/health.svg)](https://phpackages.com/packages/nimblephp-firebase)
```

###  Alternatives

[sarfraznawaz2005/noty

Laravel package to incorporate noty flash notifications into laravel.

324.5k](/packages/sarfraznawaz2005-noty)

PHPackages © 2026

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