前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS推送APNs

iOS推送APNs

作者头像
Helloted
发布2022-06-08 10:29:15
3.6K0
发布2022-06-08 10:29:15
举报
文章被收录于专栏:Helloted
0、通知

iOS中的推送通知,主要有以下几种推送:

  • 本地通知:iOS在本地发出的通知,功能开发集成在UserNotifications.framework内,常见应用:闹钟提醒。
  • 在线推送:APP在前台时,消息通过自建的网络长连接从服务器推送到应用,常见应用:微信在前台时的消息推送。
  • APNs:APP未被唤起或者处于后台,通过苹果服务器远程推送消息给应用。
Notifications 回顾
  • iOS 3 - Apple 引入推送通知
  • iOS 4 - 引入本地通知
  • iOS 5 - 有了通知中心
  • iOS 6 - 通知中心与iCloud同步
  • iOS 7 - 后台靜默推送
  • iOS 8 - 重新設定了通知许可权,可互动通知
  • iOS 9 - 支援在通知中回复信息,Provider API 等等
  • iOS 10 - 新增了UserNotificationKit框架,整合了关于通知的方法,新增了图片音频视频等格式
  • iOS 12 - 新增了通知分组、隐式推送、通知内容拓展
1、APNs

APNs,即 Apple Push Notification Service,依托一个或几个系统常驻进程运作,是全局的(接管所有应用的消息推送),可看作是独立于应用之外,设备与苹果的服务器之间维持一个长连接进行消息传递。

主要流程为:

  1. 服务器端将消息先发送到苹果的APNs;
  2. 由苹果的APNs将消息推送到客户的设备端;
  3. 由iOS系统将接收到的消息分发给相应的App。
2、详细过程

过程如下:

  1. 首先是设备与APNS Server建立连接;
  2. APP首次启动向APNS Server注册deviceToken。APNS Server返回deviceToken给APP;
  3. APP将deviceToken发送给PUSH服务端程序;
  4. 服务端程序向APNS服务发送消息;
  5. APNS服务将消息发送给设备,设备转发给对应的APP。
3、APNs的安全架构

APNs使用两个“信任”来实施端到端、密码验证和身份验证:连接信任和设备令牌信任(connection trust and device token trust.)。

连接信任(connection trust)在消息Providers和APN之间、APN和设备device之间起作用。

  • 提供程序到APN的连接信任:确保提供程序和APN之间的连接仅适用于与Apple达成推送通知传递协议的公司拥有的授权提供程序。通过签名证书来保证授权。
  • APN到设备的连接信任:可确保只有授权的设备才能连接到APN来接收通知。APNs会自动强制与每个设备建立连接信任,以确保设备的合法性。

设备令牌信任(device token trust)对于每个远程通知都是端到端的。它确保仅在正确的起点(提供者)和终点(设备)之间路由通知。

deviceToken是不透明的NSData实例,其中包含Apple分配给特定设备上特定应用程序的唯一标识符。只有APN才能解码和读取deviceToken的内容。每个应用程序实例在向APN注册时都会收到其唯一的deviceToken,然后必须将token转发给它的提供者,推送通知请求中包含设备令牌;APN使用设备令牌来确保仅将通知传递给预期的唯一应用程序设备组合。

APN可以出于多种原因发行新的deviceToken:

  • 用户在新设备上安装您的应用
  • 用户从备份中还原设备
  • 用户重新安装操作系统
  • 其他系统定义的事件
4、DeviceToken

device token: APNs uses device tokens to identify each unique app and device combination. It also uses them to authenticate the routing of remote notifications sent to a device.(device token是APNs用于区分识别每个iOS设备和设备上不同app的一个标识符,还可以用于APNs通过它将推送消息路由到指定设备上)

deviceToken注意事项:

  • 获取deviceToken跟app是否申请了推送权限无关,即使是禁用了远程推送,也可以正确获取deviceToken。如果没有申请权限,会以静默推送形式呈现。

If you do not request and receive authorization for your app’s interactions, the system delivers all remote notifications to your app silently.

  • 安装应用后第一次打开APP获取deviceToken时必须联网。如果在获取时没有网络,在重新连接网络后会第一时间返回deviceToken。
  • 不需要缓存DeviceToken。如果已经生成了有效的DeviceToken,系统或有缓存,在 重新安装App、重装系统、或者从备份还原系统时,会重新生成DeviceToken并更新缓存。
  • debug环境下是向开发环境的APNs服务器申请DeviceToken,而release环境是向生产环境的APNs服务器申请的。如果环境不匹配,则会出现Bad deviceToken错误。
  • deviceToken与bundleId存在着关联。如果deviceToken与证书中的bundleId不匹配,会返回DeviceTokenNotForTopic
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0、通知
    • Notifications 回顾
    • 1、APNs
    • 2、详细过程
    • 3、APNs的安全架构
    • 4、DeviceToken
    相关产品与服务
    数字身份管控平台
    数字身份管控平台(Identity and Access Management)为您提供集中式的数字身份管控服务。在企业 IT 应用开发时,数字身份管控平台可为您集中管理用户账号、分配访问权限以及配置身份认证规则,避免因员工账号、授权分配不当导致的安全事故。在互联网应用开发时,数字身份管控平台可为您打通应用的身份数据,更好地实现用户画像,也可为用户提供便捷的身份认证体验,提升用户留存。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档