我们知道,在iOS系统中,当用户正在前台操作一个app时,app可以有很多种方式告诉用户一些信息。
然而,任何时候都只有一个app在前台运行,其他大部分的app都处于在后台运行或已关闭的状态,并不在前台运行。
那么,当这些不在前台运行的app,在本地或互联网上发生了一些用户感兴趣的事情,比如说淘宝app-订单状态改变,需要通知客户订单发货了,提醒事项app-到达用户设置的提醒时间了,需通知用户。
此时,该如何告诉用户这些信息呢?
iOS通知机制就是为了解决这个问题:即使app不在前台运行,iOS通知机制也能告知用户,app在本地或互联网上,发生了一些他感兴趣的信息。
简单来说,iOS通知机制主要分两种:本地通知和推送通知。本地工具类app以本地通知为主,互联网app以远程通知为主。
作为产品经理,了解一下通知的基本原理,有利于更好的与开发交流(例如避免提出一些无法实现的需求),更好的利用通知机制(例如制定一些运营相关的通知策略)
一、iOS通知机制的基本概念
我们先简单介绍一下iOS通知的基本概念
iOS通知分类
iOS通知分本地通知和推送通知,其展现形式是一样的(Banner、Alert、Badge、Sound),其主要区别在于通知发起方是app本身还是app提供商服务器-苹果APNs,是否需要联网。
注意,某些文章把通知分成本地推送通知和远程推送通知,是翻译上的问题,苹果开发文档中明确写了 Local notifications and remote notifications are the two types of user notifications. (Remote notifications are also known as push notifications.)。
推送在这里特制服务器Push信息的操作,实在要写成本地推送通知和远程推送通知,也最好是本地发送通知,远程发送通知(苹果开发文档中反复提到一个词 send、deliver ,应该理解成发送,而不是推送)
通知的常用展示形式:
Banner(横幅)是屏幕上一个小的、半透明的view,展示几秒钟后会自动消失。除了通知信息外,Banner还会展示小版本的icon,这样用户看一眼就知道哪个app发送了通知。
Alert(弹窗)是屏幕上一个标准的警告窗,需要用户与之交互才能解除(会打断用户当前的操作)。
- 关于Alert的按钮:可能有一个或两个按钮。有两个按钮时,关闭按钮会放在左边,操作按钮(action button)会放在右边。如果只有一个按钮,默认显示为OK。
- 关于Alert的标题与内容:一般标题是APP的名字,所有内容信息居中。一个完美的内容信息应该是聚焦内容而不是用户操作,尽量简短,一到二行即可,首字母要大写。
Badge(徽标/标记)是应用icon右上角的红色圆形小标记,用以展示未处理的通知项目。app无权定制徽标的颜色和尺寸。
- 它有两种形式,一是在主屏APP图标的右上角显示,二是在APP内部某些模块的图标右上角显示。图标小绷带适用于对信息的数量敏感且不太关注信息的时效性。
Sound(声音)是一种很好的信息提醒方式,在嘈杂的环境中能立马吸引用户的注意力,一般结合Badge和Alert使用,建议重要的提醒使用声音,避免干扰用户;定义管理好声音的冲突。
具体的应用案例
-
1、本地通知:app处于后台或已关闭时,显示通知
例如某个游戏app 7天没有打开,提示你打开app -
2、本地通知:无论app处于何种状态,都显示通知
提醒事项app,到达设定的提醒时间,以横幅及其他方式通知
- 3、推送通知:app在前台运行着,不显示推送通知,只在后台或已关闭状态时才显示通知
QQ在前台运行时不显示通知;已经退出到后台或已经关闭,收到一条未读信息
- 4、推送通知:无论app处于何种状态,都显示推送通知
今日头条在前台运行或后台或已关闭时,如果服务器上要推送要闻,手机都能显示要闻推送(只是有时是用横幅的方式,有时是用弹窗)
二、本地通知和推送通知
两者的区别
本地通知和推送通知iOS推送通知工作流程
iOS推送通知工作流程Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。
上图可以分为三个阶段:
第一阶段:应用服务提供商从服务器端把要发送的消息和设备令牌(device token)发送给苹果的消息推送服务器APNs。
第二阶段:APNs根据设备令牌在已注册的设备(iPhone、iPad、iTouch、mac等)查找对应的设备,将消息发送给相应的设备。
第三阶段:客户端设备接将接收到的消息传递给相应的应用程序,应用程序根据用户设置弹出通知消息。
三、扩展阅读
- 1、极光推送
- 2、如何构建APP消息通知策略
四、参考资料
- 1、苹果开发文档 -About Local and Remote Notifications
- 2、苹果开发文档 -Local and Remote Notifications in Depth
- 3、苹果开发文档翻译- ios本地和远程推送通知编程指南
- 4、iOS 7人机交互指南-iOS技术-Notification Center
- 5、博客园-iOS开发系列--通知与消息机制
如有错误,欢迎指正
网友评论
恩,收集完的话,最好自己写文章输出。
碎片化阅读比较大的问题,就是你可以不断获取新知识、不断收藏,看似得到了很多,但没有多少是经过自己思考,自己真正理解的。
解决这个问题,办法之一就是把收集的内容进行结构化整理,然后输出(不过这个过程特别耗时间,得不断看资料(也幸亏我有两显示屏,一个屏幕写,一个屏幕看资料),自己去甄别。话说,周末写这个,导致我作业PRD还没写好了 )。