远程通知:证书的生成和编程代码

本文详细介绍了如何使用APNs(Apple Push Notification Service)构建iOS应用推送通知系统,包括生成证书、编程实现以及服务器文件生成过程。重点在于通过SSL协议与APNs通讯,构建稳定高效的推送通知服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Push Notification Provider 是一个应用程序,用于通过 APNs 发送推送通知给 iPhone 应用。

通过 APNs 发送推送通知有几个步骤:
1. 使用前面创建的 SSL 证书与 APNs 通讯;

2. 构造所要发送的消息载体;

3. 发送载体到APNs;

APNs 是一个基于流的 TCP socket,你的 provider 以 SSL 协议与其通讯。推送通知(包括载体)是以二进制流的方式发送的。和APNs 建立连接后,你可以维持该连接并在连接中断之前发送多个通知。


1. 生成证书:a. 申请应用 app ID,勾选开发与发布的推送功能。

                       b.在mac电脑上,打开钥匙链。点击钥匙串访问--证书助理--从证书颁发机构请求证书--填写账号,名称,存储到磁盘。

                              生成了一个 CertificateSigningRequest.certSigningRequest (为生成App IDs 而用) 的文件。

   c.在苹果开发者中心,选择对应的应用,提交第二步生成的文件,激活应用的推送功能。

           d.下载激活成功后的文件,并双击。(分为开发模式和发布模式:aps_development.cer 和 aps_production.cer 为开发主动推送服务而用到的证书,如果需要做服务器方面的主动推送的话,就必须要下载这个文件来使用推送服务了

  e.点击Provisioning进行设置,添加一个新的许可,选择刚刚新创建的App IDs.创建新的xxxxxx.mobileprovision 文件,并下载。(为App 接受推送通知的许可服务

  f.在xcode 工程中来设置对应刚才下载下来的证书。(Code Signing Identity)

1: CertificateSigningRequest.certSigningRequest : 为生成App IDs 而用

2: aps_development.cer 为开发主动推送服务而用到的证书

3: xxxxxxxxx.mobileprovision 为App 接受推送通知的许可服务

2.编程

        在iOS 7.0 及以下,在应用的启动方法中:

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge UIRemoteNotificationTypeSound UIRemoteNotificationTypeAlert)];  

还有三个方法,注册成功/失败,接收通知。

       a.- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;

b.- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;

c.- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

在iOS8.0中需要加上这些:

#ifdef __IPHONE_8_0

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {

    [application registerForRemoteNotifications];

}

#endif


#ifdef __IPHONE_8_0

        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge

                                                                                             | UIRemoteNotificationTypeSound

                                                                                             | UIRemoteNotificationTypeAlert) categories:nil];

        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];

#endif


最后备注:记得在应用启动和恢复至前台的时候留意:

    //右上角数字图标 ,置0或设置其他数字。

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];


3.服务器所需要的文件的生成过程

1)在Keychain Access.app里选定这个新证书(Apple Development Push Services*),导出到桌面,保存为Certificates.p12.

 2)然后运行如下命令:

   1.     openssl pkcs12 -clcerts -nokeys -out cert.pem -in Certificates.p12
   2.     openssl pkcs12 -nocerts -out key.pem -in Certificates.p12
   3.     openssl rsa -in key.pem -out key.unencrypted.pem
   4.     cat cert.pem key.unencrypted.pem > ck.pem


完毕,如有错误,请指正。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值