laradevs/generic-fcm

来自谷歌的 Firebase 云消息的 PHP API

1.0 2021-01-31 23:24 UTC

This package is auto-updated.

Last update: 2024-09-29 05:49:47 UTC


README

来自谷歌的 Firebase 云消息的 PHP API。

目前这个应用服务器库仅支持通过 HTTP 发送消息/通知。

查看原始 Firebase 文档:https://firebase.google.com/docs/

## 安装

将此内容添加到您的 composer.json 中,并运行 "composer update" 命令。

"require": {
    "laradevs/generic-fcm": "^1.0"
}

## 向设备发送消息

use LaraDevs\PhpFirebaseCloudMessaging\Client;
use LaraDevs\PhpFirebaseCloudMessaging\Message;
use LaraDevs\PhpFirebaseCloudMessaging\Recipient\Device;
use LaraDevs\PhpFirebaseCloudMessaging\Notification;

$server_key = '_YOUR_SERVER_KEY_';
$client = new Client();
$client->setApiKey($server_key);
$client->injectGuzzleHttpClient(new \GuzzleHttp\Client());

$message = new Message();
$message->setPriority('high');
$message->addRecipient(new Device('_YOUR_DEVICE_TOKEN_'));
$message
    ->setNotification(new Notification('some title', 'some body'))
    ->setData(['key' => 'value'])
;

$response = $client->send($message);
var_dump($response->getStatusCode());
var_dump($response->getBody()->getContents());

## 向多个设备发送消息

...
$message = new Message();
$message->setPriority('high');
$message->addRecipient(new Device('_YOUR_DEVICE_TOKEN_'));
$message->addRecipient(new Device('_YOUR_DEVICE_TOKEN_2_'));
$message->addRecipient(new Device('_YOUR_DEVICE_TOKEN_3_'));
$message
    ->setNotification(new Notification('some title', 'some body'))
    ->setData(['key' => 'value'])
;
...

## 向主题发送消息

use LaraDevs\PhpFirebaseCloudMessaging\Client;
use LaraDevs\PhpFirebaseCloudMessaging\Message;
use LaraDevs\PhpFirebaseCloudMessaging\Recipient\Topic;
use LaraDevs\PhpFirebaseCloudMessaging\Notification;

$server_key = '_YOUR_SERVER_KEY_';
$client = new Client();
$client->setApiKey($server_key);
$client->injectGuzzleHttpClient(new \GuzzleHttp\Client());

$message = new Message();
$message->setPriority('high');
$message->addRecipient(new Topic('_YOUR_TOPIC_'));
$message
    ->setNotification(new Notification('some title', 'some body'))
    ->setData(['key' => 'value'])
;

$response = $client->send($message);
var_dump($response->getStatusCode());
var_dump($response->getBody()->getContents());

## 向多个主题发送消息

请参阅 Firebase 文档了解发送到 多个主题组合 的方式。

...
$message = new Message();
$message->setPriority('high');
$message->addRecipient(new Topic('_YOUR_TOPIC_'));
$message->addRecipient(new Topic('_YOUR_TOPIC_2_'));
$message->addRecipient(new Topic('_YOUR_TOPIC_3_'));
$message
    ->setNotification(new Notification('some title', 'some body'))
    ->setData(['key' => 'value'])
    // Will send to devices subscribed to topic 1 AND topic 2 or 3
    ->setCondition('%s && (%s || %s)')
;
...

## 将用户订阅到主题

use LaraDevs\PhpFirebaseCloudMessaging\Client;

$server_key = '_YOUR_SERVER_KEY_';
$client = new Client();
$client->setApiKey($server_key);
$client->injectGuzzleHttpClient(new \GuzzleHttp\Client());

$response = $client->addTopicSubscription('_SOME_TOPIC_ID_', ['_FIRST_TOKEN_', '_SECOND_TOKEN_']);
var_dump($response->getStatusCode());
var_dump($response->getBody()->getContents());

## 从主题中移除用户订阅

use LaraDevs\PhpFirebaseCloudMessaging\Client;

$server_key = '_YOUR_SERVER_KEY_';
$client = new Client();
$client->setApiKey($server_key);
$client->injectGuzzleHttpClient(new \GuzzleHttp\Client());

$response = $client->removeTopicSubscription('_SOME_TOPIC_ID_', ['_FIRST_TOKEN_', '_SECOND_TOKEN_']);
var_dump($response->getStatusCode());
var_dump($response->getBody()->getContents());