在iOS开发中,推送服务是非常重要的一环。由于iOS设备的限制,开发者需要使用苹果提供的推送服务来向用户发送消息。然而,在开发过程中,有时会遇到推送证书过期或无法使用的问题。这时,我们需要去推送签名,以便继续使用推送服务。下面将详细介绍iOS11去推送签名的原理和步骤。
一、什么是推送签名
推送签名是指用于标识推送服务的证书。在iOS开发中,我们需要使用苹果提供的推送服务来向用户发送消息。为了确保数据传输的安全性,苹果要求开发者使用推送证书来标识自己的应用程序。推送证书包含公钥和私钥,私钥用于加密数据,公钥用于解密数据。当我们向用户发送消息时,需要将消息加密后发送给苹果服务器,苹果服务器再将消息解密后发送给用户的设备。而推送证书就是用来保证数据传输的安全性。
二、原理
在iOS11中,推送服务的认证方式发生了变化。以前,开发者只需要在苹果开发者中心申请推送证书,并将证书导入到Xcode中即可。而在iOS11中,需要先在苹果开发者中心创建一个APNs信任配置文件,然后将该配置文件导入到Xcode中。在Xcode中进行打包时,Xcode会自动将配置文件打包到应用程序中。当应用程序运行时,会自动读取该配置文件,并使用其中的证书进行推送服务的认证。
三、步骤
1.创建APNs信任配置文件
在苹果开发者中心创建APNs信任配置文件的步骤如下:
1)登录苹果开发者中心,进入“Certificates, Identifiers & Profiles”页面。
2)选择“Identifiers”,点击“App IDs”,找到需要使用推送服务的应用程序,在右侧点击“Edit”。
3)在“Edit App ID”页面中,勾选“Push Notifications”,点击“Continue”。
4)在“Configure App ID for Push Notifications”页面中,选择“Create Certificate”,按照提示操作,生成推送证书。
5)证书生成后,下载证书,双击安装到Keychain中。
6)在Keychain中找到证书,右键点击证书,选择“Export”,将证书导出为.p12格式的文件。
7)打开终端,输入以下命令,将.p12格式的证书转换为.pem格式:
$ openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
$ openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
$ cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
8)将生成的apns-dev.pem文件上传到服务器。
2.导入APNs信任配置文件
在Xcode中导入APNs信任配置文件的步骤如下:
1)打开Xcode,选择“File”->“New”->“Target”。
2)选择“iOS”->“App Extension”->“Notification Service Extension”,点击“Next”。
3)输入扩展程序的名称,点击“Finish”。
4)在新建的扩展程序中,找到“Info.plist”文件,将其打开。
5)在“Info.plist”文件中,添加“aps-environment”键,并将其值设置为“development”或“production”,代表开发或生产环境。
6)在“Info.plist”文件中,添加“NSExtension”键,将其值设置为“NSExtensionAttributes”,并在“NSExtensionAttributes”中添加“apns-topic”键,将其值设置为应用程序的bundle ID。
7)在“Info.plist”文件中,添加“NSExtension”键,将其值设置为“NSExtensionPointIdentifier”,并将其值设置为“com.apple.usernotifications.service”。
8)在“Info.plist”文件中,添加“NSExtension”键,将其值设置为“NSExtensionPrincipalClass”,并将其值设置为扩展程序的主类名。
9)在Xcode中,打开应用程序的“Target”,找到“Capabilities”选项卡,将“Push Notifications”和“Background Modes”开关打开。
10)在“Capabilities”选项卡中,找到“Push Notifications”选项,点击“Configure”,选择“Create Certificate”,按照提示操作,生成推送证书。
11)证书生成后,下载证书,双击安装到Keychain中。
12)在Keychain中找到证书,右键点击证书,选择“Export”,将证书导出为.p12格式的文件。
13)打开终端,输入以下命令,将.p12格式的证书转换为.pem格式:
$ openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
$ openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
$ cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
14)将生成的apns-dev.pem文件上传到服务器。
四、总结
推送服务是iOS应用程序开发中非