最近一款UI风格很像Clubhouse的App,功能简单到不能再简单的Locket app火了,其主要功能就是通过桌面Widget显示一张朋友分享的照片,死气沉沉的互联网上终于出现了一点新东西。其实widget的概念自从ios8(2014年)开始就已经有了,但是从Widget出现到现在,一直没有得到很多人的关注,所以什么是Widget?Widget能实现哪些功能呢?
什么是widget
一句话描述:widget就是App可以在主屏幕上显示一个功能简单的小插件。
从使用者的角度来看,widget并不是一个独立的App(但他是一个可以独立运行的程序),他必须依赖于一个宿主App存在。其主要用途就是在主屏幕上展示一些宿主程序需要及时通知给用户的信息,以便在用户不打开app的情况下,即可看到App想要送达给用户的内容。ios14开始,系统在-1屏上内置了很多widget,没错,你能想到的经典widget场景苹果自己都干了。
如果你接触过windows,那么对琳琅满目的桌面插件一定不会陌生,例如在屏幕上显示一个CPU温度或者内存使用情况的插件。没错,现在ios也可以有了。不过由于功能限制,ios的Widget并没有那么"自由",打开屏幕看广告的行为一时半会还不会出现。
如果你是个老ios开发者,那么2014年ios8上的today widget一定不陌生,当年开发者第一次可以在app以外的地方做点什么,所以大火了一短时间,很多人拼命往today视图里塞东西。现在,apple取消了today widget,取而代之的新widget,除了开发方式上有一些区别,以及展示位置可以不局限于today视图了。
扩展阅读:Introduction - Widgets - Human Interface Guidelines - Apple Developer
Widget长什么样
如下图,屏幕上除了App图标以外的,就是Widget了。
Widget可以有以下4种固定的大小,Small,Medium,Large,Extra Large (iPad only)。
一个App可以有多个,多种Widget。
Widget可以放置在-1屏以及主屏幕的任意位置,了解Widget最简单的方式就是亲自使用一下,其实在Locket火爆之前,大部分App就提供了Widget功能的,添加一个Widget,只需要长按屏幕,使App图标处于编辑状态,然后点击屏幕左上角的“+”号,就可以看到眼花缭乱的Widget了。
Widget可以展示什么内容
Widget本质是通过视图快照来进行渲染,以及苹果一贯重点考虑的用户成本(电量网络内存)和体验问题,所以Widget的功能及其有限。
Widget除了可以展示文本,图片,以及自定义的形状和装饰视图之外,其他一切复杂的想法都不被支持。
Apple特别指定了小部件只能使用SwiftUI来开发,而且并不是所有SwiftUI视图都可以使用,我们强大的开发者想出的无数UIKit黑科技更是用不上了。
关于Widget支持的视图:Apple Developer Documentation
Widget可以进行那些交互
sorry,没有交互。
Widget不能交互,不能播放动画,不支持视频,不支持滚动,也不支持主动刷新视图。
唯一支持的交互动作就是用户可以点击Widget唤起宿主App,对于Medium和Large大小的Widget,可以通过Link的方式,在唤起App的同时区分用户点击了哪个Widget元素(类似于按钮功能)。
Widget的内容更新规则
Widget可以与宿主App共享数据,也可以独立请求网络数据。从这一点上来说,Widget几乎没有数据源方面的限制,但是对数据量、数据接口的响应时间要求较高,数据量过大或请求时间过长都会导致数据刷新失败。另外Widget运行时内存使用过多(30M?)也不被允许。
关于更新Widget上显示的内容,除了一些系统事件和App运行状态下强制要求更新,还可以通过设定,在指定时间点刷新Widget。
不过Widget的内容并不会按照设定时间精确刷新,系统强制限制刷新间隔不低于5分钟,并且每天刷新总数量也有一定限制,此外,如果Widget所在屏幕不活跃,也有可能得不到机会刷新。
加载规则:Apple Developer Documentation
加载方式细节:Apple Developer Documentation
其他
一个优秀的Widget可以成为很好的流量入口。但Widget并不是一个迷你应用程序,而只是一种新的主屏幕体验,宿主App的一小块“副屏”。
Widgets are not mini-apps.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)