You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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

火山引擎 最新活动