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

分享一个自己写的 iOS 消息推送小工具 Chanify

  •  9
     
  •   wizjin ·
    wizjin · 2021-03-29 08:07:43 +08:00 · 11542 次点击
    这是一个创建于 1095 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近写的一个 iOS App 开源出来和大家分享一下,可以利用提供的 API 来发送消息到自己的 iOS 设备上。

    目前主要有以下几个特点:

    • 随机生成公私密钥作为账号,创建账号后保存好二维码,不然只能建新账号啦
    • 支持推送消息加密传输,过苹果 APNS 服务器加密了,不知道算不算多此一举
    • 支持自定义消息分类,不过分类 icon 用的是 iOS14 自带的,希望能找到你喜欢的
    • 同时支持多个自建服务器,要求隐私安全的同学,强烈建议自建服务器,例如在开发中的发送图片功能目前只支持自建服务器
    • 可以选择是否直连苹果服务器,添加时允许自建服务器保存设备信息,这样就可以直连苹果服务器,不然就只是一个加密转发的代理
    • 支持多种数据库后端,目前可以使用 sqlite 或者 mysql 来在自建服务器上保存推送用的设备 token 等信息

    中文文档: github.com/chanify/chanify/blob/main/README-zh_CN.md

    AppStore: apps.apple.com/cn/app/id1531546573

    服务器代码: github.com/chanify/chanify

    客户端代码: github.com/chanify/chanify-ios

    有什么意见建议欢迎交流, 大家要是觉得还行就 Github 上赏个 star 吧!

    第 1 条附言  ·  2021-03-29 09:37:43 +08:00
    谢谢 abelyao 的问题,我简单回答一下:

    1. 不打算收钱,不过默认服务器做了限流,只是让大家试用一下的,如果要正式使用还是建议自建服务器。这样成本就大家自行解决了,哈哈!话说即使有一天默认服务器挂了,也不会影响自建服务器的添加和使用,后面复杂一点的功能也会以自建服务器为主。

    2. 接收消息是可以兼容 json 格式,文档没来的及更新

    3. push 证书在服务器的源代码里 hardcode 了
    第 2 条附言  ·  2021-04-07 16:14:06 +08:00
    另外写了一个 Chrome 的插件,UI 还没好好设计比较粗糙,功能基本都有了。
    可以发送文本、图片、链接到 Chanify,欢迎大家使用,提提意见建议。

    Chrome Web Store 可以下载安装了:

    https://chrome.google.com/webstore/detail/chanify/llpdpmhkemkjeeigibdamadahmhoebdg
    第 3 条附言  ·  2021-04-16 00:20:19 +08:00
    今天开了 Github 的漏洞扫描的 Actions,发现代码里面有 2 处安全隐患,已经在 v1.0.9 版本修复了。有在使用低版本的小伙伴建议升级到 v1.0.9 。

    我目前已经把漏洞扫描加到 CI 里面了,以后每次提交和 PR 都会自动检测,保障代码安全性。
    第 4 条附言  ·  2021-06-15 10:14:11 +08:00

    新版本 v1.1.9 支持 iOS 端禁用 Token,如果 Token 发生了泄漏可以通过将 Token 添加到禁用列表来屏蔽消息。有不小心泄漏 Token 风险的同学建议升级。

    第 5 条附言  ·  2021-09-17 10:01:29 +08:00

    支持 Windows 资源管理器中,往右键 “发送到” 菜单中添加 Chanify 发送文件功能。

    源代码:https://github.com/chanify/chanify-win

    有需要的欢迎试用。

    96 条回复    2023-02-09 19:22:37 +08:00
    touchwithe
        1
    touchwithe  
       2021-03-29 08:13:41 +08:00 via iPhone
    感觉这就是我一直想要的东西,先占座,有时间了试试!
    dcty
        2
    dcty  
       2021-03-29 08:20:18 +08:00
    bark 用的挺舒服的
    xing7673
        3
    xing7673  
       2021-03-29 08:36:39 +08:00 via iPhone
    有点危险哦。
    abelyao
        4
    abelyao  
       2021-03-29 08:57:37 +08:00
    昨晚正好在 app store 下载,就在想会不会是 v 友的作品,果然。。。

    有几个问题,其一在 app store 上也提出了:

    1. 费用方案,无论免费 or 未来有收费计划,建议在官网等地方说明,这类服务一旦部署就偏向长期使用,所以如果未来有收费机会还请明说,如果没有则直接写明了用户也放心;

    2. post 接收消息是否可以兼容 json 格式?源码我没有看,但官网的 usage 是用 form 格式;

    3. 是否可以提供 push 证书,完全自行开发服务端(类似 bark ),原因是希望将部署在一些 serverless 服务上,而每家要选择的数据保存方式略有差异(例如 leancloud 搭配自家的对象存储,cloudflare 搭配的 workers kv 等)

    anyway,非常感谢楼主提供了这个作品
    Tink
        5
    Tink  
       2021-03-29 09:00:38 +08:00
    类似于 bark
    abelyao
        6
    abelyao  
       2021-03-29 09:04:07 +08:00
    @Tink

    作用可能是类似于 bark (都是用来推送)
    但 app 的完成度 我个人感觉比 bark 更高一些( bark 我也用了有小几年了)
    wizjin
        7
    wizjin  
    OP
       2021-03-29 09:26:52 +08:00
    @dcty
    bark 的确不错,我自己也用过一段时间,特别是对于 notification server extension 的使用我是收到了 bark 的启发的。

    @xing7673
    具体什么地方会有危险麻烦告诉一下,苦思半天没想到。
    wizjin
        8
    wizjin  
    OP
       2021-03-29 09:53:49 +08:00
    @Tink 嗯嗯!没错现在是类似于 bark 。当初最开始写的时候主要是想利用推送更新 apple watch 的 complications 组件,结果写到一半发现苹果限制了每天只能更新 50 次,最开始的想法卒。所以只能坚持写完基本功能,变成现在这个样子了,哎!
    Acoffice
        9
    Acoffice  
       2021-03-29 10:03:09 +08:00
    会考虑整个 Android App 吗?
    54xavier
        10
    54xavier  
       2021-03-29 10:09:23 +08:00
    @Acoffice #9 统一推送联盟吗?要兼容各家的推送还是比较麻烦的吧。
    kanbi
        11
    kanbi  
       2021-03-29 10:15:04 +08:00
    第三方的信得过吗,,,还是觉得微信安全点
    fanmlei
        12
    fanmlei  
       2021-03-29 10:19:19 +08:00
    正好有这个需求,有空研究下怎么用,感谢楼主
    Mountaincnc
        13
    Mountaincnc  
       2021-03-29 10:23:10 +08:00
    我擦 只能 iOS14 以上
    lockheart
        14
    lockheart  
       2021-03-29 10:45:02 +08:00 via iPhone
    赞👍🏻
    thet
        15
    thet  
       2021-03-29 10:52:16 +08:00
    支持 markdown 吗
    wizjin
        16
    wizjin  
    OP
       2021-03-29 11:02:30 +08:00
    @Acoffice Android 没找到好的方案,不知道从何下手,大家有什么好的点子吗?

    @54xavier 要兼容各家的推送工作量太多了,感觉自己能力有限搞不定。

    @kanbi 第三方肯定不太能信啦!不过开源的稍微能信一下吧!我自己也是在 Nas 上自建服务器用的。还有欢迎大家 review 代码,看看有没有安全方面的漏洞,毕竟我也不是这方面的专家,万一不小心坑了大家也不好。

    @Mountaincnc 最开始是为了 apple watch 选的 iOS14,目前代码里面太多部分用了新的 API,短时间内应该没办法降低依赖了,十分抱歉啊!

    @thet 暂时不支持 markdown,回头我会考虑看看,希望支持的话不会太复杂。
    tbg
        17
    tbg  
       2021-03-29 14:40:43 +08:00
    官网风格简单好看,请问是自己写的还是用的什么模板
    tbg
        18
    tbg  
       2021-03-29 14:45:40 +08:00
    首次启动创建新账号后点退出登录,然后再点创建新账号必闪退
    wizjin
        19
    wizjin  
    OP
       2021-03-29 14:56:42 +08:00
    @tbg 官网自己手工写的 html,没用模版。谢谢反馈问题,是一个 Bug,等下次更新就会修复了。
    bao3
        20
    bao3  
       2021-03-29 15:24:19 +08:00 via iPhone
    我就想问问,能支持 webhook 吗,想给 plex 用
    benjyair
        21
    benjyair  
       2021-03-29 15:25:22 +08:00
    巧了巧了,我刚好找这个东西,正好用上,感谢 UP
    xiaoxinshiwo
        22
    xiaoxinshiwo  
       2021-03-29 15:42:58 +08:00
    占座
    Chennyh
        23
    Chennyh  
       2021-03-29 15:48:53 +08:00
    bark 很舒服,看看这个怎么样
    wizjin
        24
    wizjin  
    OP
       2021-03-29 16:00:34 +08:00
    @bao3 webhook 可以用 GET 的方式发送,/v1/sender/<token>/<msg>
    tmy1995hflc
        25
    tmy1995hflc  
       2021-03-29 16:19:45 +08:00
    牛批, 学习了, 多谢
    internelp
        26
    internelp  
       2021-03-29 16:54:48 +08:00
    自建服务器推送证书是怎么解决的?
    wizjin
        27
    wizjin  
    OP
       2021-03-29 17:03:28 +08:00
    @internelp 自建服务器用的证书写死在代码里面了 github.com/chanify/chanify/blob/5a15385bb8b98a8ba272f343158ce46b8fae720f/logic/logic.go#L63

    用的.p8 证书,正常情况下应该不会过期。
    internelp
        28
    internelp  
       2021-03-29 17:06:59 +08:00
    @wizjin 如果你的账号到期了,这个 APP 还能用吗?
    wizjin
        29
    wizjin  
    OP
       2021-03-29 17:12:01 +08:00
    @internelp 没有意外的话苹果账号到期了我会坚持续,万一我不能续的话。客户端和服务器代码都在,你可以自己编译一下 APP,只要替换上面的证书就 OK 了,别的代码都不用改。
    Citrus
        30
    Citrus  
       2021-03-29 17:13:17 +08:00
    不懂就问,APNS 的 Key 直接公开不会有安全隐患么?
    wizjin
        31
    wizjin  
    OP
       2021-03-29 17:22:49 +08:00
    @Citrus APNS 的 Key 直接公开的话会有如下几个可能的隐患:
    1. 别人拿到你的设备 Token 后可以连续给你发推送,轰炸你。
    所以在添加节点的时候请注意是自己的信的过的节点,不然别打开让节点存储设备信息的选项。

    2. 如果遇到中间人攻击可以截获你的服务器和苹果之间的通讯。
    我的解决方案是消息主体用 AESGCM 加密后再传递给苹果,这样即使是苹果的 APNS 服务器也无法解密,只有在手机上才能解开消息。缺点是每个节点服务器在每个设备上都要手工添加一次,服务器列表没有共享存储。

    3. 用公开的 key 攻击默认服务器
    我在默认服务上使用的 key 和自建服务器里面的 key 用的不是同一组,所以这个攻击没用。

    我看 bark 也是公开了 key,目前还没想到更好的解决方案。如果有好的想法欢迎分享一下。
    Citrus
        32
    Citrus  
       2021-03-29 17:39:36 +08:00
    @wizjin 原来如此。不过我还是有点担心,如果有心人用你公开的这个 Token 去穷举 DeviceToken 发消息,会不会导致这个 Key 被 Ban 啊?
    wizjin
        33
    wizjin  
    OP
       2021-03-29 17:48:16 +08:00
    @Citrus 苹果的 DeviceToken 有 256 位长,要是能穷举到也是厉害了。至于被 Ban 我也无可奈何,只有下架 APP 了。本来就是抱着开源的精神和大家分享的。真有人作恶也没办法,只能希望世上好人多吧!

    如果想用又实在担心的话自己 99 美金注册一个苹果开发者账号,申请一个证书自己用,这个服务器代码是支持测试环境下面的 sandbox 模式的,所以不用上架自己默默一个人用也行。
    Citrus
        34
    Citrus  
       2021-03-29 19:50:53 +08:00
    @wizjin 感谢解惑!希望好人多=。=
    顺便问下,App 中如何添加 Channel 呀?好像没看到相关的说明诶
    wizjin
        35
    wizjin  
    OP
       2021-03-29 20:45:25 +08:00
    @Citrus 文档里有,可能写的不是很明显。在首页通过长按右上角扫描二维码的图标可以弹出菜单,菜单里有创建 Channel 。
    txoooy
        36
    txoooy  
       2021-03-29 21:31:44 +08:00
    楼主 我收到信息锁屏界面 只提示 收到一条新信息, 没有提示声音
    我已经设置了 sound=1, titile=123 用的 get 方法, 而且自建服务器 和 内置 api 都测试了
    消息权限也给了
    可能是啥原因呢
    txoooy
        37
    txoooy  
       2021-03-29 21:36:32 +08:00
    我俩手机都试了下, 都是不显示消息内容和没有声音
    wizjin
        38
    wizjin  
    OP
       2021-03-29 21:43:15 +08:00
    @txoooy 只提示 “收到一条新信息” 是因为加密数据没有解开时会显示这个提示,这个状态下声音和 title 都不会工作。

    原因可能有 2 个:
    1. 是不是手机重启后没有解锁过就直接推送消息了?重启后没有解锁的时候密钥是在保护状态,没办法用来解密。
    2. 是不是自建服务器的数据库重置过了,可以删掉服务器后重新加一下看看,如果内置 api 也不行的话应该不是这个原因。

    看一下点击进入 APP 后消息是不是在。如果还是不行可以描述一下具体的操作流程,我看一下我这边是不是可以复现。
    txoooy
        39
    txoooy  
       2021-03-29 21:44:49 +08:00
    还有不从消息本体点进去的话, 信息是不会出现在信息列表的, 就算点进去了, 多条未读消息也只会保存点进去的那一条
    我这是不是哪里配置不对, 我看版本是 1.02
    wizjin
        40
    wizjin  
    OP
       2021-03-29 21:52:34 +08:00
    @txoooy 感觉你的这个状态手机上的数据库似乎已经不太对了,之前是不是有闪退过?建议删掉 APP 重新装一下。再先用内置的 api.chanify.net 试一下看看。

    闪退的问题我已经改了,1.0.3 在等苹果审核。多条未读消息不论是不是点消息本体应该都会保存的。
    txoooy
        41
    txoooy  
       2021-03-29 21:57:27 +08:00
    @wizjin 不好意思, 程序没问题, 我重启手机, 删除 data 文件 重新添加后 所有问题都好了
    ... 实在不好意思
    楼主的程序很完善了, 有了自定义频道 很方便
    txoooy
        42
    txoooy  
       2021-03-29 21:58:16 +08:00
    @wizjin 消息没有保存 应该是闪退的问题, 重新安装后 也都好了
    wizjin
        43
    wizjin  
    OP
       2021-03-29 22:11:02 +08:00
    @txoooy 没关系,能用就好。闪退是我的失误,已经紧急修复后提交给苹果审核了。服务器我写了单元测试覆盖代码,APP 偷懒没写,哈哈!看来有时候偷懒就要遭报应啊!
    cjqXe2v
        44
    cjqXe2v  
       2021-03-29 22:30:57 +08:00
    bark 有一个 chrome 插件很舒服 可以考虑一下
    ahu
        45
    ahu  
       2021-03-30 09:12:53 +08:00
    我感觉楼主很强大了,前后端都能来👍
    tousfun
        46
    tousfun  
       2021-03-30 09:21:43 +08:00 via iPhone
    ios13 哭了
    wizjin
        47
    wizjin  
    OP
       2021-03-30 09:43:49 +08:00
    @tbg @txoooy 1.0.3 苹果过审了,昨天那个闪退问题应该修复了。再次谢谢。

    @cjqXe2v 你说的是 Bark-Chrome-Extension 这个吗?我昨天晚上看了一下应该没办法直接工作,对于 url 里面消息的部分用的编码方式不一样,受到我在服务器端用的 web 框架的限制没有想到好的方案来兼容。

    @919615766 抱歉啊!昨天晚上试着把版本依赖调到 ios13,然后编译爆出一堆警告和错误,瞬间头皮发麻,只能改回去。感觉没信心往下改依赖了。
    superlks0
        48
    superlks0  
       2021-03-30 10:41:11 +08:00
    👍
    From313
        49
    From313  
       2021-03-30 14:46:39 +08:00
    老哥你 App Store 上的 UI 咋弄的???
    wizjin
        50
    wizjin  
    OP
       2021-03-30 21:42:53 +08:00   ❤️ 1
    @From313 网上搜 App Store Screenshots Templates 之类的模版,然后再自己改的。
    Hanson16043287
        51
    Hanson16043287  
       2021-03-31 11:46:37 +08:00
    👍
    wizjin
        52
    wizjin  
    OP
       2021-04-05 18:15:45 +08:00
    @cjqXe2v chrome 插件简单写了一个,可以试一下,支持发送选中文本,链接,图片。

    https://github.com/chanify/chanify-chrome-extensions

    不过还没来得及上 Chrome 的 WebStore,只有先通过源代码使用来了。
    suisr9255
        53
    suisr9255  
       2021-04-11 05:21:43 +08:00 via iPhone
    1.是否考虑 Mac 端?目前就是没找到类似功能的 Mac 端的😭
    2. 希望增加支持下 自动复制 功能,如果能像 bark 一样,支持指定复制的内容就更好了
    wizjin
        54
    wizjin  
    OP
       2021-04-11 08:50:12 +08:00
    @suisr9255

    1. Mac 端等手机端功能再完善一下后会开始开发的,目前手机端还有一些 UI 要优化一下。
    2. 自动复制 功能我会考虑一下怎么加比较好的。

    谢谢提的意见。
    xingheng
        55
    xingheng  
       2021-04-12 17:35:28 +08:00
    手动点赞!
    superlks0
        56
    superlks0  
       2021-04-12 22:28:22 +08:00
    赞,还在持续迭代新功能
    wizjin
        57
    wizjin  
    OP
       2021-04-12 22:45:25 +08:00
    @superlks0 哈哈!谢谢鼓励啊!没有意外的话,我至少会把 Apple watch 和 Mac OSX 支持做完,后面的功能就随缘了。

    @suisr9255 自动复制 功能等过几天 1.0.8 发布就会有了,不过不会像 Bark 那么方便,因为 Bark 自动复制是做在 Notification Service Extension 里面的,我个人观点是但是在没有用户交互的情况下直接操作剪贴板好像不太符合苹果的风格,苹果的短信验证码的自动填充也是要用户点一次的。所以,我目前是做在下拉或长按消息后自动复制,也就是用户至少要有一次交互才会触发。
    wmhack
        58
    wmhack  
       2021-04-13 00:06:04 +08:00
    收到新消息后,希望能够显示小红点。消息,希望能批量删除,全选
    wmhack
        59
    wmhack  
       2021-04-13 00:07:09 +08:00
    能够支持一下 单独频道导入导出吗? 有时候不想把账号分享给别人额,只想和他人共同在一个频道里
    wmhack
        60
    wmhack  
       2021-04-13 00:08:05 +08:00
    另外,github 上面,建议留一个 捐赠码,支持一下你的好作品
    lockheart
        61
    lockheart  
       2021-04-13 00:53:51 +08:00 via iPhone
    运行 chanify serve 或者 docker run 之后运行到 node server...的时候就会卡死,有时候会成功,但是访问 ip 会 403,看不到那个二维码,还有.chanify.yml 这个文件不知道应该放在哪里
    wizjin
        62
    wizjin  
    OP
       2021-04-13 07:46:30 +08:00
    @wmhack 首先谢谢支持啊!批量删除和小红点后面会加,不过优先级不会很高,要往后排一下啦!目前频道是和用户账号绑定的,没办法分享给别人的。因为每个人都有单独的密钥加密,你不把账号给别人的话别人收到消息也没办法解密的。所以按照目前的架构,如果要发给多个人其实相当于发送多次,每次用不同的 token 来发送。

    @lockheart .chanify.yml 这个文件 docker 的话默认位置在 /root/.chanify.yml ,也可以通过参数--config=<配置文件路径>来自定义。会卡死不太清楚是什么原因,我这边没遇到过,是配置了 mysql 数据库但是没连上吗?其他原因好像一时也想不到。
    wizjin
        63
    wizjin  
    OP
       2021-04-13 07:46:53 +08:00
    @xingheng 手动感谢,哈哈!
    wmhack
        64
    wmhack  
       2021-04-13 09:16:02 +08:00
    @wizjin 如果能发送给多个人,不加密消息,其实也能接受的。两个人用同一个账号,会比较麻烦呢,因为有的消息只想自己一个人看到额
    wmhack
        65
    wmhack  
       2021-04-13 09:19:05 +08:00
    另外,导入旧账号,建议支持粘贴秘钥串导入额,这样会方便很多呢
    wmhack
        66
    wmhack  
       2021-04-13 09:27:01 +08:00
    小建议:添加频道的按钮,建议单独放出来额。我刚进入软件时,如果不看教程,都不知道怎么添加频道呢
    wizjin
        67
    wizjin  
    OP
       2021-04-13 10:02:24 +08:00
    @wmhack 谢谢你的意见。

    发送给多个人建议最好还是发送的人去处理,不然有的消息加密、有的不加密用的人容易混乱。

    导入旧账号的流程回头我会再考虑一下看看怎么可以再简单一些。

    添加频道的按钮纯粹是因为我看 iOS14 的 sdk 里面有这个新的 API 感觉好厉害,以前要写一堆代码的现在几行就 OK 了。正如常言道手中有锤子,看什么都像钉子。哈哈!这个我回头再看看那里放这个按钮会合适一点。
    lockheart
        68
    lockheart  
       2021-04-14 16:56:52 +08:00
    @wizjin #62 docker 命令没写错,yml 也配置好了,数据库那部分应该没写错,但是还是运行到 node server ip:port 的地方就会卡住,之后无法访问,按 ctrl+c 会显示成功退出服务,是不是不支持 centos 系统?我是照着文档里的括号改好了参数,希望能完善一下文档
    wizjin
        69
    wizjin  
    OP
       2021-04-14 17:13:38 +08:00
    @lockheart 应该和发行版本没关系,卡住是什么意思?有这样完整显示`Node server endpoint: http://<ip 地址>:<端口号>`日志了吗?正常显示完这句就会停下来等待外部访问了,应该是正常情况。

    无法访问的话可以用 nc 或者 telnet 先看一下端口有没有打开。
    Junichi
        70
    Junichi  
       2021-04-14 20:59:10 +08:00 via iPhone
    ios13 表示不淡定😂
    lockheart
        71
    lockheart  
       2021-04-14 21:52:47 +08:00
    @wizjin #69 之后会有 arm 版的 docker 镜像嘛?
    wizjin
        72
    wizjin  
    OP
       2021-04-14 22:42:36 +08:00
    @Junichi 抱歉,业余时间写的项目,实在精力有限,目前抽不出时间来做向下兼容了。

    @lockheart 之前卡死的问题好了吗? docker 镜像的话 dev 我已经支持了 linux/386,linux/amd64,linux/arm64,linux/arm/v7 。正式版本的话等 v1.0.9 就可以用了。
    buzailianxi
        73
    buzailianxi  
       2021-04-20 10:14:49 +08:00
    需要 Android 版本
    wizjin
        74
    wizjin  
    OP
       2021-04-20 11:54:47 +08:00
    @buzailianxi 十分抱歉啊! Android 目前没想到什么好的推送方案,目前主要抽空先把 iOS 的写的完善一点,感觉还是有不少缺陷和不足的。
    buzailianxi
        75
    buzailianxi  
       2021-04-26 08:22:26 +08:00
    @wizjin 我找到了安卓版的 叫 Gotify
    wizjin
        76
    wizjin  
    OP
       2021-04-26 09:38:40 +08:00
    @buzailianxi 嗯嗯!恭喜啦! Gotify 我之前也看过,应该挺不错的。
    SFJ4MEGabMk2
        77
    SFJ4MEGabMk2  
       2021-08-10 22:06:42 +08:00
    试用了一下,App 和服务端都写的不错,唯一的问题是:

    1. 新注册用户时,用户信息会被发送到 api.chanify.net ,即使自建服务器。
    2. 新建频道信息也会被发送到 api.chanify.net ?即使自建服务器。

    这样实现,自建服务器要求的隐私没有保障了。
    wizjin
        78
    wizjin  
    OP
       2021-08-11 07:40:34 +08:00
    @i386 你好,谢谢你提的问题。

    1. 新注册用户时,向 api.chanify.net 发送到数据,只是自动注册到官方服务器。如果只使用自建服务器服务器,后续推送信息都不会经过 api.chanify.net 。官方最多只是知道有多少活跃用户,并无法知道更多其他用户推送的消息。

    2. 新建频道信息不会发送到 api.chanify.net ,如果使用自建服务器的话官方服务器永远不会知道用户的频道,除非使用官方服务器向某个频道第一次发送消息时,官方服务器才会知道这个频道的消息。

    PS: 自建服务器的时候注意使用有状态的模式,无状态的话因为缺少部分信息,所以会借助官方服务器。因此如果希望保障隐私建议使用有状态的模式自建服务器。

    综上所述,这样的实现我认为已经保障了隐私,还有问题欢迎随时交流。
    SFJ4MEGabMk2
        79
    SFJ4MEGabMk2  
       2021-08-11 20:02:18 +08:00
    @wizjin 谢谢。第 2 条是我理解错了。

    第 1 点,是不是意味着官方服务器可以向任意注册用户推送消息?因为,新用户注册时在 bind-user 操作时提交了用户和设备信息到 api.chanify.net
    SFJ4MEGabMk2
        80
    SFJ4MEGabMk2  
       2021-08-11 20:12:53 +08:00
    @wizjin 另外,channel 的概念有点混淆。

    一般 channel 和订阅相关。我的理解是 channel 是个服务端概念,订阅同一个 channel 的用户,都能收到 publish 到该 channel 的消息。

    而 Chanify 里的 channel 好像是个 Tag 的意思,并不支持同一个消息群发。 它应该是消息的属性之一,不是消息的目标,用户 /设备 /组 才是消息的目标。API 设计把 channel 的 Token 作为消息目标好像不是很合适。

    一点浅见,没有读代码。
    wizjin
        81
    wizjin  
    OP
       2021-08-12 01:10:34 +08:00   ❤️ 1
    @i386 首先谢谢你的提问。

    1. 官方服务器理论上可以向户推送消息,但是现在应该是不可以,因为我根本没写这块代码。一般情况也不会向用户推送消息,我现在能想到的唯一用途是,万一发现严重的安全漏洞,我可能会提送一条升级提醒给用户。但是也只能推送到未分类的 channel,希望这个永远用不到吧。如果实在有洁癖的可以自己修改一下 iOS 代码,把链接官方服务器部分去掉,再编译安装。

    2. Chanify 不支持群发,所以这里 channel 可以理解为分类。API 设计的 Token 是包含 channel 和 用户 两个信息的,并不是单独的只包含 channel 。认为用户是目标,token 自带分类信息比较合适目前的情况。也是因为保护隐私的关系,所以服务器都没有保存 channel 的数据,所以就放在 Token 里面了。因此就像我之前说的,服务器是没办法知道具体的 channel 信息的。

    还有问题欢迎随时交流。
    SFJ4MEGabMk2
        82
    SFJ4MEGabMk2  
       2021-08-12 01:25:10 +08:00
    @wizjin 多谢。

    我以为是 pushover 的模式。那么这个似乎是面向个人用户供自己使用的。
    wizjin
        83
    wizjin  
    OP
       2021-08-12 01:29:30 +08:00
    @i386 不客气,也有我没有描述清楚的原因,这个的确主要是个人用户供自己使用的,也没有群发的功能。
    SFJ4MEGabMk2
        84
    SFJ4MEGabMk2  
       2021-08-12 02:26:17 +08:00
    @wizjin 多谢。

    另外,如果可以允许删除内置的 Server 就完美了。就是说,
    1. 第一次打开的时候可以去默认服务器注册。
    2. 用户添加了自己的服务器后,可以允许删除。
    wizjin
        85
    wizjin  
    OP
       2021-08-12 10:27:01 +08:00
    @i386 谢谢你的建议,后面有空会考虑如何添加的。
    wizjin
        86
    wizjin  
    OP
       2021-09-30 17:13:34 +08:00
    @suisr9255 1.3.0 版本支持原生 macOS 了。
    zololiu
        87
    zololiu  
       2022-02-28 22:25:04 +08:00
    看上去完成度比 Bark 要高,在水果商店看到能发送图片?很想用,现在的问题是能在群晖 Docker 里面部署吗?
    wizjin
        88
    wizjin  
    OP
       2022-03-01 12:45:17 +08:00
    @zololiu 你好,发送图片要自建服务器,在群晖 Docker 里面能部署的。
    37012
        89
    37012  
       2022-03-01 17:16:31 +08:00
    @wizjin 我这里用有 bug 已经部署好了 但是无法推送, 502 错误 看 docker 日志 也有错误 ![]( https://files.catbox.moe/3x2h73.png)
    wizjin
        90
    wizjin  
    OP
       2022-03-02 00:22:47 +08:00
    @37012 你好,看日志是运行的参数或者配置文件不对,可以看一下是不是 --secret 这个参数没有设置。
    zololiu
        91
    zololiu  
       2022-03-03 15:31:07 +08:00
    @wizjin 体验了一下,就是很棒很方便,希望未来的版本能丰富一下自定义推送的丰富性,像 Bark 一样就可以有更多花式玩法啦。
    wizjin
        92
    wizjin  
    OP
       2022-03-17 13:03:10 +08:00
    @zololiu 谢谢建议,1.3.6 服务器端支持了 lua 脚本作为插件,可以接收 json 数据后格式化后再推送消息。
    lAoD
        93
    lAoD  
       2022-06-07 16:58:50 +08:00 via iPhone
    有没有简单一点的部署自建服务器方式啊,像 bark 一样 docker 一键启动,感觉好复杂
    haoxuexiaoyao
        94
    haoxuexiaoyao  
       2022-09-21 14:12:31 +08:00
    @wizjin 低版本的 macos 什么时候支持下么 版本 10.15.7 (19H1519)
    love2328
        95
    love2328  
       2023-01-02 12:28:51 +08:00
    在商店看到 在想会不会是 v 友呢 果然!! 支持加油
    Asimov01
        96
    Asimov01  
       2023-02-09 19:22:37 +08:00
    windows 版本只能发消息,不能接受消息吗 😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3845 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 84ms · UTC 10:32 · PVG 18:32 · LAX 03:32 · JFK 06:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.