1. 文档教程
壹信-开源即时通讯
  • 壹信 — 即时通讯系统
  • 项目源码结构与功能说明书
  • 功能核心分类明细
  • 客户端打包教程
  • Android安卓打包教程
  • iOS苹果打包教程
  • 苹果推送apns配置教程
  • macOS电脑打包教程
  • Windowsn桌面端打包教程
  • mac编译环境配置
  • windows编译环境配置
  • Docker部署后端教程
  • 用宝塔面板搭建服务端
  • API全局接口
  • 并发压力测试报告
  • 服务器配置推荐
  • 适用于上架的隐私协议
  • 端口说明
  • 更新日志
  • 法律声明
文档教程
文档教程
  1. 文档教程

苹果推送apns配置教程

🔥 苹果推送通知 (APNs) 配置教程:使用 P8 证书#

💡 核心信息
适用平台: iOS 10+ / macOS 10.12+
认证方式: P8 证书 (JWT)
最后更新: 2026-03-07
目标: 配置壹信 IM 应用的苹果推送通知

📌 一、什么是 P8 证书#

P8 证书是 Apple 推送通知服务 (APNs) 的一种认证方式,与传统的 p12 证书相比:
✅ 更安全: 使用 JWT (JSON Web Token) 进行认证
✅ 更方便: 不需要管理证书有效期和密码
✅ 更灵活: 适用于所有 Apple 平台 (iOS, macOS, tvOS, watchOS)
✅ 更现代: Apple 推荐的认证方式
P8 证书工作原理:
1.
生成一个私钥 (.p8 文件)
2.
使用私钥生成 JWT
3.
将 JWT 发送给 APNs 服务器
4.
APNs 验证 JWT 后发送推送通知

🔐 二、生成 P8 证书(详细步骤)#

2.1 登录 Apple 开发者账号#

1.
访问 Apple Developer
2.
使用您的 Apple ID 登录

2.2 创建 Apple ID 证书#

1.
在左侧菜单中,点击 Certificates, Identifiers & Profiles
2.
在 Keys 选项卡中,点击 + 按钮
3.
选择 App Push Notifications → Continue
4.
为证书命名 (例如: YixinIM_P8_Certificate)
5.
点击 Continue → Register

2.3 下载 P8 证书#

1.
创建完成后,点击 Download 按钮
2.
保存为 YixinIM_P8.p8 文件 (建议保存在安全位置)
重要提示: 这是唯一可以下载的私钥,务必妥善保存

2.4 获取 Team ID#

1.
在 Account → Membership 页面
2.
找到 Team ID (例如: ABCD1234EF)
该 ID 用于 JWT 的 iss 字段

⚙️ 三、配置 Apple Developer 账号#

3.1 为应用启用推送通知#

1.
在 Certificates, Identifiers & Profiles → Identifiers
2.
选择您的 App ID (例如: com.yixinim.app)
3.
点击 Edit 按钮
4.
在 Push Notifications 部分,勾选 Enable
5.
点击 Save

3.2 配置推送环境#

1.
为应用添加 Development 和 Production 环境:
Development: 用于测试
Production: 用于正式发布
2.
保存更改

🛠️ 四、在壹信 IM 后端配置 APNs#

4.1 上传 P8 证书到后端#

1.
将 YixinIM_P8.p8 文件上传到后端服务器
例如: /var/www/yixinim/apns/YixinIM_P8.p8
2.
确保文件权限:

4.2 修改配置文件#

1.
打开配置文件 config.yaml (位于后端项目根目录)
2.
找到 apns 部分,添加或修改以下内容:
重要提示:
team_id 是 Apple 开发者账号中的 Team ID
app_id 是您在 Apple Developer 中注册的 App ID
environment 在开发阶段设为 development,发布时设为 production

🔌 五、在 iOS 应用中配置推送通知#

5.1 修改应用的 Info.plist#

1.
在 Xcode 项目中打开 Info.plist
2.
添加以下键值对:
<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

5.2 实现推送通知注册#

在 AppDelegate.swift 中添加以下代码:

5.3 发送 deviceToken 到后端#


🧪 六、测试推送通知#

6.1 使用 Postman 测试推送#

