前言:推送分为本地推送以及远程推送。

  两者的区别为本地推送一般为定时推送、定期推送或者位置推送。而远程推送更为多样化,能满足较高的要求。当然远程推送需要服务器端开发,开发流程较复杂。

  1、本地推送只需要在客户端写代码即可,实现简单轻松。

 (1)本地推送在app未开启的情况下也能收到本地推送的消息。会走这个入口方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

 (2)app在后台能收到推送消息。点击推送的消息,会打开APP,并且走

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;

 

 (3)app在前台运行时会收到推送消息,如果将通知中心的代理设为AppDelegate .这样本地推送的表现形式在前台时也能收到banner弹框消息。

但是如果将通知中心的代理设为某个控制器的话,在前台收不到推送消息,但是依然会回调willPresentNotification代理方法。

但是UIAppDelegate方法

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;会自动回调消息的内容

对于iOS 10  用户点击 推送消息,都会走代理方法,无论是前台 后台 还是未开启状态

-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler;

当应用在前台时,会走如下代理方法 后台以及未开启app状态的情况下都不会走这个代理方法。目的是在前台时,应用能及时根据推送的消息进行一些相应的UI处理等。

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification*)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler;

2、远程推送

远程推送 服务器端开发比较繁琐。下面是一些写在远程推送开发前的内容。可以借助第三方的推送工具如 Push me baby来测试。

有一篇很好的参考文章,感谢这位大侠的分享:https://mobiforge.com/design-development/programming-apple-push-notification-services

简单说明就是在github上下载push me baby源码 运行。在代码中init方法中修改device token\ certificate。注意相应环境的证书和device token要互相匹配。 device token由测试demo在真机上生成。 相应的证书要安装在mac上。拖入工程目录的证书要是cer格式。

////////////////////////////////////////////////下面是生成推送证书时需要注意的事项////////////////////////////////////////////////

生成apns推送证书时,服务器端需要pem格式。在电脑上将证书转成pem格式 ,思路是分别将证书和key导成p12,然后将p12转成pem格式。最后将两个pem文件合并成一个pem文件。最后验证证书是否生成成功。如果验证不成功的时候,注意请求crs文件,即秘钥时,为了安全起见,注意填写的邮箱为开发者账号。

参考链接https://www.jianshu.com/p/fb180965ff76

https://www.jianshu.com/p/cc952ea07a08

下面来介绍远程推送,远程推送的表现形式和本地推送非常一致。但是远程推送可以随时随地由应用的服务器推送消息,给appns,然后apns再将消息推送给设备。

远程推送无论应用在前台或者后台还是没有运行,都会弹banner条幅。同时也会有推送代理方法。

iOS apns推送的更多相关文章

  1. iOS开发之功能模块--Apns推送中的的json格式介绍

    在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面接受我在进行apns推送时候总结的一点apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 a ...

  2. iOS的推送机制APNs:本地推送&远程推送

    本地推送: 本地推送主要应用在备忘录,闹钟等本地的,基于时间定时的消息提醒.本篇不做详细描述. 远程推送:APNS(苹果推送通知服务) iOS远程推送机制的原理及流程: 注册推送(橙色部分):若该Ap ...

  3. APNS IOS 消息推送JSON格式介绍

    在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面积累了我在进行apns推送时候总结的 apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 a ...

  4. APNS IOS 消息推送

    一.Apns简介: Apns是苹果推送通知服务. 二.原理: APNs会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里的证书以确定其为苹果设备):然后,将服务器的信息接收并且 ...

  5. iOS 通知推送APNS

    结合网上各个资料,再简单整理的一份. 一.APNS推送说明 1.你的IOS应用需要去注册APNS消息推送功能. 2.当苹果APNS推送服收到来自你应用的注册消息就会返回一串device token给你 ...

  6. iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐

    代码地址如下:http://www.demodashi.com/demo/13208.html 前言 我们首先要在AppDelegate里面进行iOS的适配,可以参考这篇文章 iOS原生推送(APNS ...

  7. iOS 下APNS推送处理函数具体解释

    相比起Android,iOS在推送方面无疑惯例得更好.APNS(Apple Push Notification Service)是苹果公司提供的消息推送服务.其原理就是.第三方应用将要推送给用户的信息 ...

  8. iOS 消息推送(APNs) 傻瓜式教程

    也可以去我的简书页面查看这篇文章 首先: 1.做iOS消息推送需要真机测试 2.做iOS消息推送需要有付费的开发者账号 是否继续看帖? 先学习一下相关的知识吧! 因为中途可能会遇到一些问题,这篇文章或 ...

  9. iOS 消息推送实现 APNS

    本文只是记录一下如何在自己的电脑上配置APNS推送环境,其它的如推送的原理,流程什么的这里就不写了. 一. 去Apple 开发者中心,创建App ID.注意App ID不能使用通配符.并注意添加Pus ...

随机推荐

  1. javascript关于box2djs和matterjs之间的选择

    javascript关于box2djs和matterjs之间的选择box2djs资料少很多时候需要看c++版本资料 然后转化成js 还有转化成像素坐标不准确 matterjs文档丰富 上手容易 建议用 ...

  2. vue ui九宫格、底部导航、新闻列表、跨域访问

    一.  九宫格 九宫格:在mint-ui组件库基于vue框架 mui不是基于vue框架 只是css/js文件 (1)官方网站下载安装包 (2)copy css js fonts[字体图标] src/l ...

  3. C++中对C的扩展学习新增语法——引用

    引用 引用的好处: 1.引用的好处 C++使用结构体,不需要再使用 typedef. 2.值传递是将实参进行拷贝,赋值给形参,如果对象比较大,每次拷贝效率比较低,并且函数内部无法修改外部变量的值,能力 ...

  4. gitbook的插件配置

    原生的gitbook样式比较单一,美观度和功能欠佳,可通过相关插件进行拓展. 插件地址:https://plugins.gitbook.com/ 主目录下新建book.json: { "au ...

  5. hdu 1754 I Hate It (线段树、单点更新)(PS:ios::sync_with_stdio(false)可以加快cin、cout的读取写出速度)

    I Hate ItTime Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  6. pip install xxx Could not fetch URL https://pypi.org/simple/pip/

    Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirmingthe ssl certificate: ...

  7. nyoj 463-九九乘法表

    463-九九乘法表 内存限制:64MB 时间限制:1000ms 特判: No 通过数:16 提交数:41 难度:1 题目描述: 小时候学过的九九乘法表也许将会扎根于我们一生的记忆,现在让我们重温那些温 ...

  8. Elasticsearch系列---分布式架构机制讲解

    概要 本篇主要介绍Elasticsearch的数据索引时的分片机制,集群发现机制,primary shard与replica shard是如何分工合作的,如何对集群扩容,以及集群的容错机制. 分片机制 ...

  9. shell脚本1——变量 $、read、``

    与Shell变量相关的几个命令: 变量只在当前Shell中生效. source 这个命令让脚本影响他们父Shell的环境(. 可以代替source命令) export 这个命令可以让脚本影响其子She ...

  10. SpringBoot学习(一)—— idea 快速搭建 Spring boot 框架

    简介 优点 Spring Boot 可以以jar包的形式独立运行,运行一个Spring Boot 项目只需要通过 java -jar xx.jar 来运行. Spring Boot 可以选择内嵌Tom ...