saikatdutta1991/firebasecloudmessaging

此包的最新版本(1.0.0)没有可用的许可证信息。

这是一个用于使用Firebase云消息发送推送通知的Laravel包。已在Laravel 5.2.*中进行测试。

1.0.0 2017-03-19 08:07 UTC

This package is not auto-updated.

Last update: 2024-09-18 21:09:53 UTC


README

** 注意:此包已不再维护。

此包用于通过Firebase云消息向设备发送推送通知。已在Laravel 5.1和5.2中测试。

# 安装

在Laravel项目根目录中运行以下命令即可安装此包:

php composer.phar require saikatdutta1991/firebasecloudmessaging:1.0.0

添加服务提供者

    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
            
        .....
        .....
        \Saikat\FirebaseCloudMessaging\FCMServiceProvider::class 
    ]

config\app.php providers 数组中

config/app.php 文件中别名 PushManager 类,将其添加到别名数组中。

    'aliases' => [
        ...
        'PushManager' => Saikat\FirebaseCloudMessaging\PushManager::class
    ]

但别名不是强制的。

配置

使用以下命令将包配置发布到您的Laravel配置文件夹:

php artisan vendor:publish --tag="config"

在执行此命令之前,请先添加服务提供者。

config/firebase_cloud_messaging.php 文件中添加 fcm server_key

    return [
        
        "server_key" => env('FIREBASE_CLOUD_MESSAGING_SERVER_KEY'),
        "fcm_push_url" => env("FIREBASE_CLOUD_MESSAING_URL")

    ];

fcm_push_url 不需要,已包含在包中。如果需要覆盖,则添加它。

使用

## 包含 PushManager

如果已添加别名,则在控制器中使用它

use PushManager;

如果没有添加别名,则在控制器中使用它

use Saikat\FirebaseCloudMessaging\PushManager;

## 控制器构造函数中的依赖注入

class YourController extends Controller
{
    
    public function __construct(PushManager $pushManager)
    {
        $this->pushManager = $pushManager;
    }

如果您想不进行注入而使用它,则

class YourController extends Controller
{
    
    public function sendPushNotification()
    {
        $pushManager = app('PushManager'); // this will keep the PushManager instance singleton
    }

示例

<?php

namespace App\Http\Controllers;

use Illuminate\Routing\Controller;
use PushManager;

class Controller extends Controller
{
    
    public function __construct(PushManager $pushManager)
    {
        $this->pushManager = $pushManager;
    }

    public function sendPushNotification()
    {
        $response = $this->pushManager
            ->setTitle('Test Title')
            ->setBody('Test Body')
            ->setIcon('icon url')
            ->setClickAction('https://www.google.com')
            ->setCustomPayload(['custom_data' => 'custom_data_array']) 
            ->setPriority(PushNotification::HIGH)
            ->setContentAvailable(true)
            ->setDeviceTokens('--------------------') // this can be an array or string
            ->push();

        dd( $response );
    }

}

要更改响应

->push(PushManager::STDCLASS)

PushManager::STDCLASSPushManager::ARRYPushManager::RAW

默认响应为 PushManager::RAW 设置

错误处理

===============

$this->pushManager->getLastErrorCode() //if no error then 0

$this->pushManager->getLastErrorMessage() // if no error then ""

未来增强

======================

目前只有原始响应正常工作。JSON和stdClas响应对于所有类型的fcm响应都不工作。如果失败进行JSON解码,则返回null。

我将使发送推送通知异步,这样就不必等待响应