1.
打开 Postman
2.
创建新请求
方法: POST
URL: https://api.yourdomain.com/api/v1/push/send
3.
在 Headers 中添加:
Content-Type: application/json
Authorization: Bearer <your_jwt_token>
注意: 如果您的后端使用 JWT 认证,需要添加 Bearer Token
4.
在 Body 中添加 JSON:
{
  "device_tokens": ["your_device_token"],
  "title": "测试通知",
  "body": "这是壹信 IM 的推送通知测试",
  "data": {
    "type": "message",
    "message_id": "12345"
  }
}

6.2 通过后端 API 测试#

如果您有管理界面,可以使用管理界面发送测试通知。

🛠️ 七、常见问题与解决方案#

7.1 问题: "Invalid Team ID"#

原因: team_id 不正确
解决方案:
1.
登录 Apple Developer 账号
2.
找到 Account → Membership
3.
复制 Team ID (格式: ABCD1234EF)
4.
确保 config.yaml 中的 team_id 与之匹配

7.2 问题: "Missing or invalid authentication"#

原因: P8 证书路径错误或权限问题
解决方案:
1.
检查 P8 证书路径:
应该显示: -rw------- 1 root root 1234 Mar 7 00:00 YixinIM_P8.p8
2.
确保文件权限为 600:

7.3 问题: "Invalid device token"#

原因: deviceToken 无效或格式错误
解决方案:
1.
确保在 application(_:didRegisterForRemoteNotificationsWithDeviceToken:) 中正确获取 deviceToken
2.
确保 deviceToken 是 64 字符的十六进制字符串
3.
确保发送到后端的 deviceToken 与 Apple 服务器返回的格式一致

7.4 问题: "No response from APNs"#

原因: 网络防火墙阻止了连接
解决方案:
1.
确保服务器可以访问 APNs 服务器:
开发环境: api.development.push.apple.com:443
生产环境: api.push.apple.com:443
2.
检查服务器防火墙:

📌 八、安全最佳实践#

8.1 保护 P8 证书#

不要将 P8 证书提交到 Git 仓库
使用环境变量存储证书路径 (在 config.yaml 中使用环境变量)
限制文件权限 (600)
定期轮换 P8 证书 (建议每 6 个月)

8.2 使用环境变量 (推荐)#

1.
在服务器上设置环境变量:
2.
修改 config.yaml:

🎯 九、壹信 IM 推送通知测试流程#

1.
开发阶段:
使用 development 环境
在 Xcode 中运行应用
获取 deviceToken
通过后端 API 发送测试通知
2.
测试阶段:
使用 TestFlight 测试版本
测试不同推送场景
验证通知样式、声音、图标
3.
生产阶段:
将 environment 改为 production
确保 P8 证书配置正确
使用正式的 App ID 和 Team ID

✅ 十、总结#

您已成功配置壹信 IM 应用的苹果推送通知:
1.
生成 P8 证书 (在 Apple Developer 中)
2.
配置 Apple Developer 账号 (启用推送通知)
3.
配置后端 (config.yaml 中的 APNs 设置)
4.
配置 iOS 应用 (注册推送通知)
5.
测试推送通知 (使用 Postman 或后端 API)
重要提示:
确保 team_id 和 app_id 与 Apple Developer 中的完全一致
为开发和生产环境使用不同的 P8 证书
在生产环境中,务必使用 production 环境
安全提示: P8 证书是应用安全的关键,务必妥善保管,不要泄露到公共仓库或共享环境。

📎 附录:P8 证书配置检查清单#

检查项验证方法
P8 证书已生成在 Apple Developer 中确认 Key 已创建
Team ID 正确从 Apple Developer 账号的 Membership 页面复制
App ID 正确在 Apple Developer 中确认 App ID 与应用匹配
环境配置config.yaml 中 environment 设置为 development (测试) 或 production (生产)
证书路径文件路径正确,权限为 600
iOS 应用注册Info.plist 中包含 remote-notification
deviceToken 发送应用成功将 deviceToken 发送到后端

💡 额外提示#

Apple 推送通知调试工具: Apple Push Notification Service 提供了详细的调试指南
推送通知测试: 可以使用 APNs Tester 工具进行测试
通知样式: 在 config.yaml 中可以配置推送通知的样式 (如 sound, badge, category)
恭喜!您已成功配置壹信 IM 的苹果推送通知服务,用户将能够接收实时消息通知!
修改于 2026-03-06 16:28:20
上一页
iOS苹果打包教程
下一页
macOS电脑打包教程
Built with