Xamarin Android 找不到Firebase通知接收事件的对应实现?
功能存在性说明
你查找的FCM通知/消息接收相关能力完全存在,不存在功能缺失,只是Xamarin平台的实现逻辑和原生Android的写法有差异,没有直接暴露和原生同名的可订阅事件,容易让开发者产生找不到对应实现的错觉。
Xamarin 下的对应实现方式
所有原生Android端支持的FCM接收场景,在Xamarin.Firebase.MessagingNuGet包中全部有对齐实现,不需要额外开发自定义逻辑:
- 核心实现逻辑围绕继承
FirebaseMessagingService基类展开,不需要绑定全局事件,直接重写基类的特定方法即可拿到对应回调:- 重写
OnMessageReceived(RemoteMessage message)方法:和原生端的消息接收回调完全对齐,只要客户端进程存活,无论应用处于前台、后台,所有推送到设备的FCM通知消息、数据消息都会触发该方法 - 重写
OnNewToken(string token)方法:替代原生端的令牌刷新广播逻辑,在FCM注册令牌更新时触发
- 重写
- 必要的配置项:
- 在自定义的
FirebaseMessagingService子类上添加[Service(Exported = true)]特性,满足Android系统对后台服务的导出权限要求 - 为服务类注册
IntentFilter,匹配com.google.firebase.MESSAGING_EVENT的Intent动作,确保系统能正确路由FCM的推送事件到自定义服务
- 在自定义的
找不到对应实现的常见原因
- Xamarin的FCM SDK没有采用C#常见的事件订阅模式暴露接收回调,而是采用面向对象的继承重写模式,习惯了事件订阅写法的开发者很容易误判功能不存在
- 低版本的Xamarin.Firebase.Messaging NuGet包存在方法签名缺失、回调不触发的已知问题,升级到当前稳定版本即可拿到和原生能力完全对齐的回调接口
内容的提问来源于stack exchange,提问作者Micah Armantrout
相关产品推荐
相关产品推荐

