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

2021-03-29 08:07:43 +08:00
 wizjin

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

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

中文文档: 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 吧!

12312 次点击
所在节点    分享创造
98 条回复
lockheart
2021-04-13 00:53:51 +08:00
运行 chanify serve 或者 docker run 之后运行到 node server...的时候就会卡死,有时候会成功,但是访问 ip 会 403,看不到那个二维码,还有.chanify.yml 这个文件不知道应该放在哪里
wizjin
2021-04-13 07:46:30 +08:00
@wmhack 首先谢谢支持啊!批量删除和小红点后面会加,不过优先级不会很高,要往后排一下啦!目前频道是和用户账号绑定的,没办法分享给别人的。因为每个人都有单独的密钥加密,你不把账号给别人的话别人收到消息也没办法解密的。所以按照目前的架构,如果要发给多个人其实相当于发送多次,每次用不同的 token 来发送。

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

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

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

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

无法访问的话可以用 nc 或者 telnet 先看一下端口有没有打开。
Junichi
2021-04-14 20:59:10 +08:00
ios13 表示不淡定😂
lockheart
2021-04-14 21:52:47 +08:00
@wizjin #69 之后会有 arm 版的 docker 镜像嘛?
wizjin
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
2021-04-20 10:14:49 +08:00
需要 Android 版本
wizjin
2021-04-20 11:54:47 +08:00
@buzailianxi 十分抱歉啊! Android 目前没想到什么好的推送方案,目前主要抽空先把 iOS 的写的完善一点,感觉还是有不少缺陷和不足的。
buzailianxi
2021-04-26 08:22:26 +08:00
@wizjin 我找到了安卓版的 叫 Gotify
wizjin
2021-04-26 09:38:40 +08:00
@buzailianxi 嗯嗯!恭喜啦! Gotify 我之前也看过,应该挺不错的。
SFJ4MEGabMk2
2021-08-10 22:06:42 +08:00
试用了一下,App 和服务端都写的不错,唯一的问题是:

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

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

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

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

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

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

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

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

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

一点浅见,没有读代码。

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

https://tanronggui.xyz/t/765999

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

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

© 2021 V2EX