专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

灵动岛DynamicIsland初探

  在2022年9月刚刚结束的苹果秋季发布会上,除了常规的手机等硬件设备新品发布,伴随而来一个新的软件功能灵动岛(DynamicIsland);灵动岛是将前置镜头和软件通知结合在一起的一个全新功能,2017年发布的iPhone10打电话时候,左上角的那颗胶囊应该就是这个功能的前身,灵动岛上更进一步,不同应用可以展现出不同的样式,本篇文章将从软件开发角度,探索灵动岛的展现形式、功能限制、如何具体实现、适用场景等各方面的问题;帮助还不了解相关信息的开发者快速理解这一新的展现形式,并结合自身产品形态做出创新。
  元素及展示位置iPhone锁屏(LockScreen)页面灵动岛(DynamicIsland)灵动岛截图显示要求和限制基本流程开发框架配置ActivityAttributes创建ActivityWidget显示视图生命周期管理启动状态更新停止跳转适用场景初探总结参考概览
  灵动岛(DynamicIsland)相关API,隶属于LiveActivityFramework,出现在iOS16。1系统;LiveActivities负责在iPhone锁屏(LockScreen)和灵动岛(DynamicIsland)中显示应用程序的最新数据。这使得人们一眼就能看到实时信息,并可以进行一些简单交互。元素及展示位置
  接下来,我们详细介绍一下能够利用LiveActivity,展示UI元素与用户产生互动的位置;iPhone锁屏(LockScreen)页面
  锁屏页面上半部分可以定制增加小组件,需要iOS16系统;
  灵动岛(DynamicIsland)
  灵动岛,要求iOS16。1系统,iPhone14ProiPhone14ProMax机型;
  目前仅有以下系统应用已经支持灵动岛:OngoingcallSharePlayMusicNowplayingappsTimerMapsdirectionsVoicememosScreenRecordingPersonalHotspot
  我们通过一段动图展示一下灵动岛在实际使用中的效果(动图文件较大,可能需要时间加载);
  通过简单分析可以看到,展示区域主要分为两个部分:音乐播放左侧显示封面,右侧显示波纹计时器;导航左侧显示即时图标,右侧显示剩余时间导航,下个路口,转弯方向;录音机,左侧显示录音状态,右侧录音时长;
  另外,如果App实现了灵动岛,但是在不支持的设备上(即iPhone14ProiPhone14ProMax机型之外的所有机型),会在LockScreen会展示一种新的锁屏组件,位置在锁屏页面下半部分,如下图所示:
  目前苹果已经开放了API给开发者定制属于自己APP的灵动岛功能。灵动岛截图显示
  在截图时,灵动岛区域是否会出现在截图照片中吗?经过初步测试,如果灵动岛内无任务时,截图不会显示灵动岛灵动岛有任务时,截图会显示灵动岛要求和限制
  一个LiveActivity可以激活长达8小时,除非App通过API或用户终止它,否则。超过此限制,系统将自动结束。当一个LiveActivity结束时,系统立即将其从灵动岛(DynamicIsland)中删除。然而,LiveActivity会一直保持在锁定屏幕上,直到用户删除它。
  每个LiveActivity运行在自己的沙盒里,不像widget,不能获取网络或接受位置更新;要更新活跃的LiveActivity的动态数据,有两种方式:应用程序中使用ActivityKit框架;允许LiveActivity接收远程推送通知;灵动岛实现基本流程
  注:获得远程推送更新需要用户授权开发框架配置
  灵动岛开发除了依赖新增的LiveActivity框架,也需要依赖WidgetKit、SwiftUI,即你的App需要有一个小组件的ExtensionTarget,并且创建WidgetBundle,增加新的ActivityWidget;mainstructHyWidget:WidgetBundle{varbody:someWidget{HotWidget()UgcEntryWidget()新增LiveActivityCoffeeDeliveryActivityWidget()}}
  此外,App的配置文件Info需要增加NSSupportsLiveActivities,并设置为true;
  ActivityAttributes
  ActivityAttributes相当于数据模型Model,具体细分为动态数据和静态数据;ActivityAttributes协议描述了出现在LiveActivity中的内容。它的内部类型ContentState表示LiveActivity的动态内容。
  下面的例子展示了一个咖啡外卖应用程序的ActivityAttributes协议的实现。该应用程序的LiveActivity显示已订购的咖啡名称为静态数据,而CoffeeDeliveryStatus为动态数据,随着时间的推移而变化。structCoffeeDeliveryAttributes:ActivityAttributes{publicstructContentState:Codable,Hashable{varcurrentStatus:CoffeeDeliveryStatus}varcoffeeName:String}enumCoffeeDeliveryStatus:Codable,Sendable,CaseIterable{caserecieved,preparing,outForDeliveryvardisplayText:String{switchself{case。recieved:returnRecievedcase。preparing:returnBrewingcase。outForDelivery:returnOnitsway!}}varlongText:String{switchself{case。recieved:returnWeverecievedyourorder。case。preparing:returnOurbaristasarehardatworkbrewingupyourcup!case。outForDelivery:returnGetready,yourbrewisspeedingovertoyourightnow。}}}创建ActivityWidget显示视图
  灵动岛有三种视图形式,从左到右依次是:紧凑视图最小视图扩展视图
  三种视图之间可以进行切换;当一个人在动态岛中触摸并长按紧凑或最小视图时,以及当一个实时活动更新时,扩展视图就会出现。在不支持灵动岛的设备上,解锁屏幕展开的视图显示为LiveActivity更新的横幅。为了确保系统能够在每个位置显示你的APP的实时活动,APP编写代码时必须支持所有视图。扩展视图,由于区域空间较大,进一步分割出下面具体区域
  每一部分均可程序定制展示内容;接下来了解代码如何实现各部分视图:structCoffeeDeliveryActivityWidget:Widget{varbody:someWidgetConfiguration{returnActivityConfiguration(for:CoffeeDeliveryAttributes。self){contextinCoffeeDeliveryActivityWidgetView(attributes:context。attributes,state:context。state)}dynamicIsland:{contextinDynamicIsland{DynamicIslandExpandedRegion(。leading,priority:。greatestFiniteMagnitude,content:{扩展区域的左侧视图})DynamicIslandExpandedRegion(。trailing,content:{扩展区域的右侧视图})}compactLeading:{紧凑视图左侧区域视图}compactTrailing:{紧凑视图右侧区域视图}minimal:{最小视图展示}}}}
  其中ActivityConfiguration结构体是这部分的核心;publicstructActivityConfiguration:WidgetConfigurationwhereAttributes:ActivityAttributes
  ActivityConfiguration结构体遵循WidgetConfiguration协议,其中Attributes泛型参数遵循ActivityAttributes协议,而前面介绍过的CoffeeDeliveryAttributes就是ActivityAttributes协议的实现;
  ActivityConfiguration的初始化init方法如下所示:publicinitContent(forattributesType:Attributes。TypeAttributes。self,ViewBuildercontent:escaping(ActivityViewContext)Content,dynamicIsland:escaping(ActivityViewContext)DynamicIsland)whereContent:View
  上面代码中就是实现了ActivityConfiguration的init方法,包含三个参数:attributesType指明需要传入的content模型类型,这里指定为CoffeeDeliveryAttributes。self;第二个参数content,指定一个闭包,它为出现在锁定屏幕上的活动创建视图。当你提醒某人更新的实时活动内容时,这个视图也会以横幅的形式出现在不支持灵动岛的设备的主屏幕上;第三个参数dynamicIsland,构建灵动岛的内部UI实现。
  DynamicIsland结构体,用于构建灵动岛各部分具体UI;用于实现紧凑视图、最小视图、扩展视图的各部分UI;生命周期管理
  ActivityKit中定义了Activity对象,用于管理LiveActivity从启动到状态更新、结束,完整的生命周期流程;启动APIpublicstaticfuncrequest(attributes:Attributes,contentState:Activity。ContentState,pushType:PushType?nil)throwsActivity示例Task{letattributesCoffeeDeliveryAttributes(coffeeName:coffeeName)letstateCoffeeDeliveryAttributes。ContentState(currentStatus:。recieved)do{tryawaitMainActor。run{letactivitytryActivityCoffeeDeliveryAttributes。request(attributes:attributes,contentState:state,pushType:nil)。。。。print(Startedactivity)}catch(leterror){print(Errorstartingactivity(error)(error。localizedDescription))}}
  现在,让我们开始Activity,需要传入状态state和属性attributes,启动Activity。注意:这里特别区分attributes和state就是为了针对静态数据(attributes)和动态数据(state)分别处理,后续只有动态数据才会被更新。状态更新APIpublicfuncupdate(usingcontentState:Activity。ContentState)async示例funcupdateActivity(state:CoffeeDeliveryStatus){letstateCoffeeDeliveryAttributes。ContentState(currentStatus:state)Task{awaitliveActivity?。update(using:state)}}
  更新动态数据。停止funcstop(){Task{awaitliveActivity?。end(using:nil,dismissalPolicy:。immediate)awaitMainActor。run{liveActivitynil}}}
  立即停止liveActivity。跳转
  灵动岛支持DeepLink,可以跳转进入App;具体来说:对于所有小组件,包括灵动岛,在小组件的视图层次结构中添加widgetURL(:)视图修饰符。如果小组件的视图层次结构包含多个widgetURL修饰符,则行为未定义。
  对于使用WidgetFamily的小组件,如WidgetFamily。systemMedium,WidgetFamily。systemLarge或WidgetFamily。systemextrallarge,将一个或多个链接控件添加到小部件的视图层次结构中。可以同时使用widgetURL和Link控件。如果交互以Link控件为目标,则系统使用该控件中的URL。对于小部件中其他任何地方的交互,系统使用widgetURL视图修饰符中指定的URL。ViewBuildervarbody:someView{ZStack{AvatarView(entry。character)。widgetURL(entry。character。url)。foregroundColor(。white)}。background(Color。gameBackground)}适用场景初探
  最后,我们从产品角度初步探讨一下LiveActivity及灵动岛的适用场景;可以发现不论是在灵动岛展示信息还是在锁屏界面展示信息,这类信息需要满足实时性较强,用户持续关注,比如正在进行中的比赛分数,正在配送的餐食还有多久送达;这类信息在一个相对较短时间段内、高频被更新,比较适合呈现在灵动岛;所以一般来说,下面细分类型的App适合增加LiveActivity及灵动岛的适配:体育赛事类App运动监测类App外卖配送类App总结
  本篇文章完整介绍了创建灵动岛这一新的UI交互形式所需要的开发流程,开发者需要注意设计数据模型时,区分好哪些动态数据需要被更新,哪些静态数据保持不变;另外,我们也初步探讨了灵动岛的适用场景,对于那些产品形态需要及时更新状态信息的App,快速适配灵动岛,将会给用户带来更好的体验,值得尝试。参考https:developer。apple。comdocumentationactivitykitdisplayinglivedataonthelockscreenwithliveactivitieshttps:developer。apple。comdocumentationwidgetkitcreatingawidgetextension
  作者:狐友技术团队
  来源:微信公众号:搜狐技术产品
  出处:https:mp。weixin。qq。comsgI2vgx9cXiIAND08OgZNzQ

铁血徐溜对决连续三届泰拳金腰带获得者瓦查拉中国自由搏击运动员徐溜,将在本年度6月18日格斗时刻遣将中泰拳王对抗赛70KG级比赛中迎战瓦查拉。徐溜本次比赛的对手瓦查拉是连续三届泰拳金腰带获得者,作为泰拳老将,赛场上他沉稳老练三星GalaxyM235G手机在巴西上市IT之家5月28日消息,据SamMobile报道,随着GalaxyM235G的发布,三星正在扩大其在巴西的低价5G智能手机产品组合。该公司还以小幅优惠奖励早期购买者。巴西的三星Ga斗鱼女主播酒店入住记录曝光!直播间大哥被骗,为其豪刷百万纵观全网,有关于女主播与直播间土豪之间爱恨情仇的八卦新闻可谓是数不胜数。听多了见惯了此类事件后,小编如今也能做到见怪不怪了。近日,斗鱼一位名为彭小雨的女主播便卷入了此类八卦之中。据卡德罗夫预言若波兰不停止狂吠则会消失车臣领导人拉姆赞卡德罗夫在Telegram频道上说,波兰是由于苏联而出现的并且由于俄罗斯而生存,如果它不停止狂吠,它会像它成为一个国家那样很快灰飞烟灭。车臣共和国的武装部队参与了俄笑死人不偿命的沙雕小句子1每次和我爸吵架我都好想告诉他你知不知道外面有多少人想当我爸爸2鸭头在我列表呆这么久了也不找我聊天你是被卤了吗3过惯了没钱的生活,现在要开始过更加没钱的生活了。4睡觉的时候不闭眼,如何看待亮剑中张大彪这个角色作为李幼斌版亮剑电视剧中的一个主要角色,张大彪留给很多观众的印象大概是一致的性情彪悍执行力强,有着一股子士气。尽管亮剑的后半部分,即解放后的剧情中,张大彪就不再出现过。其实,如果我河南8旬老夫妻蒸1锅馍60个,2人吃1个月,看活成啥样河南豫西小秦岭,是一个石头山峰包裹着的黄土高坡,沟沟坡坡的环境,自然条件还是比较艰苦,自古以来这个黄河岸边的山沟中便有人类生活,甚至到了21世纪的今天,当地农民依旧坚守在此,过着传一直沉迷玩手机有什么坏处会使血压升高,引起头昏头痛心律失常有损眼球健康,造成视力下降精神紧张亢奋,神经中枢系统很容易失调,失去平衡易使身体多部位受到损伤受屏幕强光噪声刺激,容易产生烦躁情绪易造成注意力不集小侄子造的句,嫂子看完浑身气,大哥愣是外出6天没回家!哈哈哈我怎么也出不去,你倒是来帮我一下呀谁都别动,这一辆车我开定了给你们看一下论一个发型的重要性你们猜这是怎么做到无缝衔接的你先别急着拉我,我要慢慢下楼梯请问这个车真的可以安全上路吗原来法的精神欧阳新法律是治国之重器,良法是善治之前提。这句话写入了2014年10月召开的党的十八届四中全会公报。十八届四中全会是建党以来,首次专题研究部署依法治国问题的全会,彰显了党和国家的最路人声称夜跑偶遇井柏然刘雯,猜测两人在一起,网友挖出更多巧合5月28日晚,一位北京网友发微博表示在夜跑时偶遇井柏然与刘雯,怀疑两人关系不一般,该消息很快发酵,被多家网络营销号转发,引起网友热烈讨论。从图片可见,一名穿白色背心的男子在骑自行车
建议40的中年女人多学董卿陈数这样打扮,优雅知性特显气质中年女人对于岁月静好的奢望,体现在着装上,那一定是高级又有品位。想要在年过40的年龄阶段,展现出一场彻头彻尾的外在形象改变,我们要做到的是心理和身体上的双重改变。好身材驾驭服装会更iPhone14再翻车,灵动岛问题频发,小米11售后获人民网点赞iPhone14系列一出来就受到人们的热烈追捧,灵动岛是这次硬件上创新玩出的新花样,仅仅一个灵动岛,就让果粉玩的不亦乐乎。不过一个月后iPhone14Pro出现的问题还是不少,这也中国企业智能化成熟度报告(2022)发布,制造和医疗卫生成熟度最低1月11日,中国信息通信研究院和双实企业联想集团发布业内首份中国企业智能化成熟度报告(2022)。报告显示,中国企业智能化转型整体行业均值为2。76(满分5分),在公共事业交通能源学习驴子精神,快速走出逆境有一头驴,不小心掉进了一口大枯井。它哀叫着,希望主人把他救出去。主人叫来朋友一起出谋划策,但是,没有人能想出办法搭救驴子。最后,大家认为,反正驴子已经老了,放弃它也不为过,况且这口让人心情变好的6个习惯坚持运动运动有益健康,更能保持活力。一个经常运动充满活力的人,比不锻炼的人更容易体验到喜悦和充实。当然,运动绝不是一时兴起,过几天后就偃旗息鼓。坚持运动,哪怕只是每天半小时的慢跑拉2023时间真的过得很快,一转瞬间2023年了,这些年都没做出什么成绩!忽然感觉好心酸,人活着到底为了什么,为了父母,可总是亏欠他们为了孩子,可也没把他们照顾好一心拼命顾家,可家也没照顾好百万消费券与你相约电影里的冰雪童话世界若想远离城市喧嚣独享冬日浪漫安静地看山听雪你会选择去哪?如果你问我我会告诉你庐山大雪过后的庐山银装素裹仿佛进入冰雪世界一般美轮美奂必须一睹其盛世风采恰逢冰雪嘉年华盛宴庐山景区更是携经济不景气?劳斯莱斯创118年来最高销量纪录!网友小丑竟是我自己每经记者董天意每经编辑裴健如在过去的2022年,全球经济衰退预期越发强烈,单车售价动辄数百万元的超豪华品牌是否受到了影响?据光明日报信息显示,2022年国际货币基金组织连续4次调低大脑是如何感知身体以外的触觉?关注丘脑大叔,了解你的大脑,让你大脑变得更健康,更高效体感系统,从大脑到手,想象地向外延伸,一直进入所拿着的棍子。CreditLottieClark认知神经科学家卢克米勒(Luke苹果和它一起煮,超棒止咳药!咳嗽去无踪,身体快速恢复进入冬季以后,家家户户最常见的水果就是苹果,如果问到哪一种水果是水果之王,一千个人里有一千种答案,俗话说一天一个苹果,医生远离我,足以可见苹果对于健康的重要性。苹果含有维生素C维生公司取消年终奖请员工去新疆聚餐,网友并不羡慕1月11日,广东广州。网曝三潮元老文化创意(广州)有限公司取消年终奖欲邀请员工夏天去新疆聚餐的道歉信,引发关注。信中提到,公司因没有完成年度业绩目标,决定不发年终奖。但为了鼓舞士气
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网