跳转到主要内容
向 iOS 应用发送推送通知需要与 Apple Push Notification service (APNs) 的身份验证连接。您可以使用**基于令牌的 (.p8 密钥)基于证书的 (.p12 文件)**方法进行身份验证——只需要一种。 本指南介绍基于令牌的 .p8 密钥,这是推荐的方法。

要求

在开始之前,请确保您具备以下条件:

设置 APNs 身份验证

在 Apple Developer 账户中生成您的 .p8 密钥

有关 Apple 的完整说明,请参阅创建私钥以访问服务
  1. 登录您的 Apple Developer 账户
  2. 转到证书、标识符和配置文件 > 密钥
  3. 点击蓝色加号 (+) 图标。
    • 如果您看不到它,请联系您的管理员获取访问权限。
Apple Developer 密钥页面,显示用于创建新密钥的蓝色加号图标
  1. 选择 Apple Push Notifications service (APNs)
  2. 配置密钥时,确保选中沙盒和生产
Apple Developer 密钥配置,已选择沙盒和生产
  1. 输入密钥名称并点击继续,然后点击注册
Apple Developer 密钥注册页面,显示继续和注册按钮
  1. 下载您的 .p8 密钥并安全存储。您将无法再次下载它。
如果您需要创建新的 .p8 而已经有两个,您必须先撤销现有密钥中的一个——它将不再可用。

将 .p8 密钥上传到 OneSignal

  1. 在您的 OneSignal 控制台中导航到设置 > 推送和应用内 > Apple iOS (APNs) 设置
OneSignal 设置页面,显示推送和应用内部分以及 Apple iOS APNs 设置
  1. 选择 **.p8 认证密钥(推荐)**作为身份验证方法。
OneSignal APNs 身份验证方法选择,显示推荐的 p8 认证密钥选项
提供以下内容:
  • .p8 文件 – 您从 Apple Developer 帐户下载的私钥文件。
  • 密钥 ID – 一个 10 位字母数字字符串(例如 ABC123DEFG),位于您 Apple Developer 帐户密钥部分中密钥名称旁边。确保它与下载的 .p8 文件匹配。
  • 团队 ID – 一个 10 位字母数字字符串(例如 9A1B2C3D4E),显示在您的 Apple Developer 帐户右上角团队名称旁边。这与密钥 ID 不同
  • 应用包 ID – 一个反向域名字符串(例如 com.example.app),可在以下位置找到:
    • 您 Apple Developer 帐户的标识符部分,或
    • Xcode > 主应用目标 > 签名和功能
密钥 ID团队 ID 都是在您的 Apple Developer 帐户中找到的 10 位字符串,但位于不同的位置。请仔细检查您没有混淆它们——这是最常见的配置错误。
Apple Developer 帐户,显示密钥 ID 和团队 ID 的位置
Xcode 签名和功能选项卡,显示包标识符字段
完成后点击保存并继续
您已成功在 OneSignal 中设置了使用 .p8 密钥的 APNs 身份验证您的 iOS 应用现在已准备好发送和接收推送通知!🎉

.p8 故障排除

1

检查 .p8 文件格式

  • 在文本编辑器中打开 .p8 文件。
  • 它应该看起来像这样:
    -----BEGIN PRIVATE KEY-----
    64 character line
    64 character line
    64 character line
    8 character line
    -----END PRIVATE KEY-----
    
2

确保您没有错误上传 .p12 文件

  • .p8 密钥来自您 Apple Developer 帐户的密钥部分。
  • .p12 证书来自证书部分。这些与 .p8 身份验证不兼容。
3

确认您拥有正确的密钥 ID

  • 转到您的 Apple Developer > 密钥部分
  • 密钥 ID 是密钥名称旁边显示的 10 位字符串(例如 ABC123DEFG)。
  • 将您在 OneSignal 中输入的密钥 ID 与下载的 .p8 密钥列出的 ID 匹配。
  • 不要与团队 ID 混淆——两者都是 10 位字符串,但位于不同的位置。
4

验证团队 ID

  • 您的团队 ID 是在您 Apple Developer 帐户右上角团队名称旁边显示的 10 位字符串。
  • 确保它被精确复制并与生成密钥的帐户匹配。
  • 不要与密钥 ID 混淆——团队 ID 标识您的开发者帐户,而不是特定密钥。
5

确保密钥具有 APNs 功能

  • 在 Apple Developer 中查看您的密钥时,应列出 Apple Push Notifications service (APNs) 功能。
  • 如果没有,请撤销密钥并创建一个新的。
6

等待几分钟

  • 新创建的密钥可能需要 10–15 分钟的传播时间,然后 Apple 才允许外部身份验证。
  • 如果您在创建后立即遇到验证错误,请等待并再次尝试。

当所有其他方法都失败时

  • 撤销当前的 .p8 密钥并从头创建一个新的。
  • 仔细检查您使用的是来自创建密钥的同一帐户的有效包 ID
  • 联系 support@onesignal.com,提供密钥 ID、团队 ID、包 ID 以及您的 Apple Developer 密钥配置的编辑截图。

后续步骤


常见问题

.p8 和 .p12 有什么区别?

.p8 密钥是一种基于令牌的身份验证密钥,不会过期,适用于您 Apple Developer 帐户下的所有应用。.p12 证书是特定于应用的,一年后过期,需要每年续期。OneSignal 推荐使用 .p8,因为它更简单且维护成本更低。有关替代方法,请参阅 .p12 证书指南

我的 .p8 密钥会过期吗?

不会。与 .p12 证书不同,.p8 密钥不会过期。一旦创建,.p8 密钥将一直有效,直到您在 Apple Developer 帐户中撤销它。

我可以对多个应用使用一个 .p8 密钥吗?

可以。单个 .p8 密钥适用于同一 Apple Developer 帐户下的所有应用。您可以将同一 .p8 文件上传到多个 OneSignal 应用——每个应用只需要自己唯一的包 ID。

我需要配置文件吗?如何创建?

是的,Apple 要求为开发、测试 (Ad Hoc) 和分发到 App Store 使用不同类型的配置文件。 在 Xcode 中,选择自动管理签名来自动创建一个。
Xcode 签名和功能选项卡,已启用自动管理签名
否则,请参阅 Apple 关于配置文件的文档了解详细信息。