plokko/laravel-firebase 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

plokko/laravel-firebase

最新稳定版本:0.3.1

Composer 安装命令:

composer require plokko/laravel-firebase

包简介

Laravel Firebase integration

README 文档

README

Build Status Packagist Packagist Packagist

Laravel Firebase integration

This package includes:

  • Firebase OAuthV2.0 authentication, with token caching
  • Centralized ServiceAccount credential management
  • Firebase FCM Http V1 API and Firebase Realtime database REST api via OAuth authentication
  • Firebase JWT token generator (via php-jwt)
  • Automatic sync for Eloquent models to Firebase Realtime db
  • Automatic sync triggers on related model changes

Installation

Install via composer

composer require plokko/laravel-firebase

The package will be auto registered in laravel >=5.5; If you use laravel <5.5 follow the next two steps

  1. Add service provider to config/app.php in providers section
Plokko\LaravelFirebase\ServiceProvider::class,
  1. Register package facade in config/app.php in aliases section
Plokko\LaravelFirebase\Facades\LaravelFirebase::class,

Your file in config/laravel-firebase.php should now look like this:

<?php

return [
    'read_only' => env('FIREBASEDB_READONLY',false),//DEBUG

    /**
     * Firebase service account information, can be either:
     * - string : absolute path to serviceaccount json file
     * - string : content of serviceaccount (json string)
     * - array : php array conversion of the serviceaccount
     * @var array|string
     */
    'service_account' => base_path('.firebase-credentials.json'),

    /**
     * If set to true will enable Google OAuth2.0 token cache storage
     */
    'cache' => true,

    /**
     * Cache driver for OAuth token cache,
     * if null default cache driver will be used
     * @var string|null
     */
    'cache_driver' => null,

    /**
     * Specify if and what event to trigger if an invalid token is returned
     * @var string|null
     */
    'FCMInvalidTokenTriggerEvent' => null,
];

Configuration

Publish the configuration file via

php artisan vendor:publish --provider="Plokko\LaravelFirebase\ServiceProvider" --tag="config"

Usage

JWT token

You can easly create a Firebase JWT token (for auth) with FirebaseJWT::encode:

FirebaseJWT::encode($uid,['optional'=>'custom-claims-array']);

FCM

This package allows you to send FCM messages via FCM http v1 api

Message builder

You can easly build FCM Messages via the FCM facade:

FCM::notificationTitle('My notification title')
  ->notificationBody('my notification body...');
  ->data(['notification' => 'data'])
  ->highPriority()//note: not all devices may use all the fields like priority or ttl
  ->ttl('20.5s')
  ->toDevice('my-device-fcm-token') // or toTopic('topic-name') or toCondition('condition-name') or toTarget(Target)
  ->send();//Submits the message

FCM Notification channel

You can also send the FCM messages via the FcmNotificationChannel channel:

class TestFcmNotification extends Notification implements ShouldQueue
{
    use Queueable;
    
    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return [FcmNotificationChannel::class];
    }

    public function toFcm($notifiable)
    {
        return FCM::notificationTitle('Test notification')
                    ->notificationBody('notification body...')
                    ->toDevice($notifiable->deviceToken);
    }
}

Real time database

Settings:

You can enable read-only access to database setting

FIREBASEDB_READONLY=true

on your .env file, this is usefull for testing purpuses, the writes will not return any error but will not be executed on Firebase.

Query the Realtime database

To get an instance of the database use the FirebaseDb facade:

$test = FirebaseDb::getReference('test'); //get the reference for item /test
$test->get('01');//Get /test/01 as an array
$test01 = $test->getReference('01');//Get a reference for /test/01
$test01->set('label','value');//Set /test/01/label = value

Sync models to Firebase

see Firebase database sync

统计信息

  • 总下载量: 80.47k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 28
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 28
  • Watchers: 1
  • Forks: 7
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-02-22