valdeirpsr/firebasemessaging-php

使用 Google Firebase 向移动设备发送消息。

0.5.1 2016-09-01 03:51 UTC

This package is auto-updated.

Last update: 2024-09-03 06:23:35 UTC


README

使用 Google Firebase 向移动设备发送消息。

安装

composer require valdeirpsr/firebasemessaging-php

发送基本通知

require "vendor/autoload.php";

use FirebaseMessaging\FirebaseMessaging;
use FirebaseMessaging\FirebaseNotification;
use FirebaseMessaging\FirebaseCondition;

$notification = new FirebaseNotification();
$notification->setTitle("Run!! New video");
$notification->setBody("Duelo de MC's - FINAL - Thaik vs Din");

$messaging = new FirebaseMessaging("serverKey");
$messaging->setTo("/topics/RapHipHop");
$messaging->setOperacionalSystem(FirebaseMessaging::OS_ANDROID);
$messaging->setNotification($notification);
$messaging->send();

发送完整通知

require "vendor/autoload.php";

use FirebaseMessaging\FirebaseMessaging;
use FirebaseMessaging\FirebaseNotification;
use FirebaseMessaging\FirebaseCondition;

$notification = new FirebaseNotification();
$notification->setTitle("Run!! New video");
$notification->setBody("Duelo de MC's - FINAL - Thaik vs Din");
$notification->setIcon("custom_logo");
$notification->setTag("valdeirpsr_1");
$notification->setColor("#E91E63");
$notification->setClickAction("OPEN_ACTIVITY_VIDEO");
$notification->setSound("sound_notification");

$condition = new FirebaseCondition("RapHipHop");
$condition->openAnd("DouglasDin");
$condition->orInTopics("Thaik");
$condition->closeAnd();
// output: 'RapHipHop' in topics && ('DouglasDin' in Topics || 'Thaik' in Topics)

$messaging = new FirebaseMessaging("serverKey");
$messaging->setCondition($condition);
$messaging->setPriority(FirebaseMessaging::PRIORITY_HIGH);
$messaging->setTimeToLive(2419200);
$messaging->setOperacionalSystem(FirebaseMessaging::OS_BOTH);
$messaging->setNotification($notification);
$messaging->setRestrictedPackageName("br.com.valdeirsantana.test");
$messaging->setCollapseKey("video_new");
$messaging->setDelayWhileIdle(false);
$messaging->setDevelopmentMode(false);
$messaging->setData([
    "video_id" => "ZDz-5fQAIo4",
    "title" => "Duelo de MC's - FINAL - Thaik vs Din :: Tradicional - 23/11/12",
    "channel" => "Indie BH",
    "channel_url" => "https://www.youtube.com/channel/UCBkYx1zP0aOaMXsp9As75Tg",
    "channel_id" => "UCBkYx1zP0aOaMXsp9As75Tg",
    "thumbnail" => [
        "default" => [
            "url" => "https://i.ytimg.com/vi/ZDz-5fQAIo4/default.jpg",
            "width" => "120",
            "height" => "90"
        ],
        "high" => [
            "url" => "https://i.ytimg.com/vi/ZDz-5fQAIo4/mqdefault.jpg",
            "width" => "320",
            "height" => "180"
        ],
        "high" => [
            "url" => "https://i.ytimg.com/vi/ZDz-5fQAIo4/hqdefault.jpg",
            "width" => "480",
            "height" => "360"
        ],
        "standard" => [
            "url" => "https://i.ytimg.com/vi/ZDz-5fQAIo4/sddefault.jpg",
            "width" => "640",
            "height" => "480"
        ],
        "maxres" => [
            "url" => "https://i.ytimg.com/vi/ZDz-5fQAIo4/maxresdefault.jpg",
            "width" => "1920",
            "height" => "1080"
        ]
    ]
]);

$messaging->send();

设置将接收通知的设备

此参数指定消息的接收者。

值必须是注册令牌、通知密钥或主题。不要设置此字段以发送多个主题,请参阅 FirebaseMessaging::setCondition

$messaging->setTo("RegistrationToken");
$messaging->setTo("/topics/RapHipHop");

设置将接收通知的设备

此方法指定了一个接收组播消息的设备(注册令牌或ID)列表。它必须包含1到1,000条记录令牌。

$messaging->setRegistrationIds([
    "RegistrationToken#1",
    "RegistrationToken#2",
    "RegistrationToken#3",
    "RegistrationToken#4",
]);

设置通知的优先级

默认情况下,消息以正常优先级发送。正常优先级优化客户端应用电池消耗,应始终使用,除非需要立即交付。对于具有正常优先级的消息,应用可以稍后获取消息。

当以高优先级发送消息时,它将立即发送,并且应用可以触发设备挂起并打开到您的服务器的网络连接。

$messaging->setPriority(FirebaseMessaging::PRIORITY_HIGH);

设置空闲设备的延迟

当此参数设置为true时,消息将不会发送到不活跃的设备。

默认:false

$messaging->setDelayWhileIdle(true);

向设备发送数据

键不应是保留词(“of”或以“google”或“gcm”开头的任何词)。不要使用此表中定义的任何词(作为 collapse_key)。

它们是字符串类型的推荐值。有必要将值转换为没有字符串数据(例如,布尔值或整数)的对象或其他类型。

$messaging->setData([
    "ClassificacaoGinasticaOlimpica" => [
        "Sanne Wevers",
        "Laurie Hernandez",
        "Simone Biles",
        "Marine Boyer",
        "Flávia Saraiva"
    ]
]);

配置您的通知

设置通知标题

指示通知的标题。此字段在手机和iOS平板电脑上不可见,只有iWatch可见。

Android必需;iOS可选

$notification->setTitle("My Title");

设置消息通知

指示通知的正文文本。

Android和iOS可选

$notification->setBody("My Message");

设置通知中的图标

指示通知中的图标。

仅适用于Android(可选)。图标应在res/drawable中

$notification->setIcon("custom_icon_notification");

设置通知声音

指示设备收到通知时播放的声音。

Android声音文件应位于/res/raw/,iOS声音文件可以位于主客户端应用包或应用数据容器的Library/Sounds文件夹中。有关更多信息,请参阅iOS开发者的库。

Android和iOS可选

$notification->setSound("sound_notification");

设置标签

指示每个通知是否会在Android通知托盘中产生新条目。如果没有设置,每个请求都将创建一个新的通知。如果设置且已显示具有相同标签的通知,则新通知将替换通知托盘中的现有通知。

仅适用于Android(可选)

$notification->setTag("notification_id_1");

设置图标颜色

指示图标颜色,格式为#rrggbb。

仅适用于Android(可选)

$notification->setColor("#FF0000");

为用户点击通知时关联一个动作

指示用户点击通知时关联的动作。

如果设置在iOS上,则与APNs有效负载中的类别匹配。

在Android上,如果设置了此参数,则用户点击通知时将启动具有相应intent过滤器的活动。

Android和iOS可选

$notification->setClickAction("OPEN_ACTIVITY_NOTIFICATION");

即将支持XMPP