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

如何从Laravel后端向Expo应用发送推送通知

从Laravel向Expo应用发送推送通知实现方案

核心实现逻辑

无需单独对接苹果APNs、安卓FCM底层推送服务,Expo官方提供了统一的推送网关,你只需在Laravel侧将目标用户的Expo Push Token、通知内容组装为指定格式,向Expo推送网关发起POST请求即可完成推送,Expo会自动完成不同设备系统的推送分发工作。

具体实现步骤

  • 前置准备
    确保Expo端已完成通知权限申请,拿到格式为ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]的合法Push Token,并将Token与对应应用用户绑定存储到Laravel的数据库中。
  • 推送代码实现
    直接使用Laravel自带的Http客户端即可完成请求,无需额外安装第三方扩展包,单用户推送示例代码如下:
    public function sendExpoPush(string $expoToken, string $title, string $content, array $customData = []): array
    {
        $requestData = [
            'to' => $expoToken,
            'title' => $title,
            'body' => $content,
            'data' => $customData, // 可选参数,携带自定义业务数据,Expo端可捕获处理
            'sound' => 'default', // 可选,设置通知提示音
            'badge' => 1 // 可选,iOS端应用角标显示数量
        ];
    
        $response = \Illuminate\Support\Facades\Http::withHeaders([
            'Accept' => 'application/json',
            'Content-Type' => 'application/json',
        ])->post('https://exp.host/--/api/v2/push/send', $requestData);
    
        return $response->json();
    }
    
    批量推送时,只需将to字段的值替换为最多100个Expo Token组成的数组即可,超过100个Token请拆分多批请求。
  • 推送结果校验
    接口返回结果中status字段为ok代表请求已被Expo网关接受,后续会下发到对应设备;若返回error,可通过message字段排查问题,常见错误包括Token格式无效、Token所属Expo项目与推送侧配置不匹配等。

常见问题排查

  • 提示InvalidCredentials错误时,校验Expo项目的bundle ID、package name配置是否和生成Token的应用配置完全一致
  • 设备收不到通知时,先检查设备是否开启了对应应用的通知权限,再校验当前推送使用的Token是否对应用户设备生成的有效Token

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:57:03