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
相关产品推荐
相关产品推荐

