苹果系统是通过服务器推送消息,客户端技术:一文带你了解iOS消息推送机制

导语 |消息推送我们几乎每天都会用到,但你知道 iOS 中的消息推送是如何实现的吗?本文将从推送权限申请,到本地和远程消息推送,再到 App 对推送消息的处理等多个步骤,详细介绍 iOS 中消息推送的工作流程。文章作者:赵哲,腾讯游戏运营研发工程师。

一、概述

消息推送是一种 App 向用户传递信息的重要方式,无论 App 是否正在运行,只要用户打开了通知权限就能够收到推送消息。

开发者通过调用 iOS 系统方法就可以发起本地消息推送,例如我们最常见的闹钟应用,App 能够根据本地存储的闹钟信息直接发起本地通知,因此即使没有网络也能收到闹钟提醒。

远程消息推送则是由业务方服务器将消息内容按照固定格式发送到 Apple Push Notitfication service(简称APNs),然后再经由苹果的 APNs 服务器推送到用户设备上,例如腾讯新闻可以向用户推送时事热点新闻,QQ邮箱可以为用户推送收到新邮件的提醒,游戏 App 可以通过这种方式通知玩家有新的游戏福利。

既能够及时地通知用户重要信息,也能够促使用户通过推送消息打开或唤醒App,提高App的使用率。

除了标题、内容、提示音和角标数字等固定推送参数以外,开发者还可以在推送消息中增加自定义参数,让用户在点击推送消息时能够直达相关新闻、邮件或福利页面,提供更好的用户体验和页面的曝光率。

苹果系统是通过服务器推送消息,客户端技术:一文带你了解iOS消息推送机制_第1张图片

二、XCode配置

在使用消息推送相关功能之前,我们首先需要准备支持推送功能的证书,个人开发者可以参考腾讯云的 TPNS 文档 [1],在苹果开发者中心中配置和导出推送证书。

此外,还需要在XCode的工程配置 Signing & Capabilities 配置中增加消息推送权限,在操作完成后 Xcode 会自动生成或更新工程的 entitlements 文件,增加如图所示的APS Environment 字段。

苹果系统是通过服务器推送消息,客户端技术:一文带你了解iOS消息推送机制_第2张图片

三、申请消息推送权限

苹果系统是通过服务器推送消息,客户端技术:一文带你了解iOS消息推送机制_第3张图片

无论是本地推送还是远程推送,在推送前都必须要先向用户申请推送权限,只有用户授权后才能够收到推送消息。

苹果在 iOS10 中引入了 UserNotifications 框架,将推送相关功能进行了封装和升级,除了以前 UIApplication 可以做到的一些基本的本地和远程消息推送功能外,还增加了撤回或修改推送消息、自定义通知 UI、推送消息前台显示等功能。

在 iOS10 及以上的版本中,苹果推荐开发者使用:

requestAuthorizationWithOptions:completionHandler: 方法向用户申请消息推送权限。

该方法需要指定一个用于描述推送权限的 UNAuthorizationOptions 类型参数,包括 alert (消息的标题、文字等内容)、sound(消息提示音)、badge(App右上角显示的角标);还可以在该方法的 completionHandler 回调方法中通过 granted 参数来判断用户是否允许了授权。相关代码如下:

在iOS9中,直接使用 UIApplication的regis

你可能感兴趣的:(苹果系统是通过服务器推送消息)