iOS

最近更新时间:2024-09-19 11:49:01

我的收藏
本文将在您拥有开发者账号开发/分发证书的前提下,引导您创建和使用推送证书描述文件
如果您对“开发者账号”或“开发/分发证书”有任何疑问,可以参考附录中的相关概念。

一、推送证书配置(APNs)

集成 TIMPush 组件之前,需要先向 Apple 申请 APNs 推送证书,然后上传推送证书到 IM 控制台 。之后按照快速接入步骤接入即可。
Apple 厂商配置目前有两种主流的证书,p12 证书和 p8 证书。两种证书各有优劣,您可按需要选择其中的一种。

证书类型
有效期和管理
安全性
灵动岛
p12 证书
p12 证书是一个包含公钥和私钥的二进制文件,用于基于证书的身份验证。它将公钥证书和私钥捆绑在一个文件中,扩展名为 .p12 或 .pfx。
p12 证书通常有一年的有效期,过期后需要重新生成和部署。每个应用程序都需要单独的 P12 证书来处理推送通知。
证书:p12 证书使用基于证书的身份验证,需要在服务器上存储私钥。这可能会增加安全风险,因为私钥可能会被未经授权的用户访问。
不支持
p8 证书
p8 证书是一个 Auth Key(授权密钥),用于基于令牌的身份验证。它是一个包含私钥的文本文件,扩展名为 .p8。
p8 证书没有到期日期,因此您无需担心证书过期。此外,使用 P8 证书可以简化证书管理,因为您可以使用一个 p8 证书为多个应用程序提供推送通知服务。
p8 证书使用基于令牌的身份验证,这意味着您的服务器会周期性地生成一个 JSON Web Token(JWT)来与 APNs 建立连接。这种方法更安全,因为它不需要在服务器上存储私钥。
支持灵动岛推送

方式一:使用 p12 证书 (传统APNs推送证书)

步骤1:申请 APNs 证书

1. 登录 苹果开发者中心 网站,单击 Certificates,Identifiers & Profiles 或者侧栏的 Certificates,IDs & Profiles,进入 Certificates, IDS & Profiles 页面。

2. 单击 Identifiers 右侧的 +

3. 您可以参见如下步骤新建一个 AppID,或者在您原有的 AppID 上增加 Push NotificationService
说明:
您 App 的 Bundle ID 不能使用通配符 *,否则将无法使用远程推送服务。
4. 勾选 App IDs,单击 Continue 进行下一步。

5. 选择 App,单击 Continue 进行下一步。

6. 配置 Bundle ID 等其他信息,单击 Continue 进行下一步。

7. 勾选 Push Notifications,开启远程推送服务。




生成证书

1. 选中您的 AppID,选择 Configure

2. 可以看到在 Apple Push Notification service SSL Certificates 窗口中有两个 SSL Certificate,分别用于开发环境(Development)和生产环境(Production)的远程推送证书,如下图所示:

3. 
们先选择开发环境(Development)的 Create Certificate,系统将提示我们需要一个 Certificate Signing Request(CSR)。

4. 在 Mac 上打开钥匙串访问工具(Keychain Access),在菜单中选择钥匙串访问 > 证书助理 > 从证书颁发机构请求证书Keychain Access - Certificate Assistant - Request a Certificate From a Certificate Authority)。



5. 输入用户电子邮件地址(您的邮箱)、常用名称(您的名称或公司名),选择存储到磁盘,单击继续,系统将生成一个 *.certSigningRequest 文件。



6. 返回上述 步骤3 中 Apple Developer 网站刚才的页面,单击 Choose File 上传生成的 *.certSigningRequest 文件。



7. 单击 Continue,即可生成推送证书。



8. 单击 Download 下载开发环境的 Development SSL Certificate 到本地。



9. 再次按照上述步骤1 - 8,将生产环境的 Production SSL Certificate 下载到本地。
说明:
生产环境的证书实际是开发(Sandbox)+生产(Production)的合并证书,可以同时作为开发环境和生产环境的证书使用。






10. 双击打开下载的开发环境和生产环境的 SSL Certificate,系统会将其导入钥匙串中。
11. 打开钥匙串应用,在登录 > 我的证书,右键分别导出刚创建的开发环境(Apple Development IOS Push Service)和生产环境(Apple Push Services)的 p12 文件。

注意
保存.p12文件时,请务必要为其设置密码。步骤2:上传证书到控制台。

