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

Android后台点击通知时如何获取sender_id?

Android后台点击通知获取sender_id的实现方法

核心逻辑

当App处于后台时,带notification字段的Firebase推送会由系统直接展示,不会触发FirebaseMessagingService的onMessageReceived方法。要获取sender_id,需在推送的data字段中携带该信息,再在通知点击后启动的Activity中读取。

步骤1:推送Payload中携带sender_id

服务器构造推送请求时,将sender_id放入data字段(可同时保留notification字段用于系统展示通知):

{
  "to": "目标设备的FCM令牌",
  "notification": {
    "title": "通知标题",
    "body": "通知内容"
  },
  "data": {
    "sender_id": "对应发送方ID",
    // 其他自定义业务字段
  }
}

步骤2:在启动的Activity中读取sender_id

用户点击通知后,系统会启动配置的目标Activity(默认是App启动页),在该Activity中通过Intent的extras获取sender_id:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // 读取传递的sender_id
        intent?.extras?.getString("sender_id")?.let { senderId ->
            // 这里处理sender_id,比如执行业务逻辑
        }
    }

    // 若Activity设置了singleTop/singleTask等启动模式,需重写此方法
    override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        setIntent(intent)
        intent?.extras?.getString("sender_id")?.let { senderId ->
            // 处理sender_id
        }
    }
}

补充说明

如果推送仅包含data字段(无notification字段),无论App处于前台还是后台,都会触发FirebaseMessagingService的onMessageReceived,此时你可以在该方法中自定义创建通知并携带sender_id,点击通知时同样通过Intent传递数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:08:16