开源我登上过 iOS 医疗付费榜前三的 App - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
timqian
10.02D

开源我登上过 iOS 医疗付费榜前三的 App

  •  
  •   timqian
    timqian 3 月 30 日 4333 次点击

    呼噜娃 是我为自己做的一个监测睡觉是否打呼噜的工具。

    发布一个多月,它获得了超出我预期的成绩,最高登上过 iOS 医疗付费榜前三,目前持续保持在前十。很感谢大家的支持。一如既往,我选择把这个项目开源。

    相关链接


    为什么要开源?

    开源是我给自己定的做产品的六个原则之一(查看完整原则),是我喜欢的方式。

    开源的好处很多,简单说几点:

    • 获得用户的帮助:有人发现 bug 、提交 PR ,一起把软件做得更好
    • 面向倒闭开发:即使我将来不维护了、交不起 Apple 年费了,有需要的人依然能编译使用
    • 带来额外曝光:GitHub 本身是一个发现渠道,能多接触一些潜在用户
    • 给有想法的人一些参考:看看一个真实上架的 App 是怎么构建的

    开源了还赚得到钱吗?

    我认为是可以的。

    有了源码,技术能力强的用户确实可以自己编译安装,但这是有时间成本的。因为 App 定价不高,大部分用户还是会选择直接在商店购买既节省时间,也是对开发者的一种支持。

    我自己曾在 star-history 的 Chrome 插件上验证过这个模式:插件开源,可以自己安装使用,但从 Chrome 商店直接安装需要 $1.99 ,当时有稳定的购买量。后来因为 Chrome 商店不再支持付费插件,才改为免费。


    被抄袭了怎么办?

    代码以 CC BY-NC-SA 协议开源:可以查看、修改、甚至分发代码,但不能商用。如果有人非法商用,我有权起诉。

    退一步说,就算被抄走了也没被我发现这个 App 本身定价不高,抄袭者该怎么定价呢?

    • 定价比我低?那他如何回本?
    • 定价比我高?用户为何不选择正版?

    在 vibe coding 盛行的今天,构建软件的护城河不是代码本身,而是品牌持续的服务。代码可以复制,信任不能。


    欢迎

    如果你也在监测呼噜或者睡眠录音的需求,欢迎试试 呼噜娃。 如果你是开发者,欢迎给 仓库 点个 Star 或提交 PR 。任何反馈都欢迎 也欢迎添加微信号 “t9t-io” 备注「 t9t 」加入 t9t.io 的交流群

    27 条回复    2026-04-01 12:03:17 +08:00
    ggbond2
        1
    ggbond2  
       3 月 30 日
    ,大佬格局
    pandaex
        2
    pandaex  
       3 月 30 日
    > "在 vibe coding 盛行的今天,构建软件的护城河不是代码本身,而是品牌和持续的服务。代码可以复制,信任不能。"
    赞同,认同的东西才有价值
    cryptovae
        3
    cryptovae  
       3 月 30 日
    原来 op 是 star-history 的作者,失敬失敬
    miyuki
        4
    miyuki  
       3 月 30 日
    看到这个去买的,今晚试试看
    C64NRD
        5
    C64NRD  
       3 月 30 日
    expo 好评
    ldlywt
        6
    ldlywt  
       3 月 31 日
    佩服
    charlesshine
        7
    charlesshine  
       3 月 31 日 via iPhone
    app 名字就取的特别好,哈哈哈,呼噜娃
    xiontang
        8
    xiontang  
       3 月 31 日
    大佬牛的
    ImmerTry
        9
    ImmerTry  
       3 月 31 日
    感谢分享,已 star,用来学习
    python35
        10
    python35  
       3 月 31 日
    我很想找一个前两期影视飓风的哪个做梦记录软件,每天闹钟之后自动触发记录梦境,还有配套的 skill 可以生成画面
    lavvrence
        11
    lavvrence  
       3 月 31 日
    这个 app 是要保持一直录音么?不会很费电以及硬盘空间么?
    xxxaadsdss
        12
    xxxaadsdss  
       3 月 31 日
    医疗类的 需要什么资质么。
    yulgang
        13
    yulgang  
       3 月 31 日
    图标不加上 zzZ 么
    timqian
        14
    timqian  
    OP
       3 月 31 日
    @lavvrence 需要一直录音,不太费电,试过不充电使用,一晚上耗电 20%。存储经过优化,8 小时应该是几十 mb
    timqian
        15
    timqian  
    OP
       3 月 31 日
    @xxxaadsdss 纯本地应用,不需要什么资质
    timqian
        16
    timqian  
    OP
       3 月 31 日
    @yulgang 还真加过,AI 加的效果不佳,就没用
    firefox12
        17
    firefox12  
       3 月 31 日
    格局!!
    gongjs
        18
    gongjs  
       3 月 31 日
    请问这个怎么通过录音,
    分析有没有打呼的?用大模型分析吗
    yarawen
        19
    yarawen  
       3 月 31 日
    这个可以记录梦话吗?更想要记录梦话的
    timqian
        20
    timqian  
    OP
       3 月 31 日 via iPhone
    @gongjs
    @yarawen 原理是简单的根据分贝大小自定义阈值筛选
    nododo
        21
    nododo  
       24 天前 via iPhone
    啊啊啊啊啊 支持了 有时间学习一下
    watzds
        22
    watzds  
       24 天前
    @charlesshine #7 上大学时,宿舍打呼噜的同学,大家就叫他呼噜娃
    yisen123
        23
    yisen123  
       24 天前 via iPhone
    实时可视化你这个库的代码架构图看着很酷 https://scan.sentrux.dev/scan/timqian/snoreman
    badboy200600
        24
    badboy200600  
       24 天前
    格局
    xiaoke
        25
    xiaoke  
       24 天前
    app 名字不错
    hzdt
        26
    hzdt  
       24 天前
    大佬用的啥模型,UI 还挺好看的
    timqian
        27
    timqian  
    OP
       24 天前
    @hzdt 主要是在 opencode 用的 kimi k2.5
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     866 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 167ms UTC 22:11 PVG 06:11 LAX 15:11 JFK 18:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86