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

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

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

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 条附言  ·  2018-12-19 11:37:37 +08:00
1.0.4 支持 automaticallyCopy 参数,携带此参数发送推送,推送内容将直接复制到粘贴板

如果是自己部署的 Bark 后端要支持这个功能,需使用最新的服务端程序
https://github.com/Finb/Bark/releases
第 4 条附言  ·  2019-03-01 15:15:57 +08:00

后端支持 Docker

docker run -dt --name bark -p 8999:8080 finab/bark-server:v1.0.0
第 5 条附言  ·  2019-03-01 17:18:05 +08:00

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

docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server
第 6 条附言  ·  2020-06-01 09:05:12 +08:00
新增保存历史通知的功能。

使用方法:
在推送 URL 中添加 isArchive 参数。
isArchive = 1 时通知将被保存,为其他值时则不会被保存。

或者在历史消息 - 设置 中打开默认保存

保存在本地的通知消息历史非常安全。
通过 NotificationServiceExtension 扩展,在收到推送时,将推送信息保存在本地,不会经过其他任何设备。
历史记录仅由个人 iCloud 私有库进行同步。
可以确保你产生的任何通知,将只留在你的设备与你的 iCloud 中
218 条回复    2023-09-19 16:10:23 +08:00
1  2  3  
Lentin
    101
Lentin  
   2018-07-03 20:18:30 +08:00 via iPhone
@PHPJit 安卓的话时效性就没有了,不翻墙的话,抽疯
diyisoft
    102
diyisoft  
   2018-07-04 06:21:06 +08:00 via iPhone   ❤️ 1
用大佬的开源 V2EX 客户端来回大佬的帖子。赞一下。这个功能也很强大,谢谢
royrs
    103
royrs  
   2018-07-04 19:16:22 +08:00
求各种自动化执行脚本。
70599
    104
70599  
   2018-07-04 23:17:58 +08:00
@finab 作者你好,这个 App 能实现以下功能吗?
1、自定义声音
2、打开链接

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

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

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

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

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

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

是部署后端程序吗?

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

可以抽点时间看一下 nginx 或 apache
finab
    187
finab  
OP
   2019-04-19 12:37:24 +08:00
@gcgc 嗯,
擦,我 20 分钟前回复的,没回复出去,刚再点下回复 你已经好了。。。。
morethink
    188
morethink  
   2019-05-04 17:21:03 +08:00
请问如何查看历史记录?推送内容字数较多时,点通知栏看就没有了 @finab
finab
    189
finab  
OP
   2019-05-05 10:43:08 +08:00
@morethink 通知有很多字时,下拉通知可以查看所有的字(在锁屏界面或通知中心时,左滑点查看)
暂时还没有历史记录,重要的通知可以先别点保留在通知中心

如果特别重要需要持久保存的,建议推送时添加 automaticallyCopy 参数, 然后在备忘录里点粘贴保存
morethink
    190
morethink  
   2019-05-05 18:36:50 +08:00
@finab
明白
kba977
    191
kba977  
   2019-05-14 13:34:59 +08:00
推送的内容如果是链接的话, 貌似就失效了哦
finab
    192
finab  
OP
   2019-05-14 15:06:49 +08:00
kba977
    193
kba977  
   2019-05-14 15:14:45 +08:00
@finab #192 好滴, 明白
76DU6QO402Es61mK
    194
76DU6QO402Es61mK  
   2019-05-28 11:58:29 +08:00
@finab 你好 自己 Xcode 编译的客户端报{"code":400,"data":null,"message":"推送发送失败 BadDeviceToken"}要怎么解决呢(发出了菜鸡的声音
finab
    195
finab  
OP
   2019-05-28 16:55:50 +08:00
@EthanChingCN 自己编译时,后端需要使用自己的推送证书. 你可以看一下 iOS 推送 相关的教程。
简单来说,用谁的账号编译的 App,就需要谁提供推送证书
wintercoder
    196
wintercoder  
   2020-03-10 12:11:15 +08:00
2020-03-10 疑似公共二进制程序证书过期,推送失败

INFO[2020-03-10 12:05:35] title:
INFO[2020-03-10 12:05:35] body: 无权限访问
INFO[2020-03-10 12:05:35] params: map[automaticallycopy:0]
INFO[2020-03-10 12:05:35] ==========================
INFO[2020-03-10 12:05:36] Error: Post https://api.push.apple.com/3/device/脱敏 ID: remote error: tls: expired certificate
allenloong
    197
allenloong  
   2020-03-27 23:35:34 +08:00
科研狗,今天第一次用,Bark 就救了我的命,非常感谢。
littleboyzt
    198
littleboyzt  
   2020-06-03 17:29:57 +08:00
请问下,为什么每次进 APP 都会多两条 register 和 ping 的推送
finab
    199
finab  
OP
   2020-06-03 17:49:37 +08:00
@littleboyzt

register 是将当前设备的推送 token 发送给服务端。
服务端需要根据这个 token,将推送发送给苹果,苹果将推送发给你的设备。
因为这个 token 是可变的,所以每次打开 APP 时,顺便会将当前最新的 token 传给服务器

ping 是测试下推送服务器是否可用,如果不可用会提醒你。
cjqXe2v
    200
cjqXe2v  
   2021-02-22 12:06:45 +08:00
当我 chrome 插件上添加两个链接时 只有第一个链接生效 无论发给第一个还是第二个都是发给了第一个
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 19:23 · PVG 03:23 · LAX 11:23 · JFK 14:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.