盒马iOSLiveActivityampampamp灵动岛配
作者:陈振港、李凯
苹果在WWDC22中,提出了实时活动(LiveActivity)的概念,以便于用户在锁屏查看一些应用实时活动的更新,这与盒马的配送场景十分贴合。因此,我们将LiveActivity灵动岛特性第一时间落地到盒马30分钟配送场景,并作为第一批适配实时活动的iOS应用,获得AppStoreToday推荐。
目前,盒马App适配灵动岛的最新5。51。1版本已正式上线,欢迎大家升级体验。在适配过程中,盒马App也在端侧踩过很多坑,特此汇总为实战经验分享给大家,欢迎交流。快速落地时间线6月16日,根据WWDC相关内容提前调研;8月16日,开始基于官方文档和beta版做demo;9月8日,登上Apple中国区官网;9月15日,iOS16。1beta开放,开始正式的需求流程;10月19日,iOS16。1RC上线,开始打包以及回归测验;10月20日,提交审核;10月22日,审核通过上架;10月25日,AppStoreToday推荐。
客户端技术方案LiveActivity灵动岛简介
在介绍盒马最终落地技术方案之前,先给大家简单介绍一下LiveActivity灵动岛技术调研得出的一些关键信息及其比较适用的场景。场景限制及建议最多持续8小时,使用场景需要考虑,8小时之后无法再刷新(目前实际还可以,但是以官方文档为准,自行限制),12小时后强制消失(因此跨天场景不考虑)创建时,需要app在前台主动创建,没启动应用的时候不能自己出现(与特定业务绑定,比如下单后显示)卡片本身禁止定位以及网络请求,少量(4KB)数据可通过通知发送,或通过后台活动刷新数据同场景多卡片由于样式趋同且折叠,不建议同时创建多卡片灵动岛适配必要性与锁屏LiveActivity共享数据,在支持灵动岛的机型下,用户在非锁屏页面时,信息的更新会以灵动岛的形式展示更新LiveActivity创建后,灵动岛就可以进行点击响应了,如果不适配的话,点击灵动岛会自动进入主程序,并且长按会变成一个没有任何信息的黑块盒马iPhone14Pro以及ProMax用户占比逐渐升高整体方案流程图
注意事项:LiveActivity有一个独立的权限,并且是不需要请求同意的,默认开启用户必须保持开始通知权限,才能通过通知刷新,后台活动不需要必须在应用处于前台时启动,相当于要主动触发数据更新时,系统自动适配动画,不需要自己额外添加动画(添加了也会被忽略)不支持在其中显示gif图片和网络图片可以设置响应页面,比如点击不同控件跳到不同页面,和widget类似技术难点及策略
基于上述流程方案,我们在实际落地过程中也遇到一些问题,下面是核心问题和应对策略。实时更新通知刷新数据
更新方式有2种:通过本地update方式在后台刷新数据,比如蓝牙、后台活动等。此方式要求主App进程必须存在,进程一旦杀掉就无法更新;通过通知刷新的实时活动,需要通知为TokenBased,并且对请求的参数做新的扩展。此方式比较灵活,无需主App进程存在,更新及时,因此我们采用此方式。监听并上报token
使用通知刷新的方式需要获取实时活动独立的pushToken,对比在Swift中通过Http请求的方式上报,这里考虑用block的方式,将Swift中的token丢回给主工程,由主工程负责上传token。图片传入非本地化图片技术限制
因为LiveActivity内部禁用网络图片,传统的服务端传图片URL的方式无法满足实际使用,但是希望传入订单图片来个性化地表达并且区分不同订单。解决方案
iOS16beta版时可以通过创建时将图片转为Data格式传入卡片,但是iOS16。1该方案仅限传入4KB左右的图片(API限制),因此暂时不考虑非本地图片方案,采用内置图片方式实现。机型适配获取屏幕宽度问题技术限制
iOS16beta版时,尝试使用UIScreen。main。bounds。width获取屏幕宽度,该方法在模拟器上可以正确获取,但是在真机上,得到值为0,导致无法进行适配。解决方案
考虑在创建LiveActivity时,直接从主工程将屏幕宽度作为起始属性传入其中,验证发现可行。过渡动画系统限制
LiveActivity限制了自定义动画,在数据刷新时,系统自行进行过渡,这也导致了过渡时会出现一些问题。卡片大小变化过渡问题及解决方案
如果通过设置整个View的。background,在变更整体LiveActivity大小的时候,一开始会先把之后的区域框定,但是超出的部分颜色与自定义的背景是不一致的。
改之前(渐变背景为。background设置),有明显不同色的情况。
改之后(渐变背景为单独图层),变化时不再有颜色区别。进度条长度变化过渡问题及解决方案
实际应用发现,通过mask实现的进度条,如果进度条变长,并没有过渡效果,而是直接跳到最终位置,因此考虑相反的进度条,就可以实现过渡效果。埋点分析点击跳转
由于默认情况点击是回主程序,而并不是固定页面,因此有必要自定义widgetUrl(如用于回到订单页面),也可以通过Link实现分区域的跳转,Link和widgetUrl共存时,点击Link区域会响应Link,因此两者同时使用即可。技术限制
无法在widget内部直接添加埋点,并且灵动岛收起时,仅支持添加同一个widgetUrl,对于收起状态添加Link并没有响应。解决方案
因为点击直接跳转到主App,因此考虑将埋点参数加入URL参数即可,主App解析时埋点。但是无法记录包括用户查看、用户关闭(关闭卡片继续发送推送也没有报错因此无法判断)等行为的埋点。
对于灵动岛的区分,实际测试发现,在展开模式下,可以加入Link并且可以正常响应,这与官方文档中的描述一致。版本适配与小镇widget共存
盒马App本来上线有小镇Widget,iOS14即可支持,而LiveActivity需要iOS16。1,因此需要对两者做版本适配。技术限制Xcode14beta不支持在Bundle内部区分版本,只能重新创建一个扩展;Xcode14。1支持在同一个widgetExtension内部区分版本。但beta版发现使用了该方法,会导致两个widget都不出现,不使用则都可以正常使用,确认是当前版本bug。解决方案
后置系统版本判断,在LiveActivityWidget内部去限制版本,成功使二者同时展现。触发场景前置判断权限限制
系统版本:不支持iOS16。1以下
没有权限:通知权限实时活动权限
前置权限限制判断,不满足以上条件时,不尝试创建LiveActivity。时间限制
送达时间超过8小时的场景不创建,因为创建后8小时就无法再刷新异常场景已经存在了很多卡片,达到上限,创建时失败(返回创建结果,失败不进行后续推送)用户关闭卡片,应用无法感知(继续推送,也不会再显示)触发提醒疲劳度控制锁屏提醒
实时活动的刷新支持静默刷新和提醒刷新,这就需要考虑用户疲劳度,并且灵动岛的展开提醒会比普通的通知屏占比更大,更容易影响到用户。
带有alert字段的通知会触发锁屏的亮起以及声音,在主屏幕时会展示灵动岛,不带有alert字段的通知,会静默更新,锁屏时不会亮起,息屏显示时也不会有动画过渡,直接显示后续进度。特殊情况
事件类型为END的通知,即使带了alert,也不会触发提醒。如果需要的话,可以在此时发一条update。
对于不支持灵动岛的机型,添加alert字段,会在主屏幕中触发锁屏LiveActivity样式的横幅通知,目前该横屏会常驻显示,但屏幕有新的任何用户点击都会直接被收起。扩展能力字段解析技术限制
为了保证通知能正常解析,通知payload字段必须保证包含客户端定义的字段,若新版本加了新字段,服务端下发了新字段,老版本不会受到影响也可以正常解析。
原因:原生的解析方式,将通知中的JSON解析为对象,但是对于字段缺少的JSON,解析会失败,这时候无法成功刷新。解决方案
考虑外部传入JSONString,内部进行单独解析,注意不要解析为对象,不然还是没法处理字段缺少的情况,直接解析为字典,字典内部再对各个属性判断,并将空的属性置为空值,widget内部再对应进行调整显示。
这样方式可以使各业务端只要传自己需要用到的字段即可,不必再传入空值。后续技术规划
第一阶段我们在盒马即时配送场景进行初步探索,后续会持续关注用户使用反馈,不断优化迭代,把更好的购物体验带给大家。同时,持续关注苹果官方技术动态,尝试在更多与盒马紧密结合的业务场景落地,也欢迎热爱iOS新技术的同学与我们交流。
木村拓哉爱女大胆露傲娇身材,撞衫超模类似服装宝格丽品牌大使Kki穿性感礼服,出席宝格丽于米兰举办的2023春夏配件系列时尚派对。(互联网图)日剧天王木村拓哉有女初长成,小女儿木村光希(Kki)已19岁,担任模特儿的她穿搭也日
林心如3亿珠宝送女儿,40万包做狗窝,占慈善晚会C位却分文未捐林心如的快乐是咱们想象不到的就像我身上这套大概就是3亿多,这个12克拉的戒指就已经是1亿多。用40万鳄鱼皮包做狗窝,三亿珠宝送未满月女儿,林心如到底有多壕?林心如谈项链价格要知道,
人老了,就不要张扬这些东西了,没有人希望你过得好有人说过,这是一个见不得人好的世道。所谓的见不得人好,就是民间常说的恨人有,笑人无。别人会憎恨你有钱,但他们会因为你倒霉而特别快乐。这种心态,看似有些扭曲,可实际上特别常见。在物欲
和同事关系再好,也不能说的几件事儿1你做错的事工作中做错的事,千万不要告诉你同事,好事不出名,坏事传千里,有的人巴不得臭臭你的名声。你掏心掏肺告诉别人的话,会成为别人的把柄,在单位里,你一定要嘴特别严实,有的人为了
一个家庭沟通是标配,陪伴是高配,理解是顶配家是一切的起点。有人曾说过家,是唯一不需要理由就可以回去的地方,是让你觉得不管变成什么样都能接纳自己的地方。在这个世上,一个有爱的家庭,不仅能让身体得到依靠,也能让心灵得到歇息。想
我的这一生我的这一生,苦难伴随,十之八九,欢乐亦相伴,十之一二,这是人之常态。我的人生在四十八岁的时候完全开悟,开悟的历程是漫长艰辛的,经历了痛苦迷茫怀疑徘徊坚定到如如不动。人生如果真正觉悟
现在的年轻人,怎么都想做达人了扎根互联网从事创作的有志青年,越来越多了。朝九晚五的生活是一种选择,天马行空将才华肆意挥洒于天地间也是一种选择。不再拘泥于形式,这一代人在职业上有着更自由广阔的可能。分享专业知识讲
不要笑我没长大,我只是不想那么复杂1。其实一个人也挺好,无非就是自由中带点孤独。2。花各有命,无论经历了什么,记得带上你的善良和感恩,去遇见温暖和幸福,前方路未来可期3。我会好好的生活,不为别的,就为这些年我亏欠自
想太多,到底有多可怕2005年,美国国家科学基金会通过调查发现普通人脑海里每天会闪过1。2万至6万个念头,其中80的念头是消极的,95的念头与前一天完全相同。这意味着什么?意味着在我们现实生活中,那些
英国公开赛32强出炉,中国军团爆发11人在列,丁俊晖领衔冲击15冠英国公开赛64强赛战罢,冷门迭报,特别是世界排名前16名将中,除前混双赛上夺冠的尼尔罗伯逊压根未报名外,其余名将8人超半数,倒在延期资格赛和64强赛上,具体名单为火箭希金斯马克威廉
英国6对双胞胎进同一学校同年级,老师表示看花眼英国威尔士彭布罗克郡的YsgolBroGwaun学校近日录取了6对双胞胎,他们从不同的小学升入七年级。据称,其中四对是同卵双胞胎,长得十分相似,学校的老师们正在努力区分他们。据报道
十问中国经济三季报国家统计局相关部门负责人的解答来源中国经济网经济日报经济恢复向好能否延续?今年以来,各地区各部门认真贯彻落实党中央国务院决策部署,坚持稳中求进工作总基调,高效统筹疫情防控和经济社会发展,落实疫情要防住经济要稳住
侃财丨提振下港股吧点蓝字关注,不迷路吴亚军辞任龙湖集团执行董事董事会主席,龙湖的股价开盘就大跌40。还好公司中午发了个公告,说已经提前偿还了51亿港元的银团贷款。另外,龙湖控股股东同时宣布增持300
血瘀是万恶之源,体内一切疾病的源头都可能与血瘀有关中医认为百病生于血瘀,血瘀可导致脑梗塞中风老年痴呆症脑萎缩脂肪肝高血压高血脂妇科五官等疾病。可以说血瘀是万恶之源,体内一切疾病的源头都可能与血瘀有关,因为人体无非就是气血二字,那么
生姜里有这种物质,食用时注意控制用量生姜是我们日常使用的调味品,常用于调味,去腥等效果,也有人会用来做姜汤之类的饮品。可以说,生姜的使用是非常广泛和普遍的了。生姜但是,生姜中含有一种有毒物质,摄入量大可能会致癌,这就
隔夜水,隔夜茶,隔夜菜,隔夜肉,到底能不能吃?人们需要保证营养物质被充分吸收,所以他们应该更加注意健康的饮食。但是很多不正确的习惯容易破坏食物中的营养成分,不利于人体对身体所需营养成分的吸收。那么,为了更好地保护人体健康,增强
细嚼慢咽的好处吃东西细嚼慢咽有利于食物消化,可预防高血糖,胃肠道疾病,增强营养吸收等好处。有些人吃东西时狼吞虎咽,这种习惯于健康不利。食物未经认真咀嚼就进入肠胃,增加了肠胃的研磨负担,不利于消化
4个痛风病情加重的表现,看看你有没有中招提起痛风,相信很多患者第一感觉就是痛,毕竟痛风发作起来正如名噬骨之痛,骤发如风。其实,痛风高尿酸对身体带来的伤害远不止疼痛那么简单,却远远超过了疼痛。长期高尿酸,不仅会对关节造成损
肠胃内科医生常用的11种健脾胃的中成药,便宜又好用,建议收藏大家好,我是屈医生。肠胃不好,脾胃虚已经成为现代人常见的病症了,今天给大家分享肠胃内科医生常用却不想开的11种便宜好用的健脾胃药,快点收藏起来吧!第一种,暖胃舒可片,他主要作用就是
中医江志峰黄芪虽好,但这两类人要少喝黄芪,是一种不错的中药材料,很多人都会推荐用黄芪泡水,说是对身体好。当然这么说是没错的。黄芪本来是补气的,但是有两种人需要少喝哦。第一个是湿气特别重的人要少喝,因为湿气特别重的人单
武陵山珍食用菌的价值我们的中国人认为蘑菇是长寿食品,美国人说食用菌是上帝的食品,日本人认为蘑菇位于植物食品的顶峰,您知道它们的特殊营养价值和功效吗?碳水化合物野山菌中含有丰富的单糖双糖和多糖。德国科学
一天睡几个小时最好午睡越睡越困怎么办现代社会,人们加班的情况越来越多,十一二点睡觉,甚至通宵都已经成为常态,即使没有工作,睡觉前刷手机,不知道不觉也会到晚上十一二点才睡觉。但是,你有没有发现,每当身体出现不适的时候,