当前位置:首页 > 行业动态 > 正文

个推服务器端php推送

个推服务器端PHP推送需集成SDK,调用API接口,设置

个推服务器端PHP推送环境准备

服务器环境要求

项目 要求
PHP版本 ≥7.2(推荐7.4+)
扩展模块 curljsonopenssl(Composer依赖时自动检测)
依赖管理 Composer(推荐使用)
网络要求 外网访问个推API(需备案域名或IP)

获取个推PHP SDK

通过Composer安装官方SDK:

composer require getui/push

或手动下载SDK包(https://docs.getui.com/php-sdk)后引入GtPush.php


PHP推送核心流程

初始化推送服务

require_once 'vendor/autoload.php'; // Composer自动加载
use GtPushPush;
// 配置参数(从个推控制台获取)
$appKey = "YOUR_APPKEY";
$appId = "YOUR_APPID";
$masterSecret = "YOUR_MASTERSECRET";
$pkgName = "com.example.app"; // Android包名
$push = new Push($appKey, $appId, $masterSecret, $pkgName);

构建推送消息

个推支持3种消息类型:
| 类型 | 特点 |
|————|———————————————————————-|
| 通知 | 系统级弹窗(需配置透传字段) |
| 透传 | 自定义内容(需客户端监听) |
| 链接 | 直接打开网页(H5场景) |

示例:透传消息

$message = [
    'action' => 'com.example.action', // 自定义动作标识
    'content' => json_encode([
        'type' => 'promotion',
        'data' => 'New coupon available!'
    ]),
    'isOffline' => true, // 离线推送
    'offlineExpireTime' => strtotime('+3 days') // 离线有效期
];

用户分群与条件推送

用户标签分群

通过个推控制台创建标签(如VIP_USERS),代码中指定:

$push->setTag("VIP_USERS"); // 推送给指定标签用户

Alias别名推送

为客户端分配唯一别名(如user_123):

$push->addAlias("user_123"); // 单个用户
$push->setAliasType(1); // 1=新增覆盖, 2=增量更新, 3=删除

复合条件筛选

条件类型 说明 示例
平台 iOS/Android/多平台 ['ios', 'android']
省份 地理围栏(需开通服务) ['浙江', '江苏']
机型 设备型号过滤 ['iPhone X', 'HUAWEI P30']
$push->setPlatform(['android'])
     ->setProvince(['广东', '北京'])
     ->setChannel(['xiaomi', 'huawei']); // 安卓渠道过滤

高级功能实现

定时推送

$push->setTiming(strtotime('+1 hour')) // 延迟1小时推送
     ->setMessage($message);

批量推送(10万+用户)

$push->setBatch(1000) // 每批次1000条
     ->setRetry(3) // 重试次数
     ->send();

消息回执处理

try {
    $result = $push->send();
    if ($result->getSuccessCount() > 0) {
        echo "成功推送{$result->getSuccessCount()}条
";
    }
} catch (GtPushException $e) {
    error_log("推送错误: " . $e->getMessage());
}

常见问题与解决方案

问题 解决方案
推送延迟/丢失 检查网络连通性
开启离线消息并延长有效期
联系个推技术支持
客户端未收到消息 确认pkgName与应用包名一致
检查客户端SDK初始化代码
服务端报错401 核对AppKeyMasterSecret
检查HTTPS证书有效性

安全与性能优化

  1. HTTPS加密:确保API请求使用TLS 1.2+协议
  2. 频率限制:单账号QPS≤50(个推后台自动限流)
  3. 批量压缩:对大量Alias/Tag请求启用压缩($push->enableCompress(true)
  4. 异步处理:长耗时任务放入消息队列(如RabbitMQ/Kafka)

FAQs

Q1:如何排查推送失败原因?
A1:

  1. 查看服务端返回的errorCode(参考个推文档错误码表)
  2. 检查客户端是否集成SDK且onMessageReceived回调正常
  3. 通过个推控制台「数据追踪」查看消息状态
  4. 启用服务端日志($push->enableLog(true))分析详细错误

Q2:如何实现A/B测试推送?
A2:

  1. 将用户分为实验组和对照组(通过Alias/Tag标记)
  2. 实验组推送新策略(如不同文案/跳转链接)
  3. 对照组保持原推送内容
  4. 通过个推「数据统计」对比
0