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

分享个自用的小工具~ 给你的 iPhone 发自定义推送

  finab · 2018-07-02 11:27:21 +08:00 · 21028 次点击
这是一个创建于 522 天前的主题,其中的信息可能已经有所发展或是发生改变。
我有些自动提醒只是想看一眼,看完划掉就删了~
邮件或聊天软件做提醒都稍微重了一点,

iPhone 消息推送可靠不丢数据、实时性也比较好,正好合适。
所以这个 APP 就诞生了, 使用简单 http 请求给自己的 iPhone 发推送

自用了几个月,还算稳定没掉过通知,分享出来给有需要的 V 友。免费并提供源码和后端程序

如果你的**数据敏感**,可以在自己的主机上部署后端程序,这样数据只在 你的手机、你的主机、Apple 推送服务器之间传输,非常安全 。App 内点添加私有服务器有文档

使用示例


AppStore 连接
https://itunes.apple.com/cn/app/bark-customed-notifications/id1403753865

App 源码
https://github.com/Finb/Bark
后端源码
https://github.com/Finb/go-tools/blob/master/Bark.go
第 1 条附言  ·  2018-07-02 13:30:27 +08:00
打开 APP 注册得到推送 URL 后 ,可以发 get 或者 post 请求 ,请求成功会立即收到推送

URL 组成: 第一个部分是 key , 之后有三个匹配
/:key/:body
/:key/:title/:body
/:key/:category/:title/:body

title 推送标题 比 body 字号粗一点
body 推送内容
category 另外的功能占用的字段,还没开放 忽略就行
post 请求 参数名也是上面这些
第 2 条附言  ·  2018-07-17 18:10:17 +08:00
第 3 条附言  ·  352 天前
1.0.4 支持 automaticallyCopy 参数,携带此参数发送推送,推送内容将直接复制到粘贴板

如果是自己部署的 Bark 后端要支持这个功能,需使用最新的服务端程序
https://github.com/Finb/Bark/releases
第 4 条附言  ·  280 天前

后端支持 Docker

docker run -dt --name bark -p 8999:8080 finab/bark-server:v1.0.0
第 5 条附言  ·  280 天前

docker 挂载本地目录, 保存 bark.db 文件

docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server
195 回复  |  直到 2019-05-28 16:55:50 +08:00
1  2  
    101
Lentin   2018-07-03 20:18:30 +08:00 via iPhone
@PHPJit 安卓的话时效性就没有了,不翻墙的话,抽疯
    102
diyisoft   2018-07-04 06:21:06 +08:00 via iPhone   ♥ 1
用大佬的开源 V2EX 客户端来回大佬的帖子。赞一下。这个功能也很强大,谢谢
    103
royrs   2018-07-04 19:16:22 +08:00
求各种自动化执行脚本。
    104
70599   2018-07-04 23:17:58 +08:00
@finab 作者你好,这个 App 能实现以下功能吗?
1、自定义声音
2、打开链接

目前在用 pushover,pushover 可以有限自定义声音,但是不能定义来电铃声长度的声音。
所以我不得不转发一个邮件,让邮件触发长铃声来达到提醒目的。
    105
tinytin   2018-07-05 18:52:54 +08:00
马克
    106
tinytin   2018-07-05 18:58:40 +08:00
@falcon05 server 酱用微信好处是跨平台
    107
finab   2018-07-05 21:43:55 +08:00 via iPhone   ♥ 1
@70599 打开链接即将支持,在审核了最近两天应该会更新到商店。
自定义声音不支持。
不过你有开发者账号的话下载源码稍微加几行代码就能自己支持上了。自定义声音时长好像是限制 30 秒以内,并且不能循环播放,起不到提醒的作用

这个 app 只适合推送一些不重要的简单的通知,专业复杂的我觉得并不合适吧
    108
