做了个 iPhone 小组件 maker:不用 Xcode,用 TypeScript 把点子放到主屏

5 月 25 日
 maundytime

大家好,我做了一个 iOS App ,叫 Await 。

它的出发点很简单:很多点子太小,不值得专门做成一个完整 App ,但如果能真的放到 iPhone 主屏上,又会变得挺有用。

比如我之前看到一张 ADHD Bingo 卡片:一个 5x5 的格子,每个格子是一件很小的日常任务,做完就点一下。它本来只是一张截图,但我觉得这不就是一个小组件该有的样子吗?

用 Codex + Await ,我大概一分半做出了一个可点击的基础版。再调几轮,加上手绘网格、荧光笔标记和每天零点重置,前后大概五分钟,就变成了一个真的可以放到主屏上的小组件。

Await 做的事情是:用 TypeScript 创建真实的 iPhone 小组件,不用打开 Xcode ,也不用自己配置 WidgetKit extension 。

大概工作流是:

  1. 把想法描述给 Cursor / Claude Code / Codex
  2. 让 AI 写出 TypeScript
  3. 把代码放进 Await
  4. 在 iPhone 上预览和调整
  5. 放到主屏上

它不是 web view ,也不是生成一张静态图片。Await 会把 TypeScript/TSX DSL 渲染成真实的小组件 view ,可以有状态、timeline 、intent 、网络请求、本地存储、文件、音乐、音频等能力。

另外我做了一个 custom panel 机制。代码里可以把一些参数标记成可调整项,比如文字、颜色、字号、开关、token 、数据源路径。Await 会在 App 里自动生成面板,而且面板和代码是同步的。

这个对 AI coding 很有用:AI 先搭结构,后面那些「颜色深一点」「字号大一号」「这个 token 换一下」之类的细节,就不用每次都让 AI 重写代码了。

我录了两个视频,能更直观看到它在 iPhone 上的效果:

当然,小组件不是完整 App ,WidgetKit 的限制还在:刷新频率、内存、长时间实时交互这些都不能乱来。Await 不是要把小组件变成完整 App ,而是想把这些限制之内的空间变得更容易创作。

App Store: https://apps.apple.com/app/id6755678187
Website: https://awaitwidget.com

想听听大家怎么看:

如果做一个真实 iPhone 小组件的成本足够低,你会想给自己做一个什么样的小组件?

1522 次点击
所在节点    分享创造
19 条回复
eocp2020
5 月 25 日
厚着脸皮有个码可以吗?
cG02NjZAcHJvdG9ubWFpbC5jb20=
我想做国网电力和联通套餐的小组件,还有机场流量的小组件。
maundytime
5 月 25 日
@eocp2020 编辑功能是免费的 可以直接用
7gugu
5 月 25 日
coool ,晚上折腾一下
maundytime
5 月 25 日
@7gugu 感谢支持,欢迎反馈意见
SayHelloHi
5 月 25 日
SayHelloHi
5 月 25 日
@maundytime

提一个需求:

在 App 里面或者有个专门的 web 页面作为小组件商店

用户可以上传和下载小组件 😀
maundytime
5 月 25 日
@SayHelloHi 感谢~~我想想怎么做。
mogita
5 月 25 日
基于 await 做了个能实时刷新的 Claude 套餐用量小组件,纯本机运行,除了 claude.ai 没有任何外部请求。这种直观又轻量的需求的确适合用小组件来实现。

我自己已经用了一段时间,还挺稳定,欢迎取用 https://github.com/mogita/await-agent-usage

安装方式:
- 进入 Releases 点开最新发布的 index.tsx ,拷贝里面的全部代码
- 在 await 里创建一个新的小组件,名称任意
- 将代码粘贴到小组件里

一次性授权设置:
- 用浏览器打开 https://claude.ai
- 登录状态下,找到 sessionKey cookie ,或以 sk-ant- 开头的 cookie 内容,拷贝完整的 session key
- 在 await 小组件里,滚动到下方 Database ,点开后,把 key 粘贴到 sessionKey 的值里

这样就配置完成了,可以在主屏乃至 macOS 桌面添加这个小组件。

ponng
5 月 25 日
这个点子命中我的需求,下载折腾一下,感谢 op
maundytime
5 月 25 日
@ponng 欢迎折腾党!
maundytime
5 月 25 日
@mogita 折腾杯第一位参赛选手你好~
LioMore
5 月 25 日
我分享一个我的 Image Display widget ,可以把喜欢的网络图片放到 widget 上

https://github.com/LitoMore/await-widgets/tree/main/widgets/image-display
maundytime
5 月 25 日
@LioMore 感谢分享~
Aixiaoa
5 月 26 日
最低 ios26 把我拒之门外了。我还在 18.7.8 呢。让我上车啊🚌
maundytime
5 月 26 日
@Aixiaoa 这两天就更新了~
ponng
5 月 26 日
debug 起来稍微有点复杂,能有个控制台啥的就好了
ponng
5 月 26 日
@maundytime app 不支持 http 请求,一些 demo 的 api 请求不了,能不能加个声明允许 http 请求
maundytime
5 月 26 日
@ponng 感谢反馈~我之后支持下本地的 http
maundytime
5 月 26 日
@ponng console 是付费功能,忘了写在说明了。你在什么地方卡 debug 了?应该不复杂,我直接介绍也行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/1215258

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX