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

使用Xamarin FCM教程代码遇过时警告,是否需修改适配安卓设备?

兄弟,你碰到的这些警告都是因为Firebase的旧API已经被官方弃用啦!虽然当前代码在你的目标API 28设备上可能还能凑合用,但长远来看肯定得换成新实现,不然以后升级Firebase SDK或者安卓版本大概率会出问题。我给你一步步说怎么改:

为啥会出这些警告?

FirebaseInstanceIdService、FirebaseInstanceId.Token这些老API已经被Google标记为过时,官方现在推荐用FirebaseMessagingService相关的新接口来处理设备令牌的刷新和消息接收。

具体修改方案

1. 替换你的令牌服务类

把原来的MyFirebaseIIDService.cs直接改成下面的代码就行,完全替代旧的逻辑:

using System;
using Android.App;
using Firebase.Messaging;
using Android.Util;

namespace Androidproject
{
    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class MyFirebaseMessagingService : FirebaseMessagingService
    {
        const string TAG = "MyFirebaseMessagingService";

        // 替代原来的OnTokenRefresh,令牌刷新时自动触发
        public override void OnNewToken(string token)
        {
            Log.Debug(TAG, "Refreshed token: " + token);
            SendRegistrationToServer(token);
        }

        // 额外福利:如果需要处理收到的推送消息,重写这个方法就行
        public override void OnMessageReceived(RemoteMessage message)
        {
            Log.Debug(TAG, "消息来自: " + message.From);
            
            // 处理消息的自定义数据
            if (message.Data != null)
            {
                Log.Debug(TAG, "消息数据: " + message.Data);
            }

            // 处理通知内容
            if (message.Notification != null)
            {
                Log.Debug(TAG, "通知内容: " + message.Notification.Body);
            }
        }

        void SendRegistrationToServer(string token)
        {
            // 这里保留你原来的逻辑,把令牌发送到自己的服务器就行
        }
    }
}

2. 主动获取令牌的新方式

如果需要在代码里主动获取当前设备令牌(不是等刷新),原来的FirebaseInstanceId.Instance.Token要换成异步调用:

// 比如在MainActivity的OnCreate方法里调用
var currentToken = await FirebaseMessaging.Instance.GetToken();
Log.Debug(TAG, "当前设备令牌: " + currentToken);

3. 清理Manifest配置

原来的INSTANCE_ID_EVENT过滤器可以删掉了,新的服务已经通过代码里的IntentFilter指定了MESSAGING_EVENT,Xamarin会自动帮你处理Manifest的注册,不用手动改啦。

兼容性问题?放心!

你的最低API是21,目标是28,新的FirebaseMessagingService在API 21及以上完全兼容,改完之后不仅能解决警告,还能适配更后续的安卓版本,比老API靠谱多了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:15:29