Apple Widget:下一个顶级流量入口?

Widget 和 SwiftUI



Widget 只能用 SwiftUI 来进行开发,确切的说,Widget 的本质是一个随着时间线而更新的 SwiftUI 视图。

当我最开始知道这个限制的时候,说实话是相当震惊的。众所周知,SwiftUI 是一个去年才发布的新技术,而且最开始的时候 SwiftUI 是相当不稳定的,以至于苹果自己都是建议开发者暂时不要用到生产环境上,Widget 作为系统主屏幕的功能,强制使用这么新的技术,会不会太激进了?

显然是不会。苹果要求 Widget 只能使用 SwiftUI 主要是基于几点考虑:

**1、**SwiftUI 经过一年的发展,有了很大的提升,不仅可以使用 SwiftUI 来构建整个应用程序,而且在一些方面已经优于基于 UIKit 的开发方式了。具体的内容,大家可以看一下《详解 WWDC 20 SwiftUI 的重大改变及核心优势》

**2、**苹果正在布局跨平台,大统一的策略。Widget 作为系统的核心功能,使用 SwiftUI 是唯一的选择。SwiftUI 精美的 DSL 设计,使得开发者使用一套代码在 iOS、iPadOS、macOS、watchOS 和 tvOS 等多个平台展示不同的样式可以轻松的实现。(Widget 只会在 iOS、iPadOS 以及 macOS 上展示)

**3、**使用了 SwiftUI 使得 Dynamic Type 和 Dark Mode 等问题适配起来成本很低。

**4、**只有使用 SwiftUI 才能达到很多对于 Widget 的限制。倘若可以使用 UIKit 开发者可能有无数种办法绕过苹果的限制。比如开发无法使用 UIViewRepresentable 来桥接 UIKit,只要使用任何 UIKit 的元素会直接 Crash。

**5、**将 Swift 语言和 SwiftUI 的重要程度提升了一大截。

Widget 的展示形式



 一个 App 可以对应多个 Widget Extension

你可以使用WidgetBundle 来进行组装。苹果并没有对 Widget Extension 有数量上的限制。所以为了避免大家开发过多的 Widget Extension 导致搜索起来麻烦,在 Widget Gallery 中只能看到一个条目。

 一个 Widget Extension 一共只有三种尺寸

考虑到简单明了的特点以及手机屏幕的空间有限的问题。苹果只提供了三种样式可以选择,systemSmall(2 * 2 icon 区域)、systemMedium(2*4 icon 区域)、systemLarge(4 * 4 icon 区域)。

 同一种 Widget 可以被多次添加到主屏幕中

而且对于每一个 Widget 来说,都有其对应的独立 TimeLine,相互独立,互不干扰。

 开发者无法开发智能叠放(Smart Stacks)

开发者无法开发一个 Widget 的集合。智能叠放(Smart Stacks)是一个系统特有的能力,对于开发者来说,唯一可以做的就是主动提供相关性信息。前文提到了 Timeline 的数据又一组 TimelineEntry 组成,而每个 TimelineEntry 除了包含时间点和视图信息以外,还可以包含一个 TimelineEntryRelevance 对象,用来表示这个 entry 的相关性。

 不可交互,只可点击

Widget 的 UI 是无状态的,不支持滚动,也不支持像 Switch 一样的互动元素。唯一开放的能力只有通过点击和DeepLink 来唤起主 App。

苹果提供了两种 API 给到开发者,第一种是SwiftUI widgetURL API,代码如下所示:

而 widgetURL 的可点击区域如下:

对于 systemSmall 类型来说,只支持 widgetURL 的方式,但是 systemMedium 和 systemLarge 还可以使用 SwiftUI Link API,代码如下所示:

而 Link 的可点击区域如下:

同时,为了性能和耗电量的考虑。Widget 不能展示视频和动态图像。所以期待通过动效吸引用户眼球的方式可以暂时息熄火了~

总结与展望



Widget 的出现,让 iOS 系统的桌面有了破局,一定会有很多产品都期待借助 Widget 来丰富自己产品的内容表达。

但是,Widget 设计的初衷是简单明了的在恰当的时机展示一些带有个性化定制的内容,为了不让主屏幕的整体使用体验变得复杂,Widget 从技术上就做的很克制,限制了很多很多的能力。因此我认为Widget 不会成为下一个互联网公司竞争的流量入口,它会成为 App 提高用户体验的利器。

从技术角度看,SwiftUI Only 这种看似“激进”的策略其实也是一种信号,其实也是在告诉大家苹果对于 Swift 以及 SwiftUI 的重视程度。

虽然,从目前来看 Pure SwiftUI 的设计,可以做的事情真的很少,但是我也相信,苹果会不断优化 Pure SwiftUI 的能力。让开发者可以以最低的开发成本,适配更多的平台。

最后,也期待大家可以好好研究一下 Widget,结合自己的产品,给到用户极致的用户体验。

参考

iOS 14 Preview

https://www.apple.com.cn/ios/ios-14-preview/

Widgets code-along

https://developer.apple.com/news/?id=yv6so7ie

Meet WidgetKit

https://developer.apple.com/videos/play/wwdc2020/10028/

What’s new in SwiftUI

https://developer.apple.com/videos/play/wwdc2020/10041/

Add configuration and intelligence to your widgets

https://developer.apple.com/videos/play/wwdc2020/10194/

Build SwiftUI views for widgets

https://developer.apple.com/videos/play/wwdc2020/10033/

Creating a Widget Extension

https://developer.apple.com/documentation/widgetkit/creating-a-widget-extension

Building Widgets Using WidgetKit and SwiftUI

https://developer.apple.com/documentation/widgetkit/building_widgets_using_widgetkit_and_swiftui

Making a Configurable Widget

https://developer.apple.com/documentation/widgetkit/making-a-configurable-widget
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以扫码领取!

img

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」
95254671a72faed303032d36.jpg" alt=“img” style=“zoom: 33%;” />

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

[外链图片转存中…(img-NB6L95wl-1711360166289)]

[外链图片转存中…(img-dmwFSAn0-1711360166289)]

[外链图片转存中…(img-YdiuJ3Bs-1711360166290)]

更多笔记分享

[外链图片转存中…(img-ih0QygqN-1711360166290)]
需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值