You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust使用fcm crate发送Firebase消息:Registration ID是什么?

关于FCM Registration ID的说明与获取方法

1. 什么是Registration ID?

Registration ID(现在也常被称为FCM令牌)是Firebase Cloud Messaging给每个客户端设备分配的唯一标识符,作用是指定消息的发送目标——每个安装了你应用的设备,首次连接FCM时都会生成这个专属令牌。

2. 为什么在云控制台找不到?

FCM的Registration ID/令牌是客户端设备生成后,需要由你自己的应用上传到后端服务存储的,Firebase控制台仅提供应用级别的配置项,无法直接查看单个设备的令牌。

3. 如何获取Registration ID?

你需要在移动端(Android/iOS/跨平台框架等)的应用代码中集成FCM SDK,初始化后获取令牌,再将其上传到你的Rust后端保存。举个移动端伪代码示例:

// Android Kotlin 示例
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
    if (!task.isSuccessful) return@addOnCompleteListener
    // 获取到的设备令牌
    val deviceToken = task.result
    // 将令牌上传到你的Rust后端存储
}

4. 修正你的Rust代码

注意fcm crate的MessageBuilder::new第一个参数是FCM服务器密钥,第二个才是Registration ID/设备令牌,你代码里的参数填写有误,修正后的代码如下:

use fcm::Client;
use std::collections::HashMap;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 从Firebase控制台「项目设置-云消息传递」中获取服务器密钥
    let server_key = "你的FCM服务器密钥";
    let client = Client::new();

    let mut map = HashMap::new();
    map.insert("message", "Howdy!");

    // 替换为从客户端上传的设备令牌(Registration ID)
    let device_token = "客户端设备的FCM令牌";
    let mut builder = fcm::MessageBuilder::new(server_key, device_token);
    builder.data(&map);

    let response = client.send(builder.finalize()).await?;
    println!("Sent: {:?}", response);
    Ok(())
}

补充提示

  • 服务器密钥可在Firebase控制台的「项目设置」→「云消息传递」页面找到;
  • 设备令牌可能会因应用卸载、系统更新等情况过期或刷新,你的后端需要支持令牌的更新替换逻辑。

内容的提问来源于stack exchange,提问作者Caveno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:49:52