步骤2:上传 p12 证书到IM控制台

2. 单击目标应用卡片,进入应用的基础配置页面。



3. 单击 iOS 原生离线推送设置右侧的添加证书
4. 选择证书类型,上传 iOS 证书(p.12),设置证书密码,单击确认

注意:
上传的推送证书时需要确认下 Bundle ID 与您的主 App 的Bundle ID一致。
上传证书名最好使用全英文(尤其不能使用括号等特殊字符)。
上传证书需要设置密码,无密码收不到推送。
发布 App Store 的证书需要设置为生产环境,否则无法收到推送。
上传的 p12 证书必须是自己申请的真实有效的证书。
5. 待推送证书信息生成后,记录证书的 ID。


方式二:使用 p8 证书 (支持灵动岛推送)

p8 证书:p8 证书没有到期日期,因此您无需担心证书过期。此外,使用 p8 证书可以简化证书管理,因为您可以使用一个p8 证书为多个应用程序提供推送通知服务。另外,p8 证书支持灵动岛推送。

步骤1:申请 APNs 证书

要创建 p8 证书文件,首先需要登录 苹果开发者中心

1. 进入Certificates,Identifiers & Profiles:在页面右上角单击 Account,然后在下拉菜单中选择 Certificates, Identifiers & Profiles
2. 创建一个新的 App ID:在左侧菜单中单击 Identifiers ,然后单击右侧的 + 创建一个新的 App ID。填写相应的信息并单击 Continue
3. 创建一个新的密钥:在左侧菜单中单击 Keys,然后单击右侧的 + 创建一个新的密钥。输入密钥的名称,然后勾选 Apple Push Notifications service (APNs),单击 Continue

确认并生成密钥:在确认页面核对您的密钥信息,然后单击 Register 。接下来,您将看到一个页面提示您下载密钥。单击 Download,将生成的 .p8 文件保存到您的计算机上。
注意:
p8 证书只可以下载一次,请妥善保存。
请妥善保管下载的 p8 文件,因为您将无法再次下载该文件。您可以使用此P8证书配置您的iOS应用程序以接收推送通知。

步骤2:上传 p8 证书到IM控制台

2. 单击目标应用卡片,进入应用的基础配置页面。
3. 单击 iOS 原生离线推送设置右侧的添加证书
4. 选择 .p8 证书
5. 选择生产环境、开发环境各上传一份(您需要准备的材料一致,仅由后端为您分配 APNs 的推送环境)


说明:
Key ID:这是您的 APNs Auth Key 的唯一标识符。当您在 Apple Developer Center 创建一个新的 APNs Auth Key 时,系统会为您生成一个 Key ID。您可以在 "Certificates, Identifiers & Profiles" 部分的 "Keys" 中找到它。
Team ID:这是您的开发者账户的唯一标识符。您可以在 Apple Developer Center 的账户详情页面找到它。点击右上角的 "Membership",在 "Membership Details" 部分可以找到您的 Team ID。
Bundle ID:这是您的应用程序的唯一标识符,也称为应用程序 ID。您可以在 Apple Developer Center 的 "Certificates, Identifiers & Profiles" 部分找到它。选择 "Identifiers",然后在您的应用程序列表中找到对应的 Bundle ID。

二、创建描述文件

步骤 1: 创建 App ID

1. 登录到 Apple Developer Center:
访问 Apple Developer Center 并登录你的开发者账户。
2. 创建 App ID:
在 "Certificates, Identifiers & Profiles" 部分,选择 "Identifiers"。
点击 "+" 按钮以创建新的 App ID。
选择 "App IDs" 并点击 "Continue"。
输入你的 App ID 名称和 Bundle ID(例如 com.yourcompany.yourapp)。
确保选择适当的功能(如 Push Notifications、App Groups 等),然后点击 "Continue" 并确认。

步骤 2: 创建 Service Extension 的 App ID (可选)

重复上述步骤,创建一个新的 App ID,用于你的 Service Extension。
Bundle ID 通常是主应用程序的 Bundle ID 后面加上扩展的标识符,例如 com.yourcompany.yourapp.extension。

步骤 3: 创建描述文件

