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

PushDeer 自架版:一行命令在你自己的服务器上架设一个无 APP 推送服务

  •  
  •   easychen ·
    easychen · 2022-02-03 16:45:51 +08:00 · 9658 次点击
    这是一个创建于 1057 天前的主题,其中的信息可能已经有所发展或是发生改变。

    iOS14+,无需安装任何 APP 即可实现推送:

    服务器端架设:

    git clone https://gitee.com/easychen/pushdeer.git && cd pushdeer && sudo docker-compose -f docker-compose.self-hosted.yml up --build -d
    

    源代码: https://github.com/easychen/pushdeer

    第 1 条附言  ·  2022-02-03 19:28:27 +08:00
    52 条回复    2022-02-15 14:12:11 +08:00
    ZeroClover
        1
    ZeroClover  
       2022-02-03 16:53:01 +08:00
    东西很好,但是演示的 GIF 太卡了。。。建议换个视频转 GIF 的工具
    easychen
        2
    easychen  
    OP
       2022-02-03 17:01:30 +08:00
    triptipstop
        3
    triptipstop  
       2022-02-03 17:09:05 +08:00
    还是用微信公众号测试号的模板消息吧,全平台都是白名单。
    kingxiangqi
        4
    kingxiangqi  
       2022-02-03 17:10:24 +08:00
    为什么需要 APPLE 登陆?
    lockheart
        5
    lockheart  
       2022-02-03 17:13:48 +08:00 via iPhone
    安卓用的谷歌推送吗?
    pi1ot
        6
    pi1ot  
       2022-02-03 17:17:30 +08:00
    😱
    easychen
        7
    easychen  
    OP
       2022-02-03 17:25:51 +08:00
    @lockheart 目前是 MiPush 。之后准备接快应用。
    easychen
        8
    easychen  
    OP
       2022-02-03 17:26:43 +08:00
    @kingxiangqi 因为是多用户系统,iOS 上用 apple 账号不用注册。
    billzhuang
        9
    billzhuang  
       2022-02-03 18:13:18 +08:00 via iPhone
    不错,之前用的 bark 。
    Tink
        10
    Tink  
       2022-02-03 19:25:01 +08:00 via Android
    安卓要安装 app 吗
    easychen
        11
    easychen  
    OP
       2022-02-03 19:28:05 +08:00
    @Tink Android 之后会尝试接入快应用。
    CallMeReznov
        12
    CallMeReznov  
       2022-02-03 19:31:25 +08:00
    我提个问题嗷
    MiPush 是说小米手机的系统不需要另外安装任何其他软件就能接受到推送嘛?
    chotow
        13
    chotow  
       2022-02-03 19:56:32 +08:00 via iPhone   ❤️ 1
    @triptipstop #3 如果你知道这个项目的背景就不会这么说了。微信各种限制,反垄断从小处从自己做起。
    datocp
        14
    datocp  
       2022-02-03 20:07:41 +08:00 via Android
    已经转到最古老的 email,然后微信接收邮件通知。。。
    easychen
        15
    easychen  
    OP
       2022-02-03 21:29:46 +08:00   ❤️ 1
    @CallMeReznov 不是,MiPush 意味着小米系手机 APP 安装后不驻留后台也能收到消息,但依然要装 APP 。不装 APP 的方案要靠快应用,还在开发中。
    fff333
        16
    fff333  
       2022-02-03 23:26:11 +08:00 via Android
    @easychen 我们用的 mipush ,iOS 经常收不到
    deplivesb
        17
    deplivesb  
       2022-02-03 23:52:54 +08:00
    之前众筹的时候支持过,现在已经用上了,感觉还不错么就是界面我觉得还可以再精致一些,但是迫于自己不会 iOS 相关的开发,所以也没能参与开发😂
    jdgui
        18
    jdgui  
       2022-02-04 00:10:09 +08:00
    其实目前来说体验最好的还是用企业微信转到微信,微信各种手机厂商自带保活
    Maskeney
        19
    Maskeney  
       2022-02-04 00:23:32 +08:00   ❤️ 1
    Android 有望流畅使用吗? 我是指 Android 带 GMS 的那种,目前 release 看了一下仅支持微信和苹果账号,有计划接入 Google 账号和 FCM 推送吗?
    dingwen07
        20
    dingwen07  
       2022-02-04 01:08:49 +08:00
    @kingxiangqi Sign in with Apple 不需要担心隐私

    建议 OP 在使用 Sign In with Apple 的时候不要请求用户姓名和电子邮件地址,我记得是可以的
    kingxiangqi
        21
    kingxiangqi  
       2022-02-04 01:41:01 +08:00
    @dingwen07 问题是一个只需要拿到 device token 就能推送的 App Clip 为什么一上来就要求 APPLE 登陆?即使需要实现额外功能(看截图似乎是多设备账户聚合?)也应该作为可选和提供其它注册方式,体验很不友好。而且 App Clip 还面临 30 天不使用会自动删除的隐藏坑。从轻便简易耐用角度来看,整体体验不如需要下载安装的 Bark App 。

    至于 Sign in with Apple 的问题,Epic 已经有先例了,每个人有自己的判断。

    最后吐槽一下推广点,“无 APP 推送服务”,App Clip 在中国区的翻译是“轻 App”,一样有下载安装的过程,一样有 App 授权注册的流程,这样的推广文案实在无爱。
    easychen
        22
    easychen  
    OP
       2022-02-04 07:41:35 +08:00 via Android
    @kingxiangqi PushDeer 并不是某些服务的复刻,它还有 Android 版,是全平台产品,所有数据在服务器端,跟账号走,并不是简单的对 token 推送。

    由于 Apple 不允许 appclip 单独上架,所以我们也提供了 APP 。一年只用几次的同学可以用 APP 。

    隐私问题无需过分担心,毕竟代码开源且服务器可以自架。Apple 账号部分是和苹果服务器通信,应用服务器拿到的已经是 idtoken 。

    至于轻 APP 和快应用是不是 APP ,这是个见仁见智的问题。Web APP 也可以说是 APP 呢。
    Tink
        23
    Tink  
       2022-02-04 09:50:11 +08:00 via Android
    @kingxiangqi 讲道理这比 app 已经轻得多了
    diyisoft
        24
    diyisoft  
       2022-02-04 10:05:11 +08:00
    大佬的工具(很多工具都)很实用。根据开放的 api 已经开发了自己的桌面小应用。十分感谢。
    1OF7G
        25
    1OF7G  
       2022-02-04 11:03:46 +08:00
    "无 APP 推送服务" 实在有点标题党
    Bijiabo
        26
    Bijiabo  
       2022-02-04 11:19:37 +08:00
    请问这个类似小程序码的图案叫什么?
    xxb
        27
    xxb  
       2022-02-04 11:27:06 +08:00 via iPhone
    只能在网页上发消息吗?
    easychen
        28
    easychen  
    OP
       2022-02-04 11:41:23 +08:00   ❤️ 1
    easychen
        29
    easychen  
    OP
       2022-02-04 11:41:51 +08:00
    @xxb 调用 API 接口就行,仓库首页有说明。
    KuoYu
        30
    KuoYu  
       2022-02-04 12:27:28 +08:00 via iPhone
    想法是好的 但是轻 app 没法弹窗通知哇
    FindHao
        31
    FindHao  
       2022-02-04 12:48:36 +08:00 via Android
    支持!虽然之前已经买了 pushover ,但总想把服务都自建。
    不过安卓现在只有 mipush 和快应用是吗?后续会支持楼上说的 fcm 或者 google 账户吗
    AndyZhuAZ
        32
    AndyZhuAZ  
       2022-02-04 17:32:06 +08:00
    我想做个不定期推送一条文字消息的服务,试了试具体方法就是让用户下自建版 app ,然后填我建好的 API endpoint ,然后添加设备再添加 key ,然后再用其他方式将 key 提交到我的另一个服务,然后用另一个服务 POST /message/push 。不用自建版的话就能省掉跑 pushdeer 的服务器,只有一个发送 POST 请求的服务器就好了?这样理解对吗?
    话说那个 token 是从哪里获取的?
    easychen
        33
    easychen  
    OP
       2022-02-04 20:20:56 +08:00
    @AndyZhuAZ key 不用提交,直接写到调用的地方就好了。推送接口只需要 key ,不需要 token 。管理接口才需要 token 。
    easychen
        34
    easychen  
    OP
       2022-02-04 20:21:48 +08:00
    @KuoYu 不太清楚什么是弹窗通知,iOS 的系统通知是能收到的。
    AndyZhuAZ
        35
    AndyZhuAZ  
       2022-02-04 21:00:28 +08:00
    @easychen 可能没说清楚,这里提交说的是用户要订阅我发出的一系列推送的话要把 pushkey 提供给我,然后推送时分别向所有 key 推送。我看 key 是不能更改的这么理解是对的吧?😂
    easychen
        36
    easychen  
    OP
       2022-02-04 21:51:12 +08:00
    @AndyZhuAZ ① 一对多的订阅的确可以这样 ② 在 PushDeer 里边用户可以添加多个 key ,并随时删除或重置。
    Michelangelono
        37
    Michelangelono  
       2022-02-05 15:52:31 +08:00 via Android
    Pixel 支持快应用吗?
    easychen
        38
    easychen  
    OP
       2022-02-05 17:20:55 +08:00
    @Michelangelono 只有加入了快应用联盟的厂商支持,据官方网站,目前覆盖的设备数在 10 亿台。https://www.quickapp.cn/
    SenLief
        39
    SenLief  
       2022-02-06 18:32:40 +08:00 via iPhone
    这个和之前那个 app 区别就是自建吗
    easychen
        40
    easychen  
    OP
       2022-02-06 19:02:46 +08:00
    @SenLief 是。主要是为了启用独立的推送证书,所以弄了一个单独的 app/clip 。
    SenLief
        41
    SenLief  
       2022-02-06 19:03:48 +08:00 via iPhone
    @easychen 主要是没有 pc 端啊,要是有 pc 或者 web 就好了
    easychen
        42
    easychen  
    OP
       2022-02-06 19:10:57 +08:00
    @SenLief 没有 PC ,但是有 Mac 版( iOS 代码直接编译的)。Windows 据说社区有同学去写了,仓库有 API 说明。
    kingxiangqi
        43
    kingxiangqi  
       2022-02-07 06:50:32 +08:00
    @easychen #22 无论什么平台,对于单设备用户而言,一个 push token 都足够,这是你宣传无 APP 足够轻的理念延申。

    我也说的很清楚,如果额外功能,设计上需要账号体系,应该提供其它注册方式,那么正因为你是全平台,更不应该只提供 APPLE 登陆,难道其它平台登陆还必须持有 APPLE ID ?

    提及其它 APP 的目的很明确,只是从无 APP (轻便)角度来说明问题,从来没有认为或影射是在“复刻”某些服务!

    通篇没有提及隐私问题,而是讲一上来就要求 APPLE 登陆,否则无法使用,这样的体验不友好,也不轻便。

    从来也没有试图去论证轻 APP 是不是 APP ,而是这样噱头文案令人无爱,“无 APP”给人的感觉就是不需要下载 /安装 /登陆即可直接使用直接体验服务的概念,而这样的情况,除非是全平台内置的服务否则不可能实现。哪怕你准确描述是轻 APP 实现的,相信用户会更加尊重和感兴趣。再不济你也可以提及其特点是无需从应用商店下载,扫码随取随用的特点,而不是打着“无 APP”夸张宣传,做着与事实不符的事情,最终给用户留下欺骗性的不好的体验。

    本质上留言已经非常克制,完全没有 diss 的意图,提出意见也是出于对开源分享和创新的肯定,希望能够更脚踏实地更准确的来传达知识和内容,是金子就会发光,就会得到大家认可和尊重。但您对于我的留言完全解读为敌意,所以我也只能以更具有针对性和尖锐的语言重新解释我想表达的。当然,或许和谐社会中就不该出现不正确的声音,那么我也说一声抱歉,对不起打扰了,我会闭嘴的。

    @Tink #23 讲道理,我从来没说轻 APP 它不轻,但讲道理,我也不认为一个需要注册账号的轻 APP 比一个下载后直接获取 token 就能用的 APP 来的轻。
    loveqianool
        44
    loveqianool  
       2022-02-07 11:23:58 +08:00
    PC 端呢,说的是全平台,但好像没看有提到 Windows 桌面,现在它连平台都算不上了吗?
    summer2019
        45
    summer2019  
       2022-02-07 20:39:38 +08:00
    还可以,但是 iOS 端界面属实有点丑,建议用苹果原生的设计语言。安卓端可以考虑 Material Design 3 。
    这两个设计语言都挺不错的
    easychen
        46
    easychen  
    OP
       2022-02-08 10:13:35 +08:00 via Android
    @loveqianool 说的本来是 APP 全平台😂。PC 没有 Windows 工程师开发,只能等社区 pr 。
    wenqiq
        47
    wenqiq  
       2022-02-08 22:34:40 +08:00
    @easychen MiPush 在哪可以找到了?求告知
    AsZr
        48
    AsZr  
       2022-02-09 16:14:38 +08:00
    @easychen #22 用了一下,手边没有安卓,安卓版本的就没有试。这个账号,Apple 系统只能 Apple 登陆,安卓有微信登陆,这两个登陆又对不上,很奇怪啊。这样的话我全平台,那我就是安卓也用 Apple 登陆?很不合理,账号就不合理,不如弄个 github Personal access tokens 或者自建类似的平台。
    easychen
        49
    easychen  
    OP
       2022-02-09 20:17:39 +08:00
    @wenqiq 不知道你具体问的啥,如果是问小米开放平台的地址,是 https://dev.mi.com/console/appservice/push.html
    easychen
        50
    easychen  
    OP
       2022-02-09 20:27:15 +08:00
    @AsZr 等你装上安卓试用下就没有这么多疑问了。安卓不光是微信登录,也支持 Apple 登录,设置菜单还支持微信登录账号绑定 apple 账号,或者 apple 登录账号绑定微信账号。iOS 没有微信登录主要是客户端没来记得做,之前的核心贡献者当爸爸了,估计很长时间没空 😂

    至于 GitHub 登录倒不是没考虑过,但国内已经大面积用不了了。另外苹果要求一旦有第三方登录,都必须支持 Apple 登录,又绕回多账户系统了。
    wenqiq
        51
    wenqiq  
       2022-02-10 12:14:03 +08:00 via Android
    @easychen 多谢
    yean
        52
    yean  
       2022-02-15 14:12:11 +08:00
    iso 端为什么不通知,手机上已经所有的通知后台权限都给了,仍然没有通知
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5681 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.