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

Unity项目安卓端FirebaseMessaging.TokenReceived事件未触发问题

可能遗漏的配置和修正方案

  • Firebase初始化顺序错误
    你当前的代码直接在Start方法中注册FCM事件,没有等待Firebase依赖初始化完成,这是最常见的回调不触发原因。需要先完成Firebase依赖检查,再注册事件、执行FCM相关操作,参考修正代码:
public class FCM : MonoBehaviour
{
    public TextMeshProUGUI text;
    void Start()
    {
        // 先完成Firebase依赖检查
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => 
        {
            var dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available) 
            {
                // 初始化完成后再注册事件
                Firebase.Messaging.FirebaseMessaging.TokenReceived += TokenReceived;
                Firebase.Messaging.FirebaseMessaging.MessageReceived += MessageReceived;
            } 
            else 
            {
                Debug.LogError("Firebase依赖不可用: " + dependencyStatus);
            }
        });
    }

    public void MessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e)
    {
        Debug.Log("Message received: " + e.Message);
    }

    public void TokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs e)
    {
        Debug.Log("Token received: "+ e.Token);
        text.text = "received a token";
    }
}
  • 安卓通知权限未申请
    Android 13(API等级33)及以上系统要求应用主动申请POST_NOTIFICATIONS运行时权限,没有该权限时FCM不会生成Token,自然无法触发回调,需要在应用启动时主动申请该权限。

  • Token触发场景限制
    TokenReceived事件仅在首次安装应用生成Token、Token到期刷新、应用卸载重装这几个场景触发,正常冷启动如果本地已有有效Token不会触发该事件。可以主动调用Firebase.Messaging.FirebaseMessaging.GetTokenAsync()接口直接获取当前Token,不需要依赖事件触发,可靠性更高:

// Firebase初始化完成后调用
Firebase.Messaging.FirebaseMessaging.GetTokenAsync().ContinueWith(tokenTask => 
{
    if (tokenTask.IsCompletedSuccessfully) 
    {
        string currentToken = tokenTask.Result;
        // 直接将currentToken存入数据库即可
    }
});
  • 安卓端配置检查

    • 确认Assets/Plugins/Android/google-services.json文件是从对应Firebase项目下载的,应用包名和Firebase后台配置完全一致
    • 确认打包时开启代码混淆(minifyEnabled=true)的情况下,已经添加了Firebase相关的混淆规则,避免FCM相关类被裁剪导致回调失效
    • 确认AndroidManifest.xml中已经正确配置FCM所需的服务、接收器,以及安卓8.0以上要求的默认通知Channel ID
  • 测试场景修正
    卸载设备上已安装的旧版本应用,重新打包安装首次启动时才会触发TokenReceived事件;同时确保设备的Google Play服务版本为最新,FCM功能依赖Google Play服务运行,版本过低会导致Token生成失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:05