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

FCM发送通知时报错java.lang.String类型无法转换问题求助

问题原因

你Firebase Realtime Database中Tokens节点下存储的每一条数据是纯字符串类型的token值,而不是包含token字段的对象结构,因此Firebase无法将字符串直接映射为你定义的TokenModel类对象,就触发了类型转换报错。


解决方案(二选一即可)

方案1:调整数据存储结构(推荐,后续扩展性更好)

修改你保存Token到Firebase的代码,不要直接存字符串,按照TokenModel的结构存储:

// 原存储token的逻辑大概率类似这样:
// tokens.child(uid).setValue(tokenStr);
// 修改为:
TokenModel tokenModel = new TokenModel(tokenStr);
tokens.child(uid).setValue(tokenModel);

存储后数据结构会变成:

Tokens
  └── 用户uid
      └── token: "你的fcm token值"

你现有读取TokenModel的代码不需要修改即可正常运行。


方案2:直接读取字符串(无需改存储逻辑,改动量小)

不需要使用TokenModel做映射,直接读取快照的字符串值即可,修改报错行及后续逻辑:

// 替换原来的 TokenModel tokenModel = snapshot.getValue(TokenModel.class);
String token = snapshot.getValue(String.class);
// 后续构造Sender时直接用token即可
Sender sender1 = new Sender(data, token);

这个方案不需要调整存储逻辑,仅修改读取代码即可解决报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:06:00