如何配置Firebase Cloud Messaging实现未点击通知仍可获取货币?
解决方案
要解决这个问题,核心是利用FCM的**数据消息(Data Message)**替代带自定义数据的通知消息,具体逻辑如下:
- 发送消息时,只包含
data字段(也就是你提到的Custom data),不要包含notification字段。这种纯数据消息的特点是:无论应用处于前台、后台甚至被完全杀死(Android端),都会直接触发Firebase.Messaging.FirebaseMessaging.MessageReceived事件,不需要用户点击通知。 - 在
MessageReceived事件的处理逻辑里,先执行金币发放的核心逻辑,确保用户能拿到货币;之后再调用本地通知API(比如Unity的NotificationServices或原生平台的通知API),手动展示「YOU RECEIVED 15 FREE GOLD!」的通知给用户。
为什么之前的方式不行?
你之前发送的是通知消息(Notification Message)(带notification字段+data字段),这种消息在应用后台时,会由系统直接展示通知,只有用户点击通知后,才会把附带的data传递给应用并触发MessageReceived事件。如果用户不点通知,应用就永远接收不到数据,自然无法处理金币发放。
额外注意(针对iOS)
iOS端要确保数据消息能在后台触发事件,需要在Xcode中开启「Remote notifications」后台模式,同时在FCM控制台或发送API中设置content_available: true参数,这样即使应用在后台,也能唤醒应用处理消息。
内容的提问来源于stack exchange,提问作者joe
相关产品推荐
相关产品推荐