1. 创建描述文件:
在 "Certificates, Identifiers & Profiles" 部分,选择 "Profiles"。
点击 "+" 按钮以创建新的描述文件。
选择 "iOS App Development" 或 "App Store"(根据你的需求),然后点击 "Continue"。
选择你刚刚创建的 App ID(主应用程序的 App ID),然后点击 "Continue"。
选择你的开发证书和设备(如果是开发描述文件),然后点击 "Continue"。
输入描述文件的名称,然后点击 "Generate"。
2. 为 Service Extension 创建描述文件(可选):
重复上述步骤,为你的 Service Extension 创建一个新的描述文件,确保选择对应的 App ID。

步骤 4: 下载和安装描述文件

1. 下载描述文件:
在描述文件创建完成后,点击 "Download" 按钮下载描述文件。
2. 安装描述文件:
双击下载的描述文件,它会自动在 Xcode 中安装。

三、Xcode添加推送权限

要在App中添加推送权限,请在 Xcode 项目中启用推送通知功能。

打开 Xcode 项目,在 Project > Target > Capabilities 页面中点击红框中的加号按钮,然后选择并添加 Push Notifications

添加后的结果如图中红框所示。


四、生成 App GroupID (可选)

当您需要使用 TIMPush 组件统计推送抵达率时,推荐您配置 TIMPushAppGroupID ,之后按照快速接入进行使用。
App GroupID 标识当前主 App 和 Extension 之间共享的 App Group,需要在主 App 的 Capability 中配置 App Groups 能力。

步骤1:登录苹果开发者中心网站,进入【identifiers】 ->【App Groups】创建 AppGroups。





步骤2:绑定需要使用的应用的 AppID 到 AppGroups。






步骤3:获取您的 TIMPushAppGroupID。



步骤4:在Xcode中配置 TIMPushAppGroupID。

打开 Xcode 项目,在 Project > Target > Capabilities 页面中点击红框中的加号按钮,然后选择并添加 App Groups

填入第3步中配置的 Group ID,例如 group.com.tencent.im.pushkey:


附录: 开发者账号、证书类型与描述文件

苹果开发者账号:
创建 iOS 证书和 Profile 需使用付费的苹果账号,苹果开发者账号有三种,个人开发者、公司开发者、企业开发者,用途各有不同。
个人开发者和公司开发者是 99 美元/年,企业开发者是 299 美元/年。
企业开发者一般是大企业开发内部应用时使用,不能上架 App Store 的。
请先确保你已经有一个个人开发者或公司开发者账号。
证书介绍:
证书有多种类型,用于不同的目的。以下是 iOS 证书的分类:
证书类型
区别
开发者证书(Developer Certificate)
用于在开发阶段对应用程序进行签名和调试。开发者证书由苹果开发者中心颁发,需要使用 Xcode 或者其他开发工具进行申请和管理。
分发证书(Distribution Certificate)
用于将应用程序分发给其他用户或者上传到 App Store 进行审核。分发证书由苹果开发者中心颁发,需要使用 Xcode 或者其他开发工具进行申请和管理。
推送证书(Push Certificate)
用于实现 APNs 远程推送功能,可以让应用程序接收来自服务器的推送通知。推送证书由苹果开发者中心颁发,需要使用 Xcode 或者其他开发工具进行申请和管理。
企业证书(Enterprise Certificate)
用于将应用程序分发给企业内部员工或者客户。企业证书由苹果开发者中心颁发,需要使用 Xcode 或者其他开发工具进行申请和管理。
描述文件介绍:
描述文件(Provisioning Profiles)同样也分两种,分为开发(Development)和发布(Distribution),配置文件中包含了证书、App ID、设备(Devices),
后缀名为 .mobileprovision。它在开发者账号体系中扮演着配置和验证的角色,是真机调试和打包上架必须的文件。
描述文件(Provisioning Profile
作用
开发(Development)
一个 Provisioning Profile 对应一个 App ID (Bundle ID)
Provisioning Profile 决定 Xcode 用哪个证书(公钥)/私钥组合(Key Pair/Signing Identity)来签名应用程序(Signing Product),将在应用程序打包时嵌入到 .ipa 包里。
Provisioning Profile 把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用。这样,只要在不同的情况下选择不同的 Provisioning Profile 文件就可以了。
Provisioning Profile 也分为 Development 和 Distribution 两类,有效期同 Certificate 一样。Development 版本的 ProvisioningProfile 用于开发调试,Distribution 版本的 ProvisioningProfile 主要用于提交 App Store 审核,其不指定开发测试的 Devices。
发布(Distribution)