gswxy   2018-07-06 10:32:25 +08:00 via iPhone
多次出现{"code":400,"data":null,"message":"与苹果推送服务器传输数据失败"}

用的编译的版本 。
    109
bobsam   2018-07-06 10:56:17 +08:00   ♥ 2
哇,原来你是 iOS V2EX 的软件的作者啊!我现在在用着你的客户端!支持一波~
    110
finab   2018-07-06 11:15:00 +08:00
@gswxy
编译的版本是我提供的那些?
你运行的时候有记录控制台打印日志么? 上面有详细原因, 错误信息前缀 Error:
    111
gswxy   2018-07-06 11:21:08 +08:00 via iPhone
@finab 你编译好的版本 。没记录日志。
    112
finab   2018-07-06 11:26:15 +08:00
@gswxy 你记录下日志吧

nohup ./Bark_linux_amd64 -ip=0.0.0.0 -port=8080 &
我一般这样运行,然后日志保存在同目录下 nohup.out 里

我刚在我服务器上 grep 了一下,只发现一条错误日志,大概长这样
2018/06/30 23:20:22 Error: Post https://api.push.apple.com/3/device/2dac2f77c0e030d4a07535ad4264d05abda6808162e499f193bbc6973e72a6d6: dial tcp 17.188.148.26:443: i/o timeout
    113
gswxy   2018-07-06 11:44:01 +08:00 via iPhone
@finab 嗯 等记录看看什么情况 。v2ex 签到脚本可以共享下?不甚感谢 。
    114
finab   2018-07-06 11:57:39 +08:00
@gswxy 我不用签到脚本 - -,图片上的那个是我随便写的用例😓
    115
gswxy   2018-07-06 17:32:10 +08:00 via iPhone
@finab 看了下日志 应该是苹果那边没通过导致的
    116
finab   2018-07-06 17:47:24 +08:00
@gswxy 苹果那边没通过? 是网络原因还是?
    117
gswxy   2018-07-06 18:06:12 +08:00
    118
70599   2018-07-06 18:28:45 +08:00
@finab 没有开发者账户。30 秒以内 /不循环播放我是可以接受的,如果您有兴趣的话,期待加入相应特性。
    119
mario85   2018-07-07 01:50:55 +08:00
    120
mayuko2012   2018-07-07 21:36:04 +08:00
太赞了!
以前为了自定义通知用的企业微信来接受推送,现在可以更加方便了~
    121
metrue   2018-07-08 00:17:35 +08:00
试玩了一把,自己 build iOS app 然后部署 server,可以遇到下面的错误信息。有同学知道什么原因吗?
{"code":400,"data":null,"message":"推送发送失败 DeviceTokenNotForTopic"}
    122
finab   2018-07-08 07:06:39 +08:00 via iPhone
@metrue 需要去开发者中心申请自己的推送证书喔
    123
gswxy   2018-07-09 10:06:18 +08:00 via iPhone
@finab 现在完全不知道它何时工作 。😄 不知道其他人是不是这样 。
    124
doudouwu   2018-07-09 17:17:02 +08:00
我记得 IFTTT 好像可以实现这个需求吧
    125
xlvecle   2018-07-11 16:44:05 +08:00   ♥ 2
楼主这个非常赞啊,用了有一周了,有复制之后更好用了👍
帮你撸了一个 chrome 插件,https://www.v2ex.com/t/469956
    126
34C   2018-07-11 21:26:52 +08:00
@sampeng 真杠精,这么能杠,你没需要不代表别人不需要好吧,神特么各种基于你自己的设定
    127
Lentin   2018-07-12 00:59:52 +08:00
@finab 如果没有推送证书是不是就无法搭建 server ?
    128
finab   2018-07-12 01:20:06 +08:00 via iPhone
@Lentin 提供了编译好了的后端程序,自己编译的话就需要证书了
    129
Lentin   2018-07-12 01:50:46 +08:00 via iPhone
@finab 找到了 多谢
    130
