irice / yii2-fcm-manager
FCM Notification manager for Yii2
Installs: 309
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- kreait/firebase-php: ^4.32
- npm-asset/gasparesganga-jquery-loading-overlay: ^2.1
- opis/closure: ^3.4
- yiisoft/yii2: ~2.0.14
- yiisoft/yii2-bootstrap: ~2.0.0
- yiisoft/yii2-queue: ^2.3
Requires (Dev)
- codeception/base: ~2.3.0
- codeception/specify: ~0.4.6
- codeception/verify: ~0.4.0
- symfony/browser-kit: >=2.7 <=4.2.4
- yiisoft/yii2-debug: ~2.1.0
- yiisoft/yii2-faker: ~2.0.0
- yiisoft/yii2-gii: ~2.1.0
This package is auto-updated.
Last update: 2025-07-22 00:06:33 UTC
README
Installation
Composer Install
composer require irice/yii2-fcm-manager
Database Migration
cofnig/console.php
return [
'controllerMap' => [
'migrate' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationPath' => null,
'migrationNamespaces' => [
'fcm\manager\migrations',
...
],
],
],
...
];
And run migrate command
php yii migrate
Configuration
config/web.php
return [
'modules' => [
'fcm' => [
'class' => 'fcm\manager\Module',
...
],
...
],
...
'components' => [
'fcm' => [
'class' => 'fcm\manager\components\Connection',
// you can download config file on firebase console 'https://console.firebase.google.com/u/1/project/<your_project>/settings/serviceaccounts/adminsdk'
'configPath' => __DIR__ . '/<your_project>-firebase-adminsdk.json',
],
...
],
...
];
Basic Usage
Register device to database
$result = Yii::$app->fcm->deviceRegisterClass::registerDevice(
'<registed_device_token>', // or ['<registed_device_token1>', '<registed_device_token2>']
<user_id> // user identity id
);
Subscribe device to Topic
$result = Yii::$app->fcm->subscribeToTopic(
'<topic-name>',
'<registed_device_token>' // or ['<registed_device_token1>', '<registed_device_token2>']
);
Unsubscribe device from Topic
$result = Yii::$app->fcm->unSubscribeFromTopic(
'<topic-name>',
'<registed_device_token>' // or ['<registed_device_token1>', '<registed_device_token2>']
);
Send message to Topic
$result = Yii::$app->fcm->sendToTopic(
'<topic-name>',
'<message title>',
'<message content>',
'<message image url>' // optional
);
Send message to Device
$result = Yii::$app->fcm->sendToTokens(
'<registed_device_token>' // or ['<registed_device_token1>', '<registed_device_token2>']
'<message title>',
'<message content>',
'<message image url>' // optional
);
Schedule Send Message
The feature implement by Yii2-queue extension.
config/console.php (config/web.php)
'components' => [
'queue' => [
'class' => 'yii\queue\db\Queue',
'serializer' => 'fcm\manager\components\PhpSerializer',
'deleteReleased' => false,
'as log' => 'yii\queue\LogBehavior',
],
'mutex' => [
'class' => 'yii\mutex\PgsqlMutex',
],
'fcm' => [
'class' => 'fcm\manager\components\Connection',
'configPath' => __DIR__ . '/<your_project>-firebase-adminsdk.json',
],
...
]
Schedule a message to Topic
$job = new \fcm\manager\jobs\SendJob([
'notification' => [
'title' => '<message-title>',
'body' => '<message-body>',
'target' => [
'type' => \fcm\manager\jobs\SendJob::TYPE_TOPIC,
'value' => '<topic-name>',
],
],
]);
$delayTime = strtotime('2019-12-31 00:00:00') - time(); //Send message on specified time.
//$delayTime = strtotime('next Saturday') - time(); //Send message on next weekend.
//$delayTime = 60 * 60 * 24; //Send message after 24 hours.
$queueId = Yii::$app->queue->delay($delayTime)->push($job);
Auto update fcm progress after send
Implement NotificationInterface on custom class
class Notification extends \yii\db\ActiveRecord implements \fcm\manager\models\NotificationInterface
{
...
public function getSuccessStatus()
{
return static::STATUS['SENDED'];
}
public function getFailStatus()
{
return static::STATUS['FAILED'];
}
public function updateStatus($value)
{
$this->status = $value;
return $this->save();
}
}
TODO
Notification GUI Manager
Requirements
Yii2-queue