easychen / pushdeer
- суббота, 29 января 2022 г. в 00:33:10
开放源码的无App推送服务,iOS15扫码即用。 🚧 快应用开发中
PushDeer开源版,可以自行架设的无APP推送服务(WIP,API、iOS和Mac第一版本完成,Android即将完成,其他部分正在施工
| 登入 | 设备 | Key | 消息 | 设置 |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
| 功能 | 核心贡献人 | 预期完成时间 | 最低版本兼容 | 本周进度 |
|---|---|---|---|---|
| iOS/MacApp+Clip开发 | Hext123 | 已完成 | iOS15(14兼容修复中) | 第一版完成,代码在iOS目录下 |
| Android客户端 | WolfHugo | 已完成 | 5.1 | 第一版开发完成,release页面可下载 |
| 快应用 | 7YHong | 2022年2月27日 | - | 完成快应用界面展示部分,下周对接API |
| API完善和更新 | 古俊杰 | 配合客户端同步更新 | - | 添加自动生成swgger文档功能中 |
使用方法:
iOS APP和Mac APP可以在苹果商店搜索安装。注意iOS APP、Mac APP和轻应用都被认为是不同的设备,都需要进行注册才能接收推送。
PS:系统设计最低支持版本为iOS14,但目前存在兼容性问题,有iOS14真机和苹果开发者证书的同学可以下载源码并编译(参考这个文档),将报错信息提交到issue可以加速我们的修复时间。
这个程序有什么用?
请参考本页面应用场景一节。
应用闪退怎么办?
iOS14 闪退问题正在定位,可参照上一段文字帮我们加快修复进度。
推送可以支持Mark和图片吗?
支持,请参考本页API说明一节中 message 部分.
PushDeer 提供推送证书吗?
出于内容和安全考虑,官方APP不提供推送证书。待功能稳定后,我们会单独发布一个自架版APP/Clip并提供独立的推送证书,以免因为证书被滥用而影响到普通用户的使用。
轻APP找不到了怎么办?
在搜索框搜索pushdeer就能找到。
轻应用怎么清理掉?占空间么?
系统设置里边有一个轻应用管理,在里边可以清理。30天不用会自动清理掉。注意重新安装后设备id会变动,需要再手动注册一遍。
推送返回 code 0 result false ,但收不到推送
需要先注册当前设备。
URL推送的文字如何换行?
URL中可以使用%0A作为换行符,如 https://api2.pushdeer.com/message/push?pushkey=key&text=line1%0Aline2
PushDeer的核心价值,包括:「易用」、「可控」和「渐进」。
易用性表现在两个方面:
Self-hosted:让有能力和精力的用户可以自行架设,避免因为在线服务下线导致的接口更换风险。PushDeer是一个商业开源项目,采用「开放源码」、「自用免费」、「在线服务收费」的方式进行运作。
PushDeer是一个以盈利为目的的商业项目,品牌和源码所有权都由「方糖君」公司持有,但和纯商业项目不同的地方在于:
这里边有一些细节:
开放源码形式保证了其他代码贡献人在非商业场景下对源码的可控:
PushDeer主要面向以下三类用户
具有一定电脑操作技能的高阶用户,比如:
他们使用PushDeer的场景包括但不限于:
使用PushDeer的场景包括但不限于:
使用PushDeer的场景包括但不限于:
ios/Prototype_version 目录是我边学边写的原型验证版本(SwiftUI+Moya+Codable),很多地方需要重写,仅供参考git clone https://github.com/easychen/pushdeer.git
进入 push 目录,修改 *.yml.sample 为 *.yml。其中iOS应用和Clip使用两个分开的证书进行推送,ios.yml 是APP的配置、clip.yml是Clip的配置。注意根据开发和产品状态,修改yml中的值production。
默认配置中,c.p12 是APP的推送证书、cc.p12是Clip的推送证书。
运行 docker-compose up -d,启动API。默认访问地址为http://127.0.0.1:8800。可修改docker-compose.yml调整端口。
API_BASE=http://127.0.0.1:8800
认证方式:通过登入接口获得token,通过post和get方式附带token参数即可自动登入。
GET /login/fake
POST /login/idtoken
| 参数 | 说明 | 备注 |
|---|---|---|
| idToken | Sign in with Apple 中得到的 idToken |
POST /login/wecode
| 参数 | 说明 | 备注 |
|---|---|---|
| code | 客户端微信授权得到的code |
POST /user/merge
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| type | 字符串,必须为 apple 或者 wechat | |
| tokenorcode | type 为 apple时此字段为 idToken,否则为 微信code |
POST /user/info
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token |
POST /device/reg
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| name | 设备名称 | |
| device_id | device token(推送用) | |
| is_clip | 是否轻应用 | 0为APP |
POST /device/list
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token |
POST /device/rename
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| id | 设备id | |
| name | 设备新名称 |
POST /device/remove
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| id | 设备id |
POST /key/gen
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token |
POST /key/rename
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| id | Key ID | |
| name | Key新名称 |
POST /key/regen
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| id | Key ID |
POST /key/list
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token |
POST /key/remove
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| id | Key ID |
POST /message/push
| 参数 | 说明 | 备注 |
|---|---|---|
| pushkey | PushKey | |
| text | 推送消息内容 | |
| desp | 消息内容第二部分,选填 | |
| type | 格式,选填 | 文本=text,markdown,图片=image,默认为markdown |
POST /message/list
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| limit | 消息条数 | 默认为10,最大100 |
POST /message/remove
| 参数 | 说明 | 备注 |
|---|---|---|
| token | 认证token | |
| id | 消息ID |
通用返回格式:
{
code:正确为0,错误为非0,
content:内容,错误时无此字段,
error:错误信息,无错误时无此字段
}
本项目禁止商用(包括但不限于搭建后挂广告或售卖会员、打包后上架商店销售等),对非商业用途采用 GPLV2 授权