如何在Android Firebase自定义通知(Kotlin)中创建多自定义目标键定位用户?
在Android Kotlin中为Firebase自定义通知添加多自定义目标键
1. 发送端添加自定义目标键
不管用Firebase Admin SDK还是控制台,都要在通知的数据负载里添加自定义键值对,和你提供的示例结构一致:
后端Kotlin(Admin SDK)实现
val message = Message.builder() .setToken(deviceToken) .setNotification(Notification.builder() .setTitle("自定义通知") .setBody("带多目标键的定位通知") .build()) // 按需添加多个自定义目标键 .putData("target_user_group", "vip") .putData("target_location", "beijing") .putData("target_role", "editor") .build() FirebaseMessaging.getInstance().send(message)
Firebase控制台操作
在控制台创建通知时,找到「自定义数据」板块,逐个输入键和对应的值即可,和示例图的输入框匹配。
2. Android客户端接收解析
在自定义的FirebaseMessagingService里提取这些键,用于用户定位逻辑:
class CustomMessagingService : FirebaseMessagingService() { override fun onMessageReceived(remoteMessage: RemoteMessage) { super.onMessageReceived(remoteMessage) // 获取所有自定义数据 val customData = remoteMessage.data // 取出目标键值 val userGroup = customData["target_user_group"] val location = customData["target_location"] val role = customData["target_role"] // 执行用户定位逻辑 processUserTargeting(userGroup, location, role) } private fun processUserTargeting(group: String?, location: String?, role: String?) { // 根据不同的目标值做对应处理,比如跳转专属页面、加载定制内容 group?.let { when(it) { "vip" -> // 处理VIP用户逻辑 "regular" -> // 处理普通用户逻辑 } } // 同理处理location、role的定位逻辑 } }
3. 关键注意点
- 自定义键名避免和Firebase默认字段(如
title、body)重复 - 数据负载的键值均为字符串类型,需自行处理非字符串数据的序列化/反序列化
- 确保
FirebaseMessagingService在Manifest中正确注册:
<service android:name=".CustomMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
内容的提问来源于stack exchange,提问作者Ankit Tiwari
相关产品推荐
相关产品推荐

