iOS 消息推送那些事儿

Posted 网易游戏运维平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 消息推送那些事儿相关的知识,希望对你有一定的参考价值。



关于 ios 消息推送的文章,网上其实非常多,但为什么我们还要写这么一篇呢?又是准备从哪些角度去讲述 iOS 的消息推送?

iOS 的推送功能的散乱复杂,在于不同操作系统版本、用户授权状态、App 的不同生命周期状态以及推送的类型,这几个可变因素的组合下,造成的多种不同表象;而恰恰这些表象又得通过覆盖完整的测试得出,因此经常会出现这样一个现象,需求人员询问开发者对于某个特定情况下的具体表象时,开发者会说一句会概述 iOS 10 之前跟之后两套不同的 API,在实现本地推送功能在某些场景的差异性跟局限性。

因此,本文内容主要讲述了推送功能中零散、甚至自己常容易不确定的知识点,以及简要总结苹果对于推送功能的迭代更新。关于证书配置、API 使用等其他知识点,可以参阅其他文章。

在锁定屏幕上显示不是影响获取 devicetoken 的关键因素。

另外测试中发现,基于上面图中作为当前状态

  • 如果用户打开图标标记或者声音,这时候再启动 APP,就能拿到 devicetoken;但由于最上面的展示样式是选择了无,所以并不会展示出来给用户看到

  • 如果用户把样式选择了

    本地推送虽然在使用力度上远不及远程推送那么大,但对于某些 App 或者某些特定的场景功能,确是不可或缺的强有力工具。区别于安卓的本地推送(安卓依赖自身 App 的服务),而 iOS 是直接向系统提交注册,由系统帮你管理,所以即使用户把 App 关闭了,也能准确的在特定时间收到本地推送。

    同样的,以 iOS 10 作为分界线,苹果提供了两套不同的 API,但我们这里不讲述 API 的使用不同;而是比对这两套 API,在实现某些场景需求上的不同及局限。

    iOS 的推送功能,早在 iOS 3 就已支持,但系统已经到 13 的今天,从头开始讲述演进历史已然没多大必要,所以以下内容会从 iOS 7 开始,简要讲述从 7~13,每代系统升级时苹果对于推送功能的演进。

    远程推送是区分对待的,只需要对远程推送进行获取用户授权。在 iOS 8 之后,无论本地推送还是远程推送,都需要向用户申请权限。

  • 新增 registerUserNotificationSettings(_:)方法获取 deviceToken

  • 可响应式通知:新增了三个类 UIUserNotificationSettings, UIUserNotificationCategory, UIUserNotificationAction

  • 框架,所有推送相关功能接口都被放置其中,通知类型以及行为也得到进一步的统一,摆脱了以前的混乱现象。

  • 终于支持前台展示通知

  • 通知支持titlesubtitle

    对于需要支持 title 跟 subtitle 的远程推送,相应的 payload 要做下修改:

    Content Extension,前者可以让开发者有机会在收到通知内容之后,展示之前对通知内容做修改;后者可以用自定义的视图来展示通知内容。

  • 其实 iOS 上的通知功能是相当复杂且庞大,由于篇幅,这里也只是针对某些点做了讲述,冰山一角。对于文中未提及的其他功能,读者可自行通过参阅官方文档或者网上的其他优质文章进行了解。

    同时通过简要概括了通知功能的演进历史,也能从中得知,Apple 对于通知这个功能是相当重视,无论是从接口设计、用户体验还是隐私考虑,都在持续的完善和优化。

    往期精彩



    Dockerfile 最佳实践


    ceph 部分数据所有副本先后故障的抢救


    那些年,CDN 踩过的坑


    智能监控中的时间序列预测


    使用 d3.js 绘制资源拓扑图




    融云 IM 那些事儿

    最近闲来无事在网上冲浪,看到关注公众号推送了一篇 《Zoom大火之后,这家国内公司也很值得关注啊》 的文章,看样子八成是融云的

    运营稿(融云的朋友看到别打我...),不过不重要,重要的因为这篇文章确实让我对 IM 和 RTC 提起了浓厚的兴趣,因为疫情期间还没有离职

    公司每天都用 Zoom,后来 Zoom 这家伙宣布停止对中国提供服务后,鬼知道老板是为了彰显爱国主义情节还是怕服务不稳定,老板果断切换为腾讯会议

    离职后虽然用的少了,但偶尔开个会啥的,也会用腾讯会议或者微信的音视频进行和伙伴进行线上沟通,这么说来接触音视频 Saas 也有一段时间了

    但对底层如何实现的通话一无所知,你知道的,作为一个有追求的码农,知其然必知其所以然,正赶上看了前面提到的文章,于是马上动手开始研究融云的

    IM 和 RTC,先从 IM 开始说起~

    我是从以下几步分别了解:官网开发者后台开发文档

    官网

    从官网得到了以下个信息:

    产品分类:

    1、IM + RTC: 之前在公司听同事说过融云做 IM,不知道啥时候也做了 RTC ,还挺有意思,不知道具体原因,个人理解也许 IM 的天花板比较低或者变现难,并且音视频在未来网络基础设置越来越好、流量越来越廉价、5G 的到来等种种因素,音视频还是很有前景的,才杀入 RTC 战场,分一杯羹

    2、支持平台: Android、iOS、Web、小程序、Electron、Flutter 主流平台都支持

    支持四种部署方式:

    1、公有云: 大家公用一个盘子,有点过去大通铺的赶脚,我要是胖我睡的面积就大,当然了我要是胖可能还挤到你,可能会有资源抢占的情况,不过这要看融云的预留冗余资源了

    2、专有云: 相比大通铺,这个就高级多了,类似单间,空间、卫浴均为独立,并且私密性比较好

    3、海外云: 海外大通铺,在线咨询了下,海外用户也能直接用国内数据中心,估计他们自己的网络链路,具体原因没有再细问,毕竟暂时也不用,不太好意思,我是一个腼腆的人儿

    4、私有云: 相比单间,这就是自己盖房子了,融云提供设计图,并且找施工队给你单独盖一个琉璃大瓦房,但后续怎么维护没看到说明,有可能和通用外包的维护费用类似,比如:每年维护费是合同款的 10%,费用是我自己 YY 的,不会用也没好意思去找他们人了解

    目前正在搞的活动:

    1、黑客马拉松:印象最深的银子,第一名给五万,我是看到晚要不一定参加,这样可以弥补一点离职期间经济损失,毕竟离职前薪资也一个月 xxx 呢(一不小心差点把工资说出来,万一媳妇看见小金库可就没有了.....慌的一批,哈哈哈)

    2、WICC:全名好长,全球互联网通信云大会,不和全球占点关系,都不好意说自己是互联网公司,哈哈,不过看他们也有海外节点,这么说也合理,地址不在北京,可惜去不了,要不真的可以去 see see

    3、聆听:这是一个收集建议的系统包括吐槽啥的,看样子还是比较注重客户服务,在这样一个技术可快速复制的时代,也许客户服务等软技能还是挺重要的,尤其是 ToB 企业

    其他:

    1、其他的都是一些案例介绍,这些东各家公司如出一辙,秀秀肌肉、吹吹牛啥的,就没多看,目前我不关注这块

    开发者后台

    功能丰富:

    进入后台第一眼真的是功能丰富,看出来确实是积累了很多功能,不过产品逻辑不是很好,有点无从下手,研究了一会理解了

    调试工具

    调试工具点个赞,把所有服务端的接口都做了可在线调试的 API,如果集成初期没有自己 Server 接口,完全可以用这个来集成,非常方便,很惊喜

    小槽点

    开发者后台的界面略丑,看起来有点像智能手机和老人机的排版布局差异,虽说不影响使用吧,但作为一个有追求的青年咋能对美不挑剔呢,不对,应该少年,不对不对,是青少年,文章暂停下,我先倒腾下措辞....(两个小时后,是少年,我还是从前那个少年,没有一丝丝改变.....)

    开发文档

    文档分类倒是简单,IM、RTC、运营服务, 下面逐个介绍下感受

    1、IM: 不愧是做 IM 起家的 Paas 厂商,支持的能力确实很出色,尤其聊天室的功能格外丰富,在线和客服妹子聊说人数无上限,支持弹性扩所容

    2、RTC: 看完文档就能知道在音视频沉淀还有不够,为啥这么说,在文档投入精力一定不够,或者资源在忙于其他更重要的事情未开始规划,后台看了看发布的第一版音视频 SDK,是在去年三月份,和感觉还比较像,瞬间觉得自己像老司机一样,哈哈

    3、粗略过了一遍文档,体验了下官方 Demo SealRTC,音视频质量相当不错,晚上纽约的老铁视频用的就是这个东东,非常流畅,好感度暴涨

    --------华丽的人肉分割线---------

    整体感觉就这些,这里没有涉及技术集成,后面再集成试试,写完感觉像给融云写了一篇产品介绍的稿子,不知道融云的朋友看到会不会给我发稿费 哈哈

    就写到这里了吧,太阳快出来了,睡觉~~~

    另外赠从下融云相关链接

    官网:https://www.rongcloud.cn

    文档:https://docs.rongcloud.cn/v4

    以上是关于iOS 消息推送那些事儿的主要内容,如果未能解决你的问题,请参考以下文章

    Android Handler那些事儿,消息屏障?IdelHandler?ANR?

    Oracle那些年那些事儿

    iOS 关于TabviewController的那些事儿~

    iOS开发那些事儿热补丁

    分布式消息系统Apache Kafka那些事儿

    iOS App开发的那些事儿1:如何建立合适的规范

    (c)2006-2024 SYSTEM All Rights Reserved IT常识