fuwu1245   2018-07-12 10:18:20 +08:00
LZ 能帮忙编译一个 Linux i386 版本的执行文件么?
自己编译了下 扔到服务器上 提示 cer error
    131
fuwu1245   2018-07-12 10:18:56 +08:00
...看了回复 貌似是证书的问题
    132
finab   2018-07-12 10:46:18 +08:00
    133
internelp   2018-07-17 15:34:36 +08:00
不错不错,楼主牛逼。
很有用的东西。
    134
autoxbc   2018-07-19 13:36:12 +08:00
我点击注册设备后,生成的 key 是空的

https://i.loli.net/2018/07/19/5b5022c607e35.jpg
    135
finab   2018-07-19 13:58:56 +08:00
@autoxbc 重进下 APP 试试,有可能第一次没网络权限的时候没获取到 key
    136
autoxbc   2018-07-19 14:06:16 +08:00
@finab #135 解决了,多谢。我试了 3 次把 app 删掉重装,却一次也没试过关掉重进 ^_^。不过,还是建议有个异常处理
    137
finab   2018-07-19 14:30:25 +08:00
@autoxbc 是的,我手机不弹网络权限,所以忽略了这个 BUG
    138
autoxbc   2018-07-19 14:59:27 +08:00
很好用,如果能在通知部分用等宽体,使得红圈部分可以对齐就更好了

https://i.loli.net/2018/07/19/5b50361b34e8a.png
    139
finab   2018-07-19 15:16:05 +08:00
@autoxbc
这里的 UI 不能控制。
如果越狱了可以把系统字体改成等宽字体就能对齐了,没越狱就没啥办法
    140
foxni   2018-07-19 23:15:31 +08:00
自己部署的服务端,一直提示 BadDeviceToken。。。
    141
foxni   2018-07-19 23:15:37 +08:00
{"code":400,"data":null,"message":"推送发送失败 BadDeviceToken"}
    142
finab   2018-07-19 23:34:57 +08:00 via iPhone   ♥ 1
@foxni iOS 端是自己编译的吗
    143
foxni   2018-07-20 09:42:28 +08:00
@finab 不是啊,app store 下的,服务端是部署在国外的一台 vps 上,debian 32 位。
    144
finab   2018-07-20 09:53:18 +08:00 via iPhone   ♥ 1
@foxni 后端是下载我编译好的还是自己编译的?
    145
foxni   2018-07-20 10:52:46 +08:00
@finab 也是下的编译好的,都是通过上面给的链接跳过去的。
    146
finab   2018-07-20 11:27:50 +08:00   ♥ 1
@foxni 好像 linux_386 版打包时证书用错了
我重新编译了一遍,测试了下可以用了,你更新下试试看还有没有问题
https://github.com/Finb/Bark/releases/download/1.0.0/Bark_linux_386
    147
foxni   2018-07-20 15:28:19 +08:00
@finab 非常感谢,已经通了。
    148
frozenthrone   2018-07-20 16:04:57 +08:00
土问,ifttt 上自己弄了一个 applet,是公开的?其他人都能看到?
    149
blaxmirror   2018-07-21 20:46:12 +08:00
简直太好用了,特地回来点赞
    150
Athrob   2018-07-23 10:16:51 +08:00
收费版建议
1. 增加通知记录, 就是打开后可以看到之前收到的通知.
2. 增加安卓平台的支持
3. 支持短信 /电话方式通知
4. 做个比较完善的管理后台
5. 提高服务稳定性
哇咔咔, 仿佛看到数月后, 国内又多了一家有爱的创业公司.
    151
MangozZ   2018-08-12 19:27:01 +08:00
不懂 ios 开发。
请问下是什么功能会要求 ios10 呢 - -
有个 ios7 用不了心痛。。
    152
finab   2018-08-13 10:18:19 +08:00
@MangozZ 有个推送操作至少需要 iOS10 - -
    153
