集成 APNs 远程推送
融云服务端已集成 APNs 服务端功能。当 App 被杀进程,或者在后台被挂起,或者在后台存活超过 2 分钟,SDK 长连接通道会断开,此时融云服务端可将消息通过 APNs 通道通知客户端。
融云服务端对 APNs 的支持
融云服务端支持与 Apple APNs 服务端的以下验证方式:
类别 | 区别 | 必要凭证 |
---|---|---|
使用验证令牌(P8) | APNs 侧对基于令牌的推送请求处理更快。同一帐户下的应用程序可以使用同一个 P8 证书,不区分沙盒与生产环境。P8 证书永久有效。 | 您需要从 Apple 开发人员账户中获取签名密钥(.p8 后缀的文本文件),并提供给融云。融云将使用您的密钥对 APNs 推送请求中的 Token 进行签名。 |
使用 TSL 证书(P12) | 必须与 Apple App ID 绑定,仅可用于该 App。APNs 证书可以只支持沙盒环境(P12 证书),同时支持生产环境和沙盒环境(P12 通用证书)。有效期一年。 | 您可以从 Apple 开发人员账户获取该证书,并提供给融云。融云将使用该证书与 APNs 进行身份验证。证书在一年后过期,请务必在过期前创建新证书,然后将其提供给融云。 |
以上内容摘自 Apple 官方开发者文档。如有疑问,详见 Apple 开发者帐户帮助:使用验证令牌与 APNs 通信 与 使用 TLS 证书与 APN 通信。
下图以使用 TSL 证书为例,说明融云离线消息触发 APNs 推送的流程:
Apple 开发者账户的操 作
您必须持有 App ID 才能使用 APNs 推送服务。以下描述了如何从 Apple 开发者账户页面创建 App ID,以及为 App ID 启用 Push Notifications(推送通知功能)。
创建 App ID
如已持有 App ID,请跳过此步骤,直接查看启用 App ID 的推送功能。
以下步骤描述如何从 Apple 开发者账户创建 App ID:
-
在 Certificates, Identifiers & Profiles(证书、标识符和描述文件)中,点按边栏中的 Identifiers (标识符),然后点按左上方的添加按钮 (+)。
-
从选项列表中选择 App IDs(App ID),点按 Continue(继续)。
-
从选项中,确认已自动选择了 App ID 类型,然后点按 Continue(继续)。
-
在 Description(描述)栏位中输入 App ID 的名称或描述。请选择 Explicit App ID (精确 App ID),并在 Bundle ID 栏位中输入 App 的 Bundle ID。
您在这里输入的精确 App ID 应该与 Xcode 中目标的 Summary (摘要)面板中输入的 Bundle ID 一致。
-
Capabilities (功能)下面会显示您的 App 类型和可以使用的功能。选中相应的复选框,以启用您想要使用的 App 功能。
请勾选 Push Notifications 以启用推送通知功能。
-
点按 Continue(继续),检查注册信息,然后点按 Register(注册)。
关于上述创建 App ID 步骤的详细说明,可参考 Apple 开发者帐户帮助文档:注册 App ID。
启用 App ID 的推送功能
以下内容来自 Apple 开发者账户帮助文档: 启用推送通知。
以下步骤描述如何从 Apple 开发者账户为已有的 App ID 启用推送通知功能。如已启用,可跳过该步骤。
-
在 Certificates, Identifiers & Profiles(证书、标识符和描述文件)中,点按边栏中的 Identifiers (标识符),然后找到对应的 App ID 进行配置。
-
在 Capabilities 中勾选 Push Notifications。
启用 App ID 的推送功能后,请根据需要选择创建 P8 证书或者 P12 证书。
使用验证令牌(P8)
如需了解 “使用验证令牌与 APNs 通信”,可参见 Apple 开发者文档 Establishing a Token-Based Connection to APNs。以下步骤来自 Apple 开发者账户帮助文档: 创建并下载启用了 APNs 的私钥。
您需要从 Apple 开发人员账户中创建并下载用于 APNs 推送服务的私钥(.p8
后缀的文本文件,也称为 “P8 证书”)。
-
在 Certificates, Identifiers & Profiles(证书、标识符和描述文件)中,点按边栏中的 Keys (密钥),再点按左上方的添加按钮 (+)。
-
在 Key Name(密钥名称)下面,为密钥输入唯一的名称。勾选 Apple Push Notifications service (APNs),以启用 APNs 服务,再点按 Continue(继续)。
-
检查密钥配置,再点击 Confirm。
-
点按 Download(下载),立即生成并下载密钥文件。密钥会以文件扩展名为
.p8
的文本文件形式下载到本地。- 注意:请记录下 Key ID,后续需要使用。
- 警告:密钥只可下载一次,下载后将从您的开发者帐户中移除,因此请务必妥善保管。如果 Download(下载)按钮处于停用状态,则表示您已经下载过这个密钥。
-
点按 Done(完成)。
获取 .p8
文件后,您可以前往融云控制台上传文件。详见上传证书到融云。
使用 TSL 证书(P12)
如需了解 p12 证书及“使用 TLS 证书与 APNs 通信”,可参见 Apple 开发者文档 Establishing a Certificate-Based Connection to APNs。
创建 p12 证书需要先从本地创建证书签名请求 (CSR),再前往 Apple 开发者账户 上传 CSR 生成证书(.cer
)文件,下载到本地,在 Mac 上导出为 .p12
格式的证书。
创建证书签名请求
Mac 上的“钥匙串访问”让您可以创建证书签名请求 (CSR)。
-
打开 Mac 应用中的钥匙串访问,选择证书助理,再选择从证书颁发机构请求证书。
-
填写证书信息,并保存到磁盘。
- 在证书助理对话框中,在“用户电子邮件地址”栏位中输入电子邮件地址。
- 在常用名称栏位中,输入密钥的名称 (例如,RongCloud)。
- 将 CA 电子邮件地址栏位留空。
- 选取存储到磁盘, 然后点按继续。
生成 cer 格式证书
如有多个 App,则需要为每个 App 生成单独的客户端 TLS 证书。
本步骤描述如何从 Apple 开发者账户生成 .cer
后缀的推送证书。注意,本步骤创建的 .cer
文件必须转换为 .p12
后缀的文件后才能在融云控制台上传使用。
以下两种方式仅存在 UI 操作上的区别,任选一种即可。
-
方式一:从 Apple 开发账户的 Certificates(证书)页面操作,生成
.cer
文件。-
在 Certificates, Identifiers & Profiles(证书、标识符和描述文件)中,点按边栏中的 Certificates (证书),然后点按左上方的添加按钮 (+)。
-
选择证书种类,点按 Continue(继续)。
- Apple Push Notification service SSL(Sandbox):仅可向 APNs Sandbox 环境推送。仅可在融云控制台的环境使用此类证书,生产环境不允许使用此类证书。
- Apple Push Notification service SSL(Sandbox & Production):可向 APNs Sandbox 和 Production 环境推送,可在融云应用的开发环境和生产环境中使用。
-
选择需要生成证书的 App ID,点按 Continue(继续)。
-
在 Mac 上创建证书签名请求。如果您已按上文指导创建了 CSR 文件,可跳过这一步。
-
点击 Choose File(选取文件),将生成的请求证书(CSR文件)上传,点按 Continue(继续)。
-
点击 Download 将证书下载到本地。
-
-
方式二:从 Apple 开发账户的 Identifiers (标识符)页面操作,生成
.cer
文件。提示-
在 Certificates, Identifiers & Profiles(证书、标识符和描述文件)中,点按边栏中的 Identifiers (标识符),然后选择要设置的 App ID。
-
在 Capabilities(功能)下,确认已选中 Push Notifications (推送通知)复选框。
-
点按 Configure(配置),进入创建证书页面。选择需要配置证书的环境,点按 Create Certificate(创建证书)。APNs 提供生产与开发两个环境。
- Development SSL Certificate:仅可向 APNs Sandbox 环境推送。仅可在融云控制台的环境使用此类证书,生产环境不允许使用此类证书。
- Production SSL Certificate:可向 APNs Sandbox 和 Production 环境推送,可在融云应用的开发环境和生产环境中使用。
-
在 Mac 上创建证书签名请求。如果您已按上文指导创建了 CSR 文件,可跳过这一步。
-
点击 Choose File(选取文件),将生成的请求证书(CSR文件)上传,点按 Continue(继续)。
-
点击 Download 将证书下载到本地。
-
转换 cer 文件为 P12 格式证书
-
双击下载到本地的证书文件(
.cer
),证书会自动导入钥匙串中。证书的名称为Apple [Development/Production] iOS Push Services: [Bundle ID]
,或者Apple Push Services: [Bundle ID]
。 -
在 Mac 应用 钥匙串访问 中,左侧点击 登陆 和 证书,选择刚导入的证书,右键导出为扩展名为
.p12
的证书文件。 -
系统将显示一个对话框,提示输入将用于保护导出项目的密码。您在此输入的密码将在后续将 p12 证书上传到融云后台时使用,请务必记录该密码。
-
再输入一次证书密码,执行导出操作。
在融云控制台配置 APNs 推送
您需要将创建的 APNs Auth Key 文件(P8)或者 TSL 证书(P12)上传到融云后台,融云服务端才能与 APNs 通信,向 iOS 客户端发送推送通知。
-
前往 融云控制台,点击 应用标识 并找到当前需要集成的项目,然后点击 设置推送。如果未创建可点击 添加。
-
填写 Bundle Identifier。
-
如果您创建了 P8 证书文件,鉴权方式请选择 Token Authentication。具体步骤如下:
-
点击上传 P8 文件,选择您创建的 APNs 签名密钥
.p8
文件。 -
填写 Key ID(参见创建 p8 证书)。
-
填写 Team ID。您可以在 Apple 开发者账户 的 Membership 页面获取 Team ID。
-