V2Reader 是一个用 SwiftUI 开发的,在 iOS 、iPadOS 和 macOS 上的 V2EX 第三方客户端。因为所有的数据都是通过访问 V2EX API 2.0 Beta 来获取的,而这份文档还在更新,有很多数据没有提供,所以 V2Reader 的功能还比较有限。之后随着 API 的更新,会有更多功能加入。
我前段时间看到 V2EX API 2.0 的页面,就试了试,当时还提了一个小 Issue,站长很快就修复了。那个时候刚好还在放假,想着入门一下 iOS 开发,然后用这些 API 写一个客户端练手。之后大概花了两周时间开发到当前版本,目前只用了 SwiftUI 原生的组件,没有使用第三方库。因为才刚接触 Swift ,基本是一边学一边写,很多地方的代码还有点乱,等以后整理好了应该会开源。
加入 Beta 版“V2Reader for V2EX” - TestFlight - Apple
iOS/iPadOS 15 以上,或者 macOS 12 Monterey 以上(使用了 Catalyst ,所以 Intel Mac 也可以安装)。
通过不同节点访问主题以及回复
搜索节点并关注或者将节点添加到主页
点击发布者或回复者的用户名查看用户信息
自动在 @用户 后添加楼层号,可以点击跳转到对应的楼层,然后点击蓝色箭头跳回原楼层
iPad 版本以三列视图显示,支持分屏或小窗模式
Mac Catalyst 版本
主要是因为我用了很多去年 WWDC 新加入的语法,比如 AsyncImage 、MainActor 、task 、refreshable 、searchable 之类的。
有两个原因:一、这个 API 获取的内容都是 HTML 格式的,我还没有考虑用什么方式去解析,不像帖子中的内容是 Markdown 格式的,可以用 iOS 15 新引入的 AttributedString 。二、这个提醒 API 还获取不到帖子的 id ,暂时也没办法实现点击跳转帖子的功能。
因为 AttributedString 还没有支持 Markdown 格式的全部语法,我猜测下次 WWDC 会支持更多。
我暂时打算只使用 API 2.0 Beta ,而这些数据目前还无法通过这些接口获取。当然如果需要的人很多,我之后可能会用解析网页之类的方式来实现。目前点击发帖回帖的按钮会跳转到网页版。
V2EX API 2.0 Beta 必须有 Token 才能够访问,用户需要在设置中自己创建 Token ,然后复制粘贴到 App 中,App 会将 Token 放入系统的 Keychain 保存。用 Token 是否安全,可以参考站长 @Livid 在这个帖子中的回复。
站长设置了每小时最多请求 API 600 次,这种情况可能是达到了限制,可以等整点后再尝试。
主页每次刷新时,每个节点都需要单独访问一次 API ,主页中包含的节点过多会导致很快达到 API 请求次数的上限,目前设置的是最多 5 个,如果觉得不够请在 TestFlight 里反馈,我会考虑在之后的版本里调整。
我写这个 App 只是作为学习 Swift 的练手,目前支持的功能还不多,并不能代替网页版或者别的优秀 App ,大家有兴趣的话欢迎加入 TestFlight 测试体验,反馈使用中的问题和需要改进的地方。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.