返回

如何无需 Firebase 控制台发送 FCM 通知?

php

在没有 Firebase 控制台的情况下发送 FCM 通知

简介

Firebase Cloud Messaging (FCM) 是一种流行的通知服务,用于向移动设备发送通知。虽然可以使用 Firebase 控制台来管理和发送通知,但你也可以通过 API 或其他方法在没有控制台的情况下发送通知。本文将探讨在没有 Firebase 控制台的情况下发送 FCM 通知的不同方法,并提供代码示例和步骤指南。

方法

1. HTTP API

  • 步骤:

    • 获取 Firebase 服务器密钥。
    • 创建 JSON 有效载荷,其中包含要发送的通知消息。
    • 使用 HTTP 请求将有效载荷发送到 FCM API 端点。
  • 示例:

$fcmToken = 'YOUR_FCM_TOKEN';
$title = 'Notification Title';
$body = 'Notification Body';
$result = sendNotification($fcmToken, $title, $body);

2. Admin SDK

  • 步骤:

    • 在你的应用程序中安装 Admin SDK。
    • 使用 Admin SDK 的 Messaging 类发送通知。
  • 示例:

FirebaseMessaging messaging = FirebaseMessaging.getInstance();
Message message = Message.builder()
    .setToken(fcmToken)
    .setNotification(new Notification(title, body))
    .build();
messaging.send(message);

3. 第三方库

  • 步骤:

    • 在你的应用程序中安装第三方库。
    • 使用库的 API 发送通知。
  • 示例:

import firebase_admin
from firebase_admin import messaging

firebase_admin.initialize_app()

message = messaging.Message(
    token=fcmToken,
    notification=messaging.Notification(title=title, body=body),
)

messaging.send(message)

4. Websocket 界面

  • 步骤:

    • 连接到 FCM Websocket 端点。
    • 发送通知消息的 JSON 有效载荷。
  • 示例:

const socket = new WebSocket('wss://fcm.googleapis.com/v1/projects/PROJECT_ID/messages:send');
socket.onopen = function() {
  socket.send(JSON.stringify({
    message: {
      token: fcmToken,
      notification: {
        title: title,
        body: body,
      },
    },
  }));
};

结论

通过使用 HTTP API、Admin SDK、第三方库或 Websocket 界面,你可以在没有 Firebase 控制台的情况下发送 FCM 通知。这允许你从自己的服务器或其他应用程序自动发送通知。请确保使用适当的认证和安全措施来保护你的 FCM 通知。

常见问题解答

  1. 如何获取 FCM 令牌?
    FCM 令牌是设备的唯一标识符。你可以使用 Firebase SDK 或其他方法获取令牌。

  2. 我可以在没有互联网连接的情况下发送通知吗?
    否,发送 FCM 通知需要互联网连接。

  3. 如何知道我的通知是否已发送成功?
    HTTP API 或 Admin SDK 会返回一个响应,其中包含通知是否已发送成功的信息。

  4. 我一次可以发送多少个通知?
    FCM 有速率限制,但实际限制因应用程序而异。

  5. 为什么我的通知没有在设备上收到?
    这可能是由于以下原因:

    • 令牌无效。
    • 通知消息无效。
    • 设备无法连接到 FCM。