flowfire   2018-09-06 10:35:05 +08:00 via iPhone
Material design 可还行。。
    154
gswxy   2018-09-23 22:38:02 +08:00 via iPhone
12 下 url copy 失效了?
    155
finab   2018-09-23 23:48:23 +08:00
@gswxy 没有呀
    156
ahu   2018-10-17 14:15:32 +08:00
研究了一上午,不错!
相比 pushover,免费的,好!
现在是只能发给自己,如何实现发给一组人?@finab
    157
Chan6   2018-10-23 21:01:26 +08:00
不是开发,楼主这个东西能不能用一个案例介绍下怎么用(或者使用说明文档)?也想定制一些专属的通知,谢谢~
    158
finab   2018-10-24 10:51:35 +08:00
@Chan6
不是开发的话基本用不着这个
这个主要是提供一个发送推送的接口供开发者调用

例如开发者写了一个服务器监测的脚本, 检测到服务器有问题时调用这个接口,手机就会收到服务器出问题了的推送。
    159
finab   2018-10-24 11:53:32 +08:00
@ahu 只能发给自己
想发一组人得先收集这一组人的 key,然后一次发多个请求,在发送端做分组
    160
ahu   2018-10-24 22:41:20 +08:00
@finab 谢谢!先这样
    161
andyhuai   2018-11-20 17:04:32 +08:00
这个是走苹果的推送通道,android 无法使用,我觉得使用微信公众号的 API 比较好,全平台兼容了
    162
finab   2018-11-20 17:55:54 +08:00
@andyhuai 大多数人只会用一个系统,全平台用处不大,用 iOS 的不会关心安卓支不支持
这个优点主要是苹果推送通道非常稳定快速不丢消息(从发送到收到推送不到 1s
这个 APP 也只服务 iOS 用户,安卓用户肯定是有其他选择的,只是我自用的工具分享出来所以没考虑安卓
    163
finab   2018-12-03 11:12:25 +08:00
    164
syjsu   358 天前
@mario85 大佬厉害了
    165
kba977   354 天前
@finab 作者你好,一直再用 bark,很好用,有个小需求不知能实现不,在 mac os 和 iphone 之间,mac 复制一段话,iphone 这边会接力直接粘贴到 iphone 的剪切板
现在的问题是 我在 windows 下也想达到这样的效果,写了个脚本快捷键触发,获取剪切板然后通过 bark 发消息到手机上,每次要下拉才能复制,能否在 bark 上设置一个开关,默认收到消息自动粘贴到剪贴板上,这样就很完美了
    166
finab   354 天前
@kba977 可以的 ,你把你邮箱给我,我邀请你加入 TF 先试试
    167
kba977   354 天前
@finab #166 好的 谢谢, 邮箱 用户名+gmail
    168
finab   352 天前
@kba977 TF 审核和 App Store 一起上了,可以直接在商店更新了
推送时 携带参数 automaticallyCopy=1,推送就会自动粘贴到剪贴板上
    169
kba977   352 天前
@finab #168 可以啦 谢谢! 更新速度很快 Thanks♪(・ω・)ノ
    170
finab   352 天前
@kba977 客气~ 我自己也经常用这个推一些文本,但没想过更进一步连复制都省掉,多亏你提的需求
    171
kba977   352 天前
@finab #170 哈哈 我也是从苹果转到 windows 上很不适应,之前都是无缝复制,找了很多替代品,发现你这个很简洁,就是每次复制要点那么一下,另外就是,如果加上这个参数,能默认就不通知了么,就真的无缝啦 哈哈
    172
finab   352 天前
@kba977 静默推送有限制,可能有时候不执行复制的代码,不太好控制
    173
kba977   352 天前
@finab #172 好吧,不过也已经很棒啦,满足需求了,嘿嘿
    174
terencehan   327 天前
和 12306bypass 结合就好了
    175
mywaiting   312 天前
用得很舒服,回来挖坟,写个感谢 ;)
    176
steveway   311 天前
@densuc #68 很不好意思挖了坟 请问 gcmformojo 的 demo 可以分享一下吗 谢谢
    177
MisterGlasses   288 天前 via Android
能布属在路由器中吗 梅林固件
    178
finab   288 天前
@MisterGlasses

是部署后端程序吗?

Linux/arm 版能用么?
https://github.com/Finb/Bark/releases/download/1.0.0/bark_linux_arm
    179
ddeef   280 天前   ♥ 2
使用 Quicker 软件在 Windows 上可以选中文字后一键发送到 Bark。
已分享动作:
https://getquicker.net/Sharedaction?code=e927d844-d212-4428-758d-08d69de12a3b
    180
mikaelson   269 天前
先谢谢大佬的工具。然后我有个 https 的问题,不知道怎么解决。
我服务器上部署了 apache,域名指向了服务器,现在 https 访问域名能看到 apache test 页面
但是在 ios 的 bark 上填 http 地址能用,https 就提示填写的服务器无效。请问是我 https 的搭建错误么?
    181
coosir   266 天前
要是通知过来的消息都能在 APP 中存储就好了,通知的作用毕竟是提醒
    182
gcgc   231 天前
想知道如何添加 https 支持
    183
finab   231 天前
@gcgc
一般用 nginx、apache 之类的工具, 可以很方便的配置 https
具体可以搜索一下 “ nginx https ” “ Apache https ” 关键字
    184
gcgc   231 天前 via iPhone
@finab 我是指怎么添加 bark 服务端的 https,因为没学过 go 刚才看了一下文档 好像有验证方法了 是不是把证书改成约定的名称就可以了 改成什么啊大佬
    185
gcgc   231 天前 via iPhone
@finab 我懂了,大佬不用回复了 我糊涂了 配置好 apache 就行了
    186
finab   231 天前
@gcgc
我说的就是 给 bark 服务 开启 https 喔,
bark 开启服务后, 使用 nginx 反向代理 bark,并开启 https

可以抽点时间看一下 nginx 或 apache
    187
finab   231 天前
@gcgc 嗯,
擦,我 20 分钟前回复的,没回复出去,刚再点下回复 你已经好了。。。。
    188
morethink   216 天前
请问如何查看历史记录?推送内容字数较多时,点通知栏看就没有了 @finab
    189
finab   215 天前
@morethink 通知有很多字时,下拉通知可以查看所有的字(在锁屏界面或通知中心时,左滑点查看)
暂时还没有历史记录,重要的通知可以先别点保留在通知中心

如果特别重要需要持久保存的,建议推送时添加 automaticallyCopy 参数, 然后在备忘录里点粘贴保存
    190
morethink   215 天前
@finab
明白
    191
kba977   206 天前
推送的内容如果是链接的话, 貌似就失效了哦
    192
finab   206 天前
@kba977 URL 的参数部分需要 URL 编码

例如

https://api.day.app/yourkey/https%3a%2f%2fwww.baidu.com
https://api.day.app/yourkey/URL?url=https%3a%2f%2fwww.baidu.com
    193
kba977   206 天前
@finab #192 好滴, 明白
    194
EthanChingCN   192 天前
@finab 你好 自己 Xcode 编译的客户端报{"code":400,"data":null,"message":"推送发送失败 BadDeviceToken"}要怎么解决呢(发出了菜鸡的声音
    195
finab   192 天前
@EthanChingCN 自己编译时,后端需要使用自己的推送证书. 你可以看一下 iOS 推送 相关的教程。
简单来说,用谁的账号编译的 App,就需要谁提供推送证书
1  2  
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2328 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 32ms · UTC 13:07 · PVG 21:07 · LAX 05:07 · JFK 08:07
♥ Do have faith in what you're doing.