美文网首页
iOS Widget tips

iOS Widget tips

作者: 大冯宇宙 | 来源:发表于2022-07-29 08:50 被阅读0次

    记录几个小点,当做备忘,希望也能帮助到你。
    如果公司让你调研Widget,这一篇也足够用了。

    • Widget 申请证书时候,需要选择group,为了Widget和主工程共享数据,要注意的是需要在主工程和Widget工程的target下要配置好group。而且刚配置完的时候并不能及时的生效,需要等一会,可能是苹果的缓存。

    • 支持iOS14+

    • 仅能用Swift + SwiftUI开发

    • 默认点击Widget打开主应用程序

    • 支持三种大小
      ○ 小-支持整体点击跳转到固定为止,可以进行tab切换等操作
      ○ 中-支持具体控件点击跳转
      ○ 大-同中

    • 支持最多5组Widget,每组Widget三个

    • 不提供动画,仅支持静态页面展示。

    • 不支持拖拽、滚动等复杂的交互,不支持 Switch 等控件。

    • 更新频率由系统通过机器学习来动态分配
      ○ 当用户编辑主屏幕添加小组件时,先触发 placeholder(in:) 来优先显示占位效果。
      ○ 在预览状态,触发 getSnapshot(for:in:completion:) 创建快照以提供相对完整的信息展示。
      ○ 在主屏上成功添加小组件后,将执行 getTimeline(for:in:completion:) 获取未来时间节点上的数据和相关更新策略。

    • 通过 timeline Provider 提供在未来特定的时间节点的一连串 TimelineEntry 数据,并且可以设置 更新策略:
      ○ after:在特定时间后触发更新。
      ○ atEnd:在 timeline 中所有的 entry 都展示完之后更新。
      ○ never:仅在主 App 触发更新。

    • 苹果提供了两种刷新小组件的方式,System reloads 和 App-driven reload。
      ○ System reload
      由系统发起,刷新频次也由系统控制。为了保证性能,系统会根据各个 reload 请求的重要程度来控制是否刷新 timeline。因此,过于频繁的提交刷新请求可能无法达到预期。
      ○ App-driven reloads
      由 App 触发小组件的 timeline 刷新。当主程序在后台时,可通过后台推送触发刷新;当主程序在前台时,可以通过 WidgetCenter 实现。

    • 因为Widget是一个独立的工程,可以单独搞一个Swift工程出来开发,不需要load整个主工程,提高编译开发速度,等开发完再合入到主工程的Widget框架内

    相关文章

      网友评论

          本文标题:iOS Widget tips

          本文链接:https://www.haomeiwen.com/subject/fygfwrtx.html