当前位置:首页 > PHP

php实现ios推送

2026-01-28 21:05:31PHP

PHP 实现 iOS 推送

要在 PHP 中实现 iOS 推送通知,需要使用 Apple 的推送通知服务 (APNs)。以下是实现步骤:

准备工作

确保拥有有效的 Apple 开发者账号,并已在开发者中心创建 App ID 和推送证书。证书需要导出为 .p12.pem 格式。

安装依赖

使用 Composer 安装 pusher/push-notifications 或其他支持 APNs 的库。运行以下命令安装:

composer require pusher/push-notifications

配置证书

将导出的 .pem.p12 证书文件放在项目安全目录中,确保路径正确。需要同时拥有证书和私钥文件。

代码实现

以下是一个基本的 PHP 实现示例,使用 curl 直接与 APNs 交互:

<?php
$deviceToken = 'DEVICE_TOKEN_HERE'; // 目标设备的 Device Token
$apnsHost = 'api.push.apple.com'; // 生产环境
// $apnsHost = 'api.sandbox.push.apple.com'; // 开发环境
$apnsUrl = "https://{$apnsHost}/3/device/{$deviceToken}";

$payload = [
    'aps' => [
        'alert' => [
            'title' => '通知标题',
            'body' => '通知内容'
        ],
        'sound' => 'default',
        'badge' => 1
    ]
];
$jsonPayload = json_encode($payload);

$certificatePath = '/path/to/certificate.pem'; // 证书路径
$headers = [
    "apns-topic: YOUR_APP_BUNDLE_ID", // 替换为应用的 Bundle ID
    "apns-push-type: alert",
    "apns-priority: 10"
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apnsUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonPayload);
curl_setopt($ch, CURLOPT_SSLCERT, $certificatePath);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'CERT_PASSWORD'); // 证书密码(如果有)
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode !== 200) {
    echo "推送失败,HTTP 状态码: {$httpCode}, 响应: {$response}";
} else {
    echo "推送成功";
}

curl_close($ch);
?>

使用第三方库

如果希望简化流程,可以使用第三方库如 pushokapns-php。以下是使用 pushok 的示例:

<?php
require 'vendor/autoload.php';

use Pushok\AuthProvider;
use Pushok\Client;
use Pushok\Notification;
use Pushok\Payload;

$authProvider = AuthProvider\Token::create([
    'key_id' => 'YOUR_KEY_ID', // 从 Apple 开发者账号获取
    'team_id' => 'YOUR_TEAM_ID', // 团队 ID
    'app_bundle_id' => 'YOUR_BUNDLE_ID', // 应用 Bundle ID
    'private_key_path' => '/path/to/AuthKey_KEYID.p8', // p8 文件路径
    'private_key_secret' => null // p8 文件密码(如果有)
]);

$client = new Client($authProvider, $production = true);
$payload = Payload::create()
    ->setAlertTitle('通知标题')
    ->setAlertBody('通知内容')
    ->setSound('default')
    ->setBadge(1);

$notification = new Notification($payload, 'DEVICE_TOKEN_HERE');
$client->addNotification($notification);
$client->push();
?>

测试与调试

确保设备 Token 正确,并在开发和生产环境之间切换时更新 $apnsHost。可以通过 Apple 的反馈服务检查无效的 Device Token。

php实现ios推送

注意事项

  • 使用 HTTPS 和正确的 APNs 地址(开发或生产环境)。
  • 确保证书未过期,且与应用的 Bundle ID 匹配。
  • 推送负载大小不超过 4KB。
  • 处理可能的错误响应,如无效的 Device Token 或证书问题。

标签: phpios
分享给朋友:

相关文章

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…