重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
推送的原理主要分为以下几步:
成都创新互联公司于2013年创立,是专业互联网技术服务公司,拥有项目网站设计、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元托里做网站,已为上家服务,为托里各地企业和个人服务,联系电话:13518219792
1.由App向iOS设备发送一个注册通知,用户需要同意系统发送推送。
2.iOS向APNs远程推送服务器发送App的Bundle Id和设备的UDID。
3.APNs根据设备的UDID和App的Bundle Id生成deviceToken再发回给App。
4.App再将deviceToken发送给远程推送服务器(自己的服务器), 由服务器保存在数据库中。
5.当自己的服务器想发送推送时, 在远程推送服务器中输入要发送的消息并选择发给哪些用户的deviceToken,由远程推送服务器发送给APNs。
6.APNs根据deviceToken发送给对应的用户。
· APNs 服务器就是苹果专门做远程推送的服务器。
·deviceToken是由APNs生成的一个专门找到你某个手机上的App的一个标识码。
· deviceToken 可能会变,如果你更改了你项目的bundle Identifier或者APNs服务器更新了可能会变。
很多应用都会实现推送功能,我们可以集成第三方框架实现推送功能,
比如:JPush推送:
个推:
下面来说说收到推送消息的逻辑处理
一、收到推送消息有三种情况:
1、应用未启动(默认显示在通知栏,或者锁屏时显示在锁屏页面)
2、应用在后台挂起(默认显示在通知栏,或者锁屏时显示在锁屏页面)
3、应用在前台(默认不显示)
二、点击推送消息有两种情况:1、应用未启动 - 启动这个时候如论是点击推送消息打开应用还是点击icon打开应用都会调用以下方法(具体的可以根据 userInfo 进行判断):(只有重新打开APP和后台杀死后在打开APP才会走下面的方法)
2、应用在后台 - 应用在前台应用在后台挂起时点击推送消息和应用在前台时收到推送消息,都会调用以下方法:
ios 7 以上会调用下面这个方法
ios 10 会调用 下面的方法
应用在后台挂起时默认是不调用该方法的,如果你需要接收到推送消息还没点击推送就调用该方法,可以让服务器发给APNS时在aps 字典中加入:
aps = {
content-available = 1;
}
首先根据APP的状态进行判断 这里当APP在前台显示的时候根据需求我们没有消息进行处理
第一步:发送通知
第二步:添加观察者
第三步:进行页面的跳转,这地方有一个重点是如何获取的当前页面的然后才能够实现跳转
在此给View写了一个分类方法
第四步:实现跳转到目的controller
导语:
由于移动设备内存、CPU、电量的局限性,iOS 不允许 APP 的进程常驻后台(事实上可以申请后台运行一段时间,最长约 10 分钟),这样当用户主动杀掉 APP,或者 APP 进入后台超过约定时长时,就意味着该 APP 进程的结束。这在很大程度上保障了前台 APP 的流畅性,也延长了手机的使用时长,获得了较好的用户体验。但是这也意味着,服务器无法主动和用户交互(如推送实时消息等)。为了解决这个限制,苹果推出了 APNs,允许设备和服务器分别与苹果的推送通知服务器保持长连接状态。
iOS 的通知分为本地通知和远程通知。本地通知是由本地应用触发的,一般是基于时间的一种通知形式,如闹钟、待办事件等的提醒。远程通知是由开发商通过自己的服务器推送的一种通知形式,而 APNs 就是远程通知功能的核心。
关于远程推送,记住以下两点就够了:
这里就很清楚了,其实 APNs 的本质就是 服务器和客户端之间的中介 。当服务器需要给客户端推送消息时,先将消息发送给苹果服务器,再由苹果服务器找到对应设备推送下去。
那为什么还要走中介,不直接发送呢?因为这样做一个设备(即所有 APP )只需要和苹果的服务器建立一条长连接,而不需要每个 APP 都和服务器建立一条长连接。
可能有些人还是不太明白 APNs 的意义,觉得也只是将多个长连接变成了统一的一个长连接而已,有必要那么做吗?
很有必要!
我们来看下 Android 的推送现状就明白了。
Android 事实上也有类似于 APNs 的一套用于推送的服务,简称 GCM,即 Google Cloud Messaging。但由于 GCM 需要谷歌服务器的支持,在国内由于「墙」的原因基本不能使用。这下就热闹了,国内出现了一大堆第三方推送服务商,如华为推送、小米推送、极光推送等。APP 通过集成这些推送服务来实现推送功能,而这些推送服务为了保持自己的长连接不被杀死,采用了各种保活、唤醒手段,这也是 Android 手机使用不流畅的真凶。之前也有看到「 工信部要求国内安卓统一消息推送标准 」的新闻,工信部都这么重视,可见统一推送的意义非凡。
想要了解具体区别,可以参考这篇文章 「 国内 90%以上的 iOS 开发者,对 APNs 的认识都是错的 」。
不言而喻,当然是尽早升级 HTTP/2 协议了。
参考:
(完)
ios开发如何实现消息推送机制,具体的操作如下:
1、首先注册应用程序消息推送。
2、IOS跟服务器设备要设备口令。使用的应用程序接受设备口令。
3、然后经过应用程序将设备口令发送给苹果的服务端程序。
4、服务端程序向苹果服务发送消息。
5、苹果服务将消息发送给iPhone应用程序。
6、最后,这样就完成了ios开发消息推送机制。
想要使用消息推送系统,推荐使用深圳极光的消息推送系统。极光紧密围绕移动开发者需求,打造的开发者服务平台,可以提供一站式SaaS服务,通过全面覆盖PC、手机、传感器、无线路由器等多种设备数据,打造全域数据平台。当前,不断更新的SaaS产品及服务已深受国内百万开发者的认可和信赖。
ios可以使用socket,但是要想做到远程推送可能还是需要apns机制,因为应用退到后台的时候只有apns能处理苹果服务器推送来的消息。iOS使用Socket的常用方式有如下:
(1)BSD Socket:是UNIX系统中通用的网络接口,基于C语言,比较底层
(2)CF Socket:苹果官方提供,来自于CoreFoundation框架
(3)AsyncSocket:对BSD Socket的封装,OC语言
(4)ysocket:对BSD Socket的封装,Swift语言
SOCKET原理:套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。是网络通信过程中端点的抽象表示,包含进行。
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。建立连接时所需的寻址信息为IP地址和端口号。
进行远程消息推送可以了解一下极光,极光就挺不错的。JPush iOS 推送相比直接向 APNs 推送减少开发及维护成本:应用开发者不需要去开发维护自己的推送服务器与 APNs 对接。集成了 JPush iOS SDK 后不必自己维护更新 device token。
通过 JPush 的 Web Portal 直接推送,也可以调用 JPush 的 HTTP 协议 API 来完成,开发工作量大大减少。
注册远程通知并不难, 但怎么反注册呢,我们都知道, 远程通知的关闭,可以在手机- setting 中关闭. 那里的关闭是手机对app权限.可以理解成总开关吧.app 中也可以反注册.如果手机中的通知权限是打开的,那怎么通过app 控制关闭远程通知呢.下面我们来说说
-- 如果对你有帮助的话, 请留个 "喜欢"