IM 即时通讯
iOS
开发指南

集成 APNs 推送服务

更新时间: 2023/08/28 17:22:26

iOS 的离线推送需要通过 APNs 服务器来进行发送,因此在使用云信 NIM SDK 提供的离线推送功能之前,首先需要在您的项目中集成 APNs 离线推送服务,并实现与云信服务端的通信。

本文主要介绍如何集成 APNs 离线推送服务。

APNs 通信方式

云信服务端与 APNs 通信的方式分为以下两种:

  • 使用 TLS 证书与 APNs 通信(文件扩展名为 .p12 的证书文件)

    • 云信服务端通过 TLS 证书对 APNs 进行身份验证后,发送离线推送。该证书可以同时支持生产环境和开发环境。
    • TLS 证书的有效期为一年。超出有效期后,必须创建新的证书,重新提供给云信。
  • 使用验证令牌与 APNs 通信(文件扩展名为 .p8 的密钥文件)

    • 云信服务端通过令牌对 APNs 进行身份验证后,发送离线推送。该证书可以同时支持生产环境和开发环境。
    • 一个 APNs 签名密钥验证多个 App 的令牌,即多个应用程序可以使用同一个签名密钥。
    • 签名密钥不会过期,因此只需提供一次,后续无需更新。

更多详细信息请参考使用验证令牌与 APNs 通信使用 TLS 证书与 APNs 通信

本文主要介绍使用 TLS 证书与 APNs 通信的形式(即通过 p12 推送证书)实现离线推送功能。

实现流程

步骤 1:创建 App ID 并开启推送功能

使用 APNs 推送服务前,您需要先拥有一个 App ID。若已拥有 App ID,则跳过此章节,只需在您原有的 App ID 上增加 Push NotificationService。如需要了解更详细的说明,请参考 注册 App ID

  1. 登录Apple 开发者网站,选择导航栏的Account

  2. 进入 Certificates, IDs & Profiles(证书、标识符和描述文件),单击 Identifiers(标识符)。

  3. 单击 Identifiers 右侧的“+”按钮。

  4. 从选择项中选择 App IDs,单击 Continue。然后确认已自动选择的 App ID 类型,再单击 Continue

  5. 填写 App ID 账号信息。

    • Description 中输入 App ID 的名称或描述。
    • 选择 Explicit App ID,并在 Bundle ID 中输入 App 的 Bundle ID
    • Bundle ID不能使用通配符 *,否则将无法使用远程推送服务。
    • 此处填写的 Bundle ID 应与 Xcode 中目标的 Summary 面板中输入的 Bundle ID 一致。
  6. Capabilities 中会显示 App 类型以及可使用的功能。勾选 Push Notifications 启用推送通知功能。 您还可以根据实际需求勾选其他对应的功能。

  7. 单击 Continue,再次确认注册信息后,单击 Register

步骤 2:创建推送证书

您可以根据 APNs 通信方式,选择创建文件扩展名为 .p12 的证书或者文件扩展名为 .p8 的密钥。

步骤 3:上传推送证书至云信

  1. 登录云信控制台,在控制台首页应用管理中选择应用进入应用配置页面。

  2. 顶部选择证书管理页签,进入推送证书配置页。

    证书管理.png

  3. 在对应的 iOS 证书配置项中,单击添加证书

    • iOS APNs p12 推送证书

      P12证书.png

    • iOS APNs P8 推送证书

      P8证书.png

  4. 填写证书信息并上传证书文件后,单击确定

    • 证书名称与 p12/p8 证书一一对应,服务器将根据证书名称来自动选择 p12/p8 文件。
    • ⽣产环境或开发环境,请选择与该证书⽣成时相同的环境类型。

步骤 4:创建并安装配置文件

您需要创建一个 Provisioning Profile(配置文件),才能在设备上运行您的应用程序,使用推送通知功能。

  1. Apple 开发者网站Certificates, IDs & Profiles(证书、标识符和描述文件)中,单击 Profiles(描述文件)。然后单击右侧的“+”按钮。

  2. 选择 Provisioning Profile的环境,单击 Continue

  3. 选择对应的 App ID,单击 Continue

    对应appid.png

  4. 选择所属的开发者证书,若创建了多个,选择 Select All,单击 Continue

    selectall.png

  5. 选择需要安装的设备(一般选择 Select All),单击 Continue

  6. 填写 Profile Name,单击 generate,完成创建。

    profilename.png

  7. 单击 Download下载到本地,然后双击下载的 Provisioning Profile 文件,将其添加到 Xcode。

步骤 5: 获取当前设备的 deviceToken

在您 App 的 application 中添加如下代码,向 APNs 服务端请求推送权限,获取 deviceToken。

考虑到合规,建议您在同意隐私协议之后再向 APNs 服务端请求 deviceToken。

示例代码如下:

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    NSString * key = @"customAPNsType";
    [[NIMSDK sharedSDK] updateApnsToken:deviceToken
                       customContentKey:key];
    DDLogInfo(@"didRegisterForRemoteNotificationsWithDeviceToken:  %@", deviceToken);
}
此文档是否对你有帮助?
有帮助
去反馈
  • APNs 通信方式
  • 实现流程
  • 步骤 1:创建 App ID 并开启推送功能
  • 步骤 2:创建推送证书
  • 步骤 3:上传推送证书至云信
  • 步骤 4:创建并安装配置文件
  • 步骤 5: 获取当前设备的 deviceToken