- 功能
- 入门
- 安装
- 用法
- 链接消息
$ chanify send —endpoint=http://:—token= —link=<网页链接> - 图片消息
$ chanify send —endpoint=http://:—token= —image=<图片文件路径> - 文件消息
$ chanify send —endpoint=http://:—token= —file=<文件路径> —text=<文件描述> - https://api.chanify.net,并且会使用默认服务器发送消息。 如果使用的是自建的节点服务器,请在讲endpoint设置成自建服务器的 URL。">动作消息
$ chanify send —endpoint=http://:—token= —text=<文本消息> —title=<文本标题> —action=”<动作名字>|<动作链接 url>”
endpoint默认值是https://api.chanify.net,并且会使用默认服务器发送消息。 如果使用的是自建的节点服务器,请在讲endpoint设置成自建服务器的 URL。 - 命令行启动
$ chanify serve —host=—port= :—secret= —name= —endpoint=http:// - 使用Docker启动
$ docker run -it wizjin/chanify:latest serve —secret=—name= :—endpoint=http:// - 使用Docker启动
$ docker run -it -v /my/data:/root/.chanify wizjin/chanify:latest serve —name=—endpoint=http:// :
默认会使用 sqlite 保存数据,如果要使用 MySQL 作为数据库存储信息可以添加如下参数:
—dburl=mysql://: @tcp( : )/ ?charset=utf8mb4&parseTime=true&loc=Local
注意:Chanify 不会创建数据库,只会创建表格,所以使用前请先自行建立数据库。 - 发送文本消息
$ curl —form-string “text=hello” “http://:/v1/sender/ “ - 发送文本文件
$ cat message.txt | curl -H “Content-Type: text/plain” —data-binary @- “http://:/v1/sender/ “ - HTTP API
- 配置文件
- 安全
- Chrome 插件
- 贡献
- 许可证
Chanify 是一个简单的消息推送工具。每一个人都可以利用提供的 API 来发送消息推送到自己的 iOS 设备上。
- 从 AppStore 安装iOS 应用(1.0.0 或以上版本)。
- 获取发送使用的令牌token,更多细节。
- 使用 API 来发送消息。
安装
预编译包
可以这里下载最新的预编译二进制包。Docker
$ docker pull wizjin/chanify:latest从源代码
$ go install github.com/chanify/chanify用法
作为客户端
可以使用下列命令来发送消息
# 文本消息
$ chanify send —endpoint=http://:—token= —text=<文本消息>
链接消息
$ chanify send —endpoint=http://: —token= —link=<网页链接>
图片消息
$ chanify send —endpoint=http://: —token= —image=<图片文件路径>
文件消息
$ chanify send —endpoint=http://: —token= —file=<文件路径> —text=<文件描述>
动作消息
$ chanify send —endpoint=http://: —token= —text=<文本消息> —title=<文本标题> —action=”<动作名字>|<动作链接 url>”
endpoint默认值是https://api.chanify.net,并且会使用默认服务器发送消息。 如果使用的是自建的节点服务器,请在讲endpoint设置成自建服务器的 URL。
endpoint默认值是https://api.chanify.net,并且会使用默认服务器发送消息。 如果使用的是自建的节点服务器,请在讲endpoint设置成自建服务器的 URL。
作为无状态服务器
Chanify 可以作为无状态服务器运行,在这种模式下节点服务器不会保存设备信息(APNS 令牌)。
所有的设备信息会被存储在 api.chanify.net。
消息会在节点服务器加密之后由 api.chanify.net 代理发送给苹果的 APNS 服务器。
消息的流动如下:
开始 => 自建节点服务器 => api.chanify.net => 苹果APNS服务器 => iOS客户端
命令行启动
$ chanify serve —host= —port= —secret= —name= —endpoint=http://:
使用Docker启动
$ docker run -it wizjin/chanify:latest serve —secret= —name= —endpoint=http://:
作为有状态服务器
Chanify 可以作为有状态服务器运行,在这种模式下节点服务器会保存用户的设备信息(APNS 令牌)。
消息会直接由节点服务器加密之后发送给苹果的 APNS 服务器。
消息的流动如下:
开始 => 自建节点服务器 => Apple server => iOS客户端
启动服务器
# 命令行启动
$ chanify serve —host=
使用Docker启动
$ docker run -it -v /my/data:/root/.chanify wizjin/chanify:latest serve —name= —endpoint=http://:
默认会使用 sqlite 保存数据,如果要使用 MySQL 作为数据库存储信息可以添加如下参数:
—dburl=mysql://:@tcp(:)/?charset=utf8mb4&parseTime=true&loc=Local
注意:Chanify 不会创建数据库,只会创建表格,所以使用前请先自行建立数据库。
默认会使用 sqlite 保存数据,如果要使用 MySQL 作为数据库存储信息可以添加如下参数:
—dburl=mysql://
注意:Chanify 不会创建数据库,只会创建表格,所以使用前请先自行建立数据库。
添加节点服务器
- 启动节点服务器
- 获取服务器二维码(http://:
/) - 打开 iOS 的客户端扫描二维码添加节点
发送消息
命令行
发送文本消息
$ curl —form-string “text=hello” “http://:/v1/sender/ “
发送文本文件
$ cat message.txt | curl -H “Content-Type: text/plain” —data-binary @- “http://:/v1/sender/“
Python 3
from urllib import request, parse
data = parse.urlencode({ ‘text’: ‘hello’ }).encode()
req = request.Request(“http://
request.urlopen(req)
Ruby
require ‘net/http’
uri = URI(‘http://
:res = Net::HTTP.post_form(uri, ‘text’ => ‘hello’)
puts res.body
NodeJS
const https = require(‘https’)
const querystring = require(‘querystring’);
const data = querystring.stringify({ text: ‘hello’ })
const options = {
hostname: ‘
port: 80,
path: ‘/v1/sender/
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/x-www-form-urlencoded’,
‘Content-Length’: data.length
}
}
var req = https.request(options, (res) => {
res.on(‘data’, (d) => {
process.stdout.write(d);
});
});
req.write(data);
req.end();
PHP
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => ‘http://
CURLOPT_CUSTOMREQUEST => ‘POST’,
CURLOPT_POSTFIELDS => [ ‘text’ => ‘hello’ ],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
HTTP API
发送文本
- GET
http://
:- POST
http://
:Content-Type:
- text/plain: Body is text message
- multipart/form-data: The block of data(“text”) is text message
- application/x-www-form-urlencoded:text=
- application/json; charset=utf-8: 字段都是可选的
{
“token”: “<令牌Token>”,
“title”: “<消息标题>”,
“text”: “<文本消息内容>”,
“copy”: “<可选的复制文本>”,
“autocopy”: 1,
“sound”: 1,
“priority”: 10,
“actions”: [
“动作名称1|http://
“动作名称2|http://
]
}
支持以下参数:
参数名 | 默认值 | 描述 |
---|---|---|
title | 无 | 通知消息的标题 |
copy | 无 | 可选的复制文本(仅文本消息有效) |
autocopy | 0 | 是否自动复制文本(仅文本消息有效) |
sound | 0 | 1 启用声音提示, 其他情况会静音推送 |
priority | 10 | 10 正常优先级, 5 较低优先级 |
actions | 无 | 动作列表 |
例如:
http://
发送链接
$ curl —form “link=@
{
“link”: “
“sound”: 1,
“priority”: 10,
}
发送图片
目前仅支持使用POST方法通过自建的有状态服务器才能发送图片。
- Content-Type:image/png或者image/jpeg
cat
- Content-Type:multipart/form-data
$ curl —form “image=@
发送文件
目前仅支持使用POST方法通过自建的有状态服务器才能发文件。
- Content-Type:multipart/form-data
$ curl —form “file=@<文件路径>” “http://
:发送动作
发送动作消息(最多 4 个动作)。
- Content-Type:multipart/form-data
$ curl —form “action=动作名称1|http://
配置文件
可以通过 yml 文件来配置 Chanify,默认路径~/.chanify.yml。
server:
host: 0.0.0.0 # 监听IP地址
port: 8080 # 监听端口
endpoint: http://my.server/path # 入口URL
name: Node name # 节点名称
secret:
datapath: # 有状态服务器使用的数据存储路径
dburl: mysql://root:test@tcp(127.0.0.1:3306)/chanify?charset=utf8mb4&parseTime=true&loc=Local # 有状态服务器使用的数据库链接
register:
enable: false # 关闭注册
whitelist: # 白名单
-
-
client: # 作为客户端发送消息时使用
sound: 1 # 是否有提示音
endpoint:
token:
安全
可以通过禁用节点服务器的用户注册功能,来使 Node 服务器成为私有服务器,防止非授权用户使用。
chanify serve —registerable=false —whitelist=
- —registerable=false: 这个参数用来禁用用户注册
whitelist: 服务器禁用用户注册后,仍然可以添加使用的用户
Chrome 插件
可以从Chrome web store下载插件.
插件有以下功能:发送选中的文本/图片/链接消息到 Chanify
- 发送网页链接到 Chanify
贡献
贡献使开源社区成为了一个令人赞叹的学习,启发和创造场所。十分感谢您做出的任何贡献。
- Fork 本项目
- 切换到 dev 分支 (git checkout dev)
- 创建您的 Feature 分支 (git checkout -b feature/AmazingFeature)
- 提交您的更改 (git commit -m ‘Add some AmazingFeature’)
- 推送到分支 (git push origin feature/AmazingFeature)
- 开启一个 Pull Request (合并到chanify:dev分支)
许可证
根据 MIT 许可证分发,详情查看LICENSE。
Loading page
Octotree
Login with GitHub