跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 分享一个自己写的 iOS 消息推送小工具 Chanify
未分類
23 3 月 2021

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

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

資深大佬 : wizjin 2

最近写的一个 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 吧!

大佬有話說 (51)

  • 資深大佬 : touchwithe

    感觉这就是我一直想要的东西,先占座,有时间了试试!

  • 資深大佬 : dcty

    bark 用的挺舒服的

  • 資深大佬 : xing7673

    有点危险哦。

  • 資深大佬 : abelyao

    昨晚正好在 app store 下载,就在想会不会是 v 友的作品,果然。。。

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

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

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

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

    anyway,非常感谢主提供了这个作品

  • 資深大佬 : Tink

    类似于 bark

  • 資深大佬 : abelyao

    @Tink

    作用可能是类似于 bark (都是用来推送)
    但 app 的完成度 我个人感觉比 bark 更高一些( bark 我也用了有小几年了)

  • 主 資深大佬 : wizjin

    @dcty
    bark 的确不错,我自己也用过一段时间,特别是对于 notification server extension 的使用我是收到了 bark 的启发的。

    @xing7673
    具体什么地方会有危险麻烦告诉一下,苦思半天没想到。

  • 主 資深大佬 : wizjin

    @Tink 嗯嗯!没错现在是类似于 bark 。当初最开始写的时候主要是想利用推送更新 apple watch 的 complications 组件,结果写到一半发现苹果限制了每天只能更新 50 次,最开始的想法卒。所以只能坚持写完基本功能,变成现在这个样子了,哎!

  • 資深大佬 : Acoffice

    会考虑整个 Android App 吗?

  • 資深大佬 : 54xavier

    @Acoffice #9 统一推送联盟吗?要兼容各家的推送还是比较麻烦的吧。

  • 資深大佬 : kanbi

    第三方的信得过吗,,,还是觉得微信安全点

  • 資深大佬 : fanmlei

    正好有这个需求,有空研究下怎么用,感谢主

  • 資深大佬 : Mountaincnc

    我擦 只能 iOS14 以上

  • 資深大佬 : lockheart

    赞

  • 資深大佬 : thet

    支持 markdown 吗

  • 主 資深大佬 : wizjin

    @Acoffice Android 没找到好的方案,不知道从何下手,大家有什么好的点子吗?

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

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

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

    @thet 暂时不支持 markdown,回头我会考虑看看,希望支持的话不会太复杂。

  • 資深大佬 : tbg

    官网风格简单好看,请问是自己写的还是用的什么模板

  • 資深大佬 : tbg

    首次启动创建新账号后点退出登录,然后再点创建新账号必闪退

  • 主 資深大佬 : wizjin

    @tbg 官网自己手工写的 html,没用模版。谢谢反馈问题,是一个 Bug,等下次更新就会修复了。

  • 資深大佬 : bao3

    我就想问问,能支持 webhook 吗,想给 plex 用

  • 資深大佬 : benjyair

    巧了巧了,我刚好找这个东西,正好用上,感谢 UP

  • 資深大佬 : xiaoxinshiwo

    占座

  • 資深大佬 : Chennyh

    bark 很舒服,看看这个怎么样

  • 主 資深大佬 : wizjin

    @bao3 webhook 可以用 GET 的方式发送,/v1/sender/<token>/<msg>

  • 資深大佬 : tmy1995hflc

    牛批, 学习了, 多谢

  • 資深大佬 : internelp

    自建服务器推送证书是怎么解决的?

  • 主 資深大佬 : wizjin

    @internelp 自建服务器用的证书写死在代码里面了 github.com/chanify/chanify/blob/5a15385bb8b98a8ba272f343158ce46b8fae720f/logic/logic.go#L63

    用的.p8 证书,正常情况下应该不会过期。

  • 資深大佬 : internelp

    @wizjin 如果你的账号到期了,这个 APP 还能用吗?

  • 主 資深大佬 : wizjin

    @internelp 没有意外的话苹果账号到期了我会坚持续,万一我不能续的话。客户端和服务器代码都在,你可以自己编译一下 APP,只要替换上面的证书就 OK 了,别的代码都不用改。

  • 資深大佬 : Citrus

    不懂就问,APNS 的 Key 直接公开不会有安全隐患么?

  • 主 資深大佬 : wizjin

    @Citrus APNS 的 Key 直接公开的话会有如下几个可能的隐患:
    1. 别人拿到你的设备 Token 后可以连续给你发推送,轰炸你。
    所以在添加节点的时候请注意是自己的信的过的节点,不然别打开让节点存储设备信息的选项。

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

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

    我看 bark 也是公开了 key,目前还没想到更好的解决方案。如果有好的想法欢迎分享一下。

  • 資深大佬 : Citrus

    @wizjin 原来如此。不过我还是有点担心,如果有心人用你公开的这个 Token 去穷举 DeviceToken 发消息,会不会导致这个 Key 被 Ban 啊?

  • 主 資深大佬 : wizjin

    @Citrus 苹果的 DeviceToken 有 256 位长,要是能穷举到也是厉害了。至于被 Ban 我也无可奈何,只有下架 APP 了。本来就是抱着开源的精神和大家分享的。真有人作恶也没办法,只能希望世上好人多吧!

    如果想用又实在担心的话自己 99 美金注册一个苹果开发者账号,申请一个证书自己用,这个服务器代码是支持测试环境下面的 sandbox 模式的,所以不用上架自己默默一个人用也行。

  • 資深大佬 : Citrus

    @wizjin 感谢解惑!希望好人多=。=
    顺便问下,App 中如何添加 Channel 呀?好像没看到相关的说明诶

  • 主 資深大佬 : wizjin

    @Citrus 文档里有,可能写的不是很明显。在首页通过长按右上角扫描二维码的图标可以弹出菜单,菜单里有创建 Channel 。

  • 資深大佬 : txoooy

    主 我收到信息锁屏界面 只提示 收到一条新信息, 没有提示声音
    我已经设置了 sound=1, titile=123 用的 get 方法, 而且自建服务器 和 内置 api 都测试了
    消息权限也给了
    可能是啥原因呢

  • 資深大佬 : txoooy

    我俩手机都试了下, 都是不显示消息内容和没有声音

  • 主 資深大佬 : wizjin

    @txoooy 只提示 “收到一条新信息” 是因为加密数据没有解开时会显示这个提示,这个状态下声音和 title 都不会工作。

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

    看一下点击进入 APP 后消息是不是在。如果还是不行可以描述一下具体的操作流程,我看一下我这边是不是可以复现。

  • 資深大佬 : txoooy

    还有不从消息本体点进去的话, 信息是不会出现在信息列表的, 就算点进去了, 多条未读消息也只会保存点进去的那一条
    我这是不是哪里配置不对, 我看版本是 1.02

  • 主 資深大佬 : wizjin

    @txoooy 感觉你的这个状态手机上的数据库似乎已经不太对了,之前是不是有闪退过?建议删掉 APP 重新装一下。再先用内置的 api.chanify.net 试一下看看。

    闪退的问题我已经改了,1.0.3 在等苹果审核。多条未读消息不论是不是点消息本体应该都会保存的。

  • 資深大佬 : txoooy

    @wizjin 不好意思, 程序没问题, 我重启手机, 删除 data 文件 重新添加后 所有问题都好了
    … 实在不好意思
    主的程序很完善了, 有了自定义频道 很方便

  • 資深大佬 : txoooy

    @wizjin 消息没有保存 应该是闪退的问题, 重新安装后 也都好了

  • 主 資深大佬 : wizjin

    @txoooy 没关系,能用就好。闪退是我的失误,已经紧急修复后提交给苹果审核了。服务器我写了单元测试覆盖代码,APP 偷懒没写,哈哈!看来有时候偷懒就要遭报应啊!

  • 資深大佬 : cjqXe2v

    bark 有一个 chrome 插件很舒服 可以考虑一下

  • 資深大佬 : ahu

    我感觉主很强大了,前后端都能来

  • 資深大佬 : 919615766

    ios13 哭了

  • 主 資深大佬 : wizjin

    @tbg @txoooy 1.0.3 苹果过审了,昨天那个闪退问题应该修复了。再次谢谢。

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

    @919615766 抱歉啊!昨天晚上试着把版本依赖调到 ios13,然后编译爆出一堆警告和错误,瞬间头皮发麻,只能改回去。感觉没信心往下改依赖了。

  • 資深大佬 : superlks0

  • 資深大佬 : From313

    老哥你 App Store 上的 UI 咋弄的???

  • 主 資深大佬 : wizjin

    @From313 网上搜 App Store Screenshots Templates 之类的模版,然后再自己改的。

  • 資深大佬 : Hanson16043287

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具