irice / yii2-fcm-manager
FCM Notification manager for Yii2
Installs: 309
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
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-02-21 23:10:19 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