简介:本课程将带你了解iOS的push原理,如何搭建push环境,push的交互设置,以及该如何实现推送消息。并且会给大家分别讲解Local Push的一般用法和高级用法,以及push的相关业务功能介绍。
要点:
iOS远程推送通知课程介绍
iOS之远程push环境搭建
iOS本地推送通知课程介绍
通知大家都不陌生,其实通知分两种,远程通知和本地通知。
远程通知是指服务器发出的通知,通过苹果的推送然后到达用户设备。
本地通知是指不通过网络,直接安装应用后就可以接到通知了,典型的例子是日历、待办、闹钟等应用。
不过就表现形式来说两者基本一样,都会出现在通知中心,都可以出现在锁屏界面,都可以出现在界面上部,都可以添加应用上的红点。
注意:现在在Xcode中使用远程通知功能需要在工程的Targets中的Capabilities标签里打开Push Notification权限,且需要APNS证书,不过本地通知是不需要的,可以直接测试接收通知。
一,远程Push工作原理

iOS的远程push通道是一个独立的长连接通道,这个通道是由iOS系统独立维护的(这个通道也是唯一的一个push通道)。也就是说,我们每一个手机系统在它开机之后就会有一个后台悄悄长连接连向苹果的服务器(APNs服务器),APNs当收到新的push通知的时候它就会把这个通知推给我们的设备。
大致的工作原理是:
1,在手机系统启动之后或者是打开某个App之后,会生成一个独立的唯一的一个token,并把这个token上传给我们自己的服务器。
2,我们的服务器拿到这个token之后就可以给我们的设备推送通知了,但是这个通知并不能直接推给我们的设备,而是要推给苹果的服务器,因为上面提到了push的通道是由苹果维护的,是一个唯一的通道,所以我们的服务器要把这个token加上要推送的内容一起推给苹果服务器(APNs)。
3,苹果服务器在收到我们的服务器的push之后再根据token定位到我们的设备,然后把这个push推给我们的设备。
4,设备拿到token之后,再根据这个token定位到这个token是属于我们设备上的哪个app,这样就可以一个通知推送到具体的哪一个App当中。
二,iOS之远程push环境搭建
- 远程push流程

- 手机刚开机,和苹果服务器(APNs)建立加密的socket通道(基于SSL加密的)。
- 打开App之后,苹果的APNs服务器会下发一个deviceToken给我们的设备,deviceToken能标识设备上唯一的App。
- 设备拿到App的deviceToken。
- 设备把拿到的deviceToken上传给我们自己的服务器。
- 我们的服务器有了deviceToken之后可以给APNs服务器发送【deviceToken+push内容】,APNs根据deviceToken给对应的设备发送【deviceToken+push内容】,设备根据deviceToken给对应的App发送push通知。
- 配置项目
- 新建项目工程PushTestDemo;
- 在开发者账号中为新项目创建Apple ID;
- 推送证书(ProvisioningProfile)
- 项目中的关键代码
项目中的关键代码
注册APNs
向APNs申请deviceToken(申请成功和失败的回调方法)
deviceToken上传服务器
/**
iOS8-10注册APNs
*/
- (void)registerAPNs{
if (iOS_SystemVersion < 10.0 && iOS_SystemVersion >= 8.0){
UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings &