V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
allenchen10
V2EX  ›  分享创造

V2Reader - 基于 V2EX API 2.0 的第三方 iOS/iPadOS/macOS 客户端,欢迎加入 Beta 测试!

  •  
  •   allenchen10 ·
    jiacchen · 2022-01-19 11:28:04 +08:00 · 3039 次点击
    这是一个创建于 1037 天前的主题,其中的信息可能已经有所发展或是发生改变。

    TLDR

    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 也可以安装)。

    功能

    • 通过不同节点访问主题以及回复 iOS 截屏

    • 搜索节点并关注或者将节点添加到主页 iOS 截屏

    • 点击发布者或回复者的用户名查看用户信息 iOS 截屏

    • 自动在 @用户 后添加楼层号,可以点击跳转到对应的楼层,然后点击蓝色箭头跳回原楼层 iOS 截屏

    • iPad 版本以三列视图显示,支持分屏或小窗模式 iPadOS 截屏

    • Mac Catalyst 版本 macOS 截屏

    FAQ

    为什么不支持更低的系统版本?

    主要是因为我用了很多去年 WWDC 新加入的语法,比如 AsyncImage 、MainActor 、task 、refreshable 、searchable 之类的。

    为什么 API 2.0 Beta 已经有了获取提醒的 API ,但软件内还没有实现?

    有两个原因:一、这个 API 获取的内容都是 HTML 格式的,我还没有考虑用什么方式去解析,不像帖子中的内容是 Markdown 格式的,可以用 iOS 15 新引入的 AttributedString 。二、这个提醒 API 还获取不到帖子的 id ,暂时也没办法实现点击跳转帖子的功能。

    为什么有些 Markdown 格式的内容没有正常显示?

    因为 AttributedString 还没有支持 Markdown 格式的全部语法,我猜测下次 WWDC 会支持更多。

    为什么不支持 App 内发帖 /回帖 /收藏 /感谢等功能?

    我暂时打算只使用 API 2.0 Beta ,而这些数据目前还无法通过这些接口获取。当然如果需要的人很多,我之后可能会用解析网页之类的方式来实现。目前点击发帖回帖的按钮会跳转到网页版。

    为什么需要用 Token 来登录?可不可以使用账号密码或者免登录?

    V2EX API 2.0 Beta 必须有 Token 才能够访问,用户需要在设置中自己创建 Token ,然后复制粘贴到 App 中,App 会将 Token 放入系统的 Keychain 保存。用 Token 是否安全,可以参考站长 @Livid 在这个帖子中的回复。

    为什么使用一段时间之后加载不出内容了,重新启动之后显示 Token 无效?

    站长设置了每小时最多请求 API 600 次,这种情况可能是达到了限制,可以等整点后再尝试。

    为什么主页中最多只能添加 5 个节点?

    主页每次刷新时,每个节点都需要单独访问一次 API ,主页中包含的节点过多会导致很快达到 API 请求次数的上限,目前设置的是最多 5 个,如果觉得不够请在 TestFlight 里反馈,我会考虑在之后的版本里调整。

    最后

    我写这个 App 只是作为学习 Swift 的练手,目前支持的功能还不多,并不能代替网页版或者别的优秀 App ,大家有兴趣的话欢迎加入 TestFlight 测试体验,反馈使用中的问题和需要改进的地方。

    12 条回复    2022-05-14 14:30:41 +08:00
    wanglz111
        1
    wanglz111  
       2022-01-19 11:41:31 +08:00
    🐎住
    beeyoung
        2
    beeyoung  
       2022-01-19 13:08:14 +08:00
    是否需要 IPhone 走代理?
    allenchen10
        3
    allenchen10  
    OP
       2022-01-19 13:53:00 +08:00 via iPhone
    @beeyoung #2 不太清楚,我人不在国内
    daolanfler
        4
    daolanfler  
       2022-01-19 16:13:04 +08:00
    好像没没法回复啊
    hackpro
        5
    hackpro  
       2022-01-19 16:20:51 +08:00 via iPhone
    支持 还需要打磨 可以参考下 v2er
    allenchen10
        6
    allenchen10  
    OP
       2022-01-19 16:52:08 +08:00 via iPhone
    @daolanfler #4 FAQ 里有提到
    allenchen10
        7
    allenchen10  
    OP
       2022-01-19 16:53:10 +08:00 via iPhone
    @hackpro #5 嗯,V2er 挺不错的,我一直在用
    hackpro
        8
    hackpro  
       2022-01-20 02:08:05 +08:00 via iPhone
    @allenchen10 v2er 也有不少问题 如果大佬你的 App 能修复 我觉得也很有前景啊
    hackpro
        9
    hackpro  
       2022-01-20 02:09:08 +08:00 via iPhone
    @allenchen10 可以拉一个群 前期收集大家的反馈
    allenchen10
        10
    allenchen10  
    OP
       2022-01-20 09:08:38 +08:00 via iPhone
    @hackpro 感谢建议,之后会考虑的,现在如果需要反馈请使用 TestFlight 或者发邮件到 [email protected]
    hackpro
        11
    hackpro  
       2022-01-22 11:45:53 +08:00 via iPhone
    提两个很感动的点👍👏
    1. 支持 token 登录 不用输密码
    2. 没有 v2er 恼人的 URLSession error
    xiaozhoua
        12
    xiaozhoua  
       2022-05-14 14:30:41 +08:00
    界面好看,功能再多点就好了,什么时候上线,支持👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   965 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:32 · PVG 05:32 · LAX 13:32 · JFK 16:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.