使用firebase-admin发送FCM消息时如何设置高优先级?
设置FCM消息高优先级的修改方案
嘿,这事儿很容易搞定!要给FCM消息设置高优先级,你只需要在构建Message的时候,追加Android平台的配置并指定优先级就行——毕竟高优先级的核心配置是针对Android设备的(iOS端是通过APNs参数单独配置,你当前用token发送的场景,先搞定Android的高优先级就够了)。
修改后的完整代码
import com.google.firebase.messaging.AndroidConfig; import com.google.firebase.messaging.Message; import com.google.firebase.messaging.Priority; import com.google.firebase.messaging.FirebaseMessaging; import org.springframework.http.ResponseEntity; // ... 你的其他业务代码 Message message = null; message = Message.builder() .putData("From", fromTel) .putData("To", toTel) .putData("Text", text) // 关键新增代码:配置Android端高优先级 .setAndroidConfig(AndroidConfig.builder() .setPriority(Priority.HIGH) .build()) .setToken(registrationToken) .build(); String response = null; try { response = FirebaseMessaging.getInstance().sendAsync(message).get(); responseEntity = new ResponseEntity<String>(HttpStatus.ACCEPTED); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); // 建议补充异常后的兜底处理,比如返回错误状态码 responseEntity = new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR); }
重点说明
Priority.HIGH会让FCM将这条消息标记为高优先级,即使设备处于Doze休眠模式,也会被唤醒接收消息,确保最快的送达速度。- 要是需要兼容iOS设备,可以额外添加
setApnsConfig配置APNs的推送优先级,但你的代码场景里,Android端的配置已经能满足高优先级需求。 - 注意别滥用高优先级,频繁发送会增加设备功耗,只在真正需要即时通知的场景使用哦。
内容的提问来源于stack exchange,提问作者david




