mirror of
https://github.com/DefectingCat/DefectingCat.github.io
synced 2025-07-15 16:51:37 +00:00
36 lines
18 KiB
HTML
36 lines
18 KiB
HTML
<!DOCTYPE html><html lang="zh-CN" data-default-color-scheme=""auto""><head><meta charset="UTF-8"><link rel="apple-touch-icon" sizes="76x76" href="/images/img/apple-touch-icon.webp"><link rel="icon" type="image/png" href="/images/img/favicon.webp"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,shrink-to-fit=no"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="theme-color" content="#9DC8C8"><meta name="description" content=""><meta name="author" content="Defectink"><meta name="keywords" content=""><title>bark-水果自定义通知大法🍎 - 🍭Defectink</title><link rel="stylesheet" href="https://cdn.defectink.com/static/twitter-bootstrap/4.5.3/css/bootstrap.min.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/github-markdown-css/4.0.0/github-markdown.min.css"><link rel="stylesheet" href="/lib/hint/hint.min.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/highlight.js/10.0.0/styles/github-gist.min.css"><link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/t/font_1736178_kmeydafke9r.css"><link rel="stylesheet" href="/css/main.css"><link rel="stylesheet" href="/css/xfy.css"><script src="/js/utils.js"></script><script src="/js/color-schema.js"></script><meta name="generator" content="Hexo 5.2.0"><link rel="alternate" href="/xml/atom.xml" title="🍭Defectink" type="application/atom+xml"><link rel="alternate" href="/xml/rss.xml" title="🍭Defectink" type="application/rss+xml"></head><body><header style="height:75vh"><nav id="navbar" class="navbar fixed-top navbar-expand-lg navbar-dark scrolling-navbar"><div class="container"><a class="navbar-brand" href="/"> <strong>🍭Defectink</strong> </a> <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><div class="animated-icon"><span></span><span></span><span></span></div></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav ml-auto text-center"><li class="nav-item"><a class="nav-link" href="/">🏠 首页</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">📕 索引</a><div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="/categories/">🎁 分类</a> <a class="dropdown-item" href="/tags/">🎐 标签</a></div></li><li class="nav-item"><a class="nav-link" href="/archives/">📂 归档</a></li><li class="nav-item"><a class="nav-link" href="/about/">🎃 关于</a></li><li class="nav-item"><a class="nav-link" href="/links/">🙆♀️ 小伙伴</a></li><li class="nav-item"><a class="nav-link" href="/pgp/">🔐 PGP</a></li><li class="nav-item" id="search-btn"><a class="nav-link" data-toggle="modal" data-target="#modalSearch"> <i class="iconfont icon-search"></i> </a></li><li class="nav-item" id="color-toggle-btn"><a class="nav-link" href="javascript:"> <i class="iconfont icon-dark" id="color-toggle-icon"></i> </a></li></ul></div></div></nav><div class="banner intro-2" id="background" parallax="true" style="background:url(/images/img/post.webp) no-repeat center center;background-size:cover"><div class="full-bg-img"><div class="mask flex-center" style="background-color:rgba(0,0,0,.3)"><div class="container page-header text-center fade-in-up"><span class="h2" id="subtitle"></span><div class="mt-3"><span class="post-meta mr-2"><i class="iconfont icon-author" aria-hidden="true"></i> Defectink</span><span class="post-meta"><i class="iconfont icon-date-fill" aria-hidden="true"></i> <time datetime="2019-06-28 12:12" pubdate>2019年6月28日 中午</time></span></div><div class="mt-1"><span class="post-meta mr-2"><i class="iconfont icon-chart"></i> 1.4k 字</span><span class="post-meta mr-2"><i class="iconfont icon-clock-fill"></i> 17 分钟</span></div></div></div></div></div></header><main><div class="container-fluid"><div class="row"><div class="d-none d-lg-block col-lg-2"></div><div class="col-lg-8 nopadding-md"><div class="container nopadding-md" id="board-ctn"><div class="py-5" id="board"><article class="post-content mx-auto" id="post"><h1 style="display:none">bark-水果自定义通知大法🍎</h1><p class="note note-info">本文最后水于:2020年11月2日 凌晨</p><div class="markdown-body" id="post-body"><blockquote><p>ding~</p></blockquote><p>用了一段时间的水果了,发现它的通知来的还是非常及时的。基本上只要连接了网络,通知都不会落下。简单了解过IOS的通知机制:APP→水果服务器→你的机器。也就是说这三个步骤都能够正常通信的情况下,我们的机器就能正常的收到通知。</p><p>在Android平台也有类似的通知机制,也是由服务端来推送通知到我们的机器,从而到达APP可以不挂后台的情况下收到推送。但是为什么国内的UI用不了我就不清楚了。</p><img src="https://support.apple.com/library/content/dam/edam/applecare/images/zh_CN/iOS/ios12-iphone-x-notification-screen-animation.gif" srcset="/images/img/loading.gif" alt="ding" style="zoom:50%"><h2 id="给自己发通知🐾"><a href="#给自己发通知🐾" class="headerlink" title="给自己发通知🐾"></a>给自己发通知🐾</h2><p>上述我们简单了解到,既然是由APP控制的推送通知,那么我们既然想要自定义通知就非常简单了。只需要一个能够由我们控制的APP就可以了。</p><p>App Store中有位大佬开发的<a target="_blank" rel="noopener" href="https://apps.apple.com/cn/app/bark-%E7%BB%99%E4%BD%A0%E7%9A%84%E6%89%8B%E6%9C%BA%E5%8F%91%E6%8E%A8%E9%80%81/id1403753865">Bark</a>就是为了这事存在的,它的存在目的就是为了让我们自己给自己推送通知。、</p><p>Github:<a target="_blank" rel="noopener" href="https://github.com/Finb/Bark">Bark</a></p><p><img src="../images/%E6%B0%B4%E6%9E%9C%E8%87%AA%E5%AE%9A%E4%B9%89%E9%80%9A%E7%9F%A5%E5%A4%A7%E6%B3%95/1561705066368.webp" srcset="/images/img/loading.gif" alt="1561705066368"></p><p>默认它提供了自己的服务器,如果我们需要推送一些较为隐私的消息,可以使用自建服务端。它提供了http接口,后端简单调用即可给自己的水果设备发送推送。</p><h2 id="服务端"><a href="#服务端" class="headerlink" title="服务端"></a>服务端</h2><p>服务端是一个开源项目,<a target="_blank" rel="noopener" href="https://github.com/Finb/bark-server"><strong>bark-server</strong></a>,这是一个非常简单易用的服务端软件。</p><p>部署非常简单,并且也有docker的部署方式:</p><pre><code class="hljs jboss-cli">docker run -dt <span class="hljs-params">--name</span> bark -p 8080<span class="hljs-function">:8080</span> -v `<span class="hljs-keyword">pwd</span>`<span class="hljs-string">/bark-data</span>:<span class="hljs-string">/data</span> finab/bark-server</code></pre><p>当然和我一样的传统用户喜欢直接部署在主机上的也很方便。相对来说,这种简单易用的服务端的部署和使用docker也差距不大,docker不一定会方便到哪去,说不定还会更加难用。</p><p>我们只需要简单的四步就可以部署完成。</p><ul><li>1、Download precompiled binaries from the <a target="_blank" rel="noopener" href="https://github.com/Finb/bark-server/releases">releases</a> page</li><li>2、Add executable permissions to the bark-server binary: <code>chmod +x bark-server</code></li><li>3、Start bark-server: <code>./bark-server -l 0.0.0.0 -p 8080 -d ./bark-data</code></li><li>4、Test the server: <code>curl localhost:8080/ping</code></li></ul><p>对于第三步来说,<code>-l</code>定义是监听的地址,<code>-p</code>为监听的端口,<code>./bark-data</code>默认使用<code>/data</code>目录,可以不定义。</p><p>当我们使用测试时,返回这样的结果<code>{"code":200,"data":{"version":"1.0.0"},"message":"pong"}</code>就意味着我们的服务端已经运行成功了。</p><p>此时,我们可以在客户端软件中添加我们的服务器地址<code>http://server-ip:8080</code>即可,正常通信后,软件界面上的服务器地址就会全部都变成我们自己刚刚搭建的服务器。</p><p>这个时候应该就已经能够正常的使用了。但是既然自己搭建服务端时为了推送一些较为隐私的消息。那么只使用http就显得有点白忙活了。</p><h3 id="https"><a href="#https" class="headerlink" title="https"></a>https</h3><p>目前还不太清楚作者有没有直接在服务端添加证书的操作,从目前的文档来看,https需要我们使用其他的思路了。</p><p>我目前实现的方法是,既然bark也是基于http接口的,那么我就可以将其只监听<code>127.0.0.1</code>,然后使用我的前端apache给它做反代。毕竟apache部署个证书是非常简单的操作。</p><p>这样可以达到apache和bark的交互只在机器内部工作,而对外开放的apache使用证书添加上https。达到传输加密的效果。</p><p>这样是可以实现了完全加密推送消息到我的设备上了,至于水果那段不太清楚,应该也是加密的吧。</p><p>我这里使用的是免费的Let’sEncrypt的证书,他家的不但免费,还有及其方便的脚本直接给apache或其他web服务端配置好证书以及配置文件。并且证书都是保存在相应的目录的,有其他需求时,可以随时使用。</p><p>唯一一个缺点就是一次的证书只有3个月时长,需要不停的续期,好在官方也有自动续期的脚本。不是特别的麻烦。</p><pre><code class="hljs bash">~ <span class="hljs-comment"># ls /etc/letsencrypt/live/api2.defectink.com </span>
|
||
cert.pem chain.pem fullchain.pem privkey.pem README</code></pre><h3 id="反代"><a href="#反代" class="headerlink" title="反代"></a>反代</h3><p>apache已经有了证书了,接下来直接反代到我们的bark服务端就ok了。</p><p>这是我的配置文件:</p><pre><code class="hljs bash">VirtualHost *:80
|
||
ProtocolsHonorOrder On
|
||
Protocols h2 h2c http/1.1
|
||
|
||
Servername api2.defectink.com
|
||
ServerAdmin webmaster@localhost
|
||
|
||
ProxyRequests Off
|
||
ProxyMaxForwards 100
|
||
ProxyPreserveHost On
|
||
ProxyPass / http://127.0.0.1:8181/
|
||
ProxyPassReverse / http://127.0.0.1:8181/
|
||
|
||
Proxy *
|
||
Order Deny,Allow
|
||
Allow from all
|
||
/Proxy
|
||
RewriteEngine on
|
||
RewriteCond %{SERVER_NAME} =api2.defectink.com
|
||
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
||
/VirtualHost</code></pre><p>只需要注意反代的地址就ok了,也就是我们bark监听的地址。</p><p>如果一切都没啥问题的话,我们直接打开刚刚配置好证书的apache站点,bark应该就是能够正常运行了。</p><p><img src="../images/%E6%B0%B4%E6%9E%9C%E8%87%AA%E5%AE%9A%E4%B9%89%E9%80%9A%E7%9F%A5%E5%A4%A7%E6%B3%95/1561706128389.webp" srcset="/images/img/loading.gif" alt="1561706128389"></p><h2 id="Systemd"><a href="#Systemd" class="headerlink" title="Systemd"></a>Systemd</h2><p>前不久才水过一篇systemd的水文,简单试了几个服务,发现还是非常方便的。尤其是像bark这样的占用一个终端,用screen又不太方便找的程序。给他使用systemd来控制更是非常的方便。</p><p>把配置文件直接放到<code>/etc/systemd/system/</code>目录下就可以了。只需要修改一下<code>ExecStart</code>字段的启动路劲就可以正常使用了。</p><pre><code class="hljs routeros">[Unit]
|
||
<span class="hljs-attribute">Description</span>=bark<span class="hljs-built_in"> note </span><span class="hljs-keyword">for</span> ip
|
||
<span class="hljs-attribute">Documentation</span>=https://www.defectink.com
|
||
<span class="hljs-attribute">After</span>=network.target
|
||
|
||
[Service]
|
||
<span class="hljs-attribute">Type</span>=simple
|
||
<span class="hljs-attribute">PIDFile</span>=/run/bark.pid
|
||
<span class="hljs-attribute">ExecStart</span>=/data/bark-server_linux_amd64 -l 127.0.0.1 -p 8181
|
||
<span class="hljs-attribute">ExecReload</span>=/bin/kill -s HUP <span class="hljs-variable">$MAINPID</span>
|
||
<span class="hljs-attribute">ExecStop</span>=/bin/kill -s QUIT <span class="hljs-variable">$MAINPID</span>
|
||
<span class="hljs-attribute">PrivateTmp</span>=<span class="hljs-literal">true</span>
|
||
|
||
[Install]
|
||
<span class="hljs-attribute">WantedBy</span>=multi-user.target</code></pre><p>具体的效果就和平时使用其他的systemd控制的软件一样了,并且不用再那么麻烦了。</p><p><img src="../images/%E6%B0%B4%E6%9E%9C%E8%87%AA%E5%AE%9A%E4%B9%89%E9%80%9A%E7%9F%A5%E5%A4%A7%E6%B3%95/1561706516651.webp" srcset="/images/img/loading.gif" alt="1561706516651"></p></div><hr><div><div class="post-metas mb-3"><div class="post-meta mr-3"><i class="iconfont icon-category"></i> <a class="hover-with-bg" href="/categories/%E8%B8%A9%E5%9D%91/">踩坑</a></div><div class="post-meta"><i class="iconfont icon-tags"></i> <a class="hover-with-bg" href="/tags/Tools/">Tools</a></div></div><p class="note note-warning"><a target="_blank" href="https://zh.wikipedia.org/wiki/Wikipedia:CC_BY-SA_3.0%E5%8D%8F%E8%AE%AE%E6%96%87%E6%9C%AC" rel="nofollow noopener noopener">CC BY-SA 3.0❤</a></p><div class="post-prevnext row"><article class="post-prev col-6"><a href="/defect/online-ascii-video.html"><i class="iconfont icon-arrowleft"></i> <span class="hidden-mobile">ASCII在线视频流</span> <span class="visible-mobile">上一篇</span></a></article><article class="post-next col-6"><a href="/defect/alioss-for-typecho.html"><span class="hidden-mobile">AliOssForTypecho</span> <span class="visible-mobile">下一篇</span><i class="iconfont icon-arrowright"></i></a></article></div></div><article class="comments" id="comments"><div id="vcomments"></div><script type="text/javascript">function loadValine(){addScript("https://cdn.defectink.com/static/valine/1.4.14/Valine.min.js",function(){new Valine({el:"#vcomments",app_id:"dD9t7mcIBVzJWag5ez6GPy2v-MdYXbMMI",app_key:"bWG6pmKsEscrH4JjrpNNAAy6",placeholder:"嘤嘤嘤???",path:window.location.pathname,avatar:"retro",meta:["nick","mail","link"],pageSize:"10",lang:"zh-CN",highlight:!0,recordIP:!1,serverURLs:""})})}waitElementVisible("vcomments",loadValine)</script><noscript>Please enable JavaScript to view the <a target="_blank" href="https://valine.js.org" rel="nofollow noopener noopener">comments powered by Valine.</a></noscript></article></article></div></div></div><div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn"><div id="toc"><p class="toc-header"><i class="iconfont icon-list"></i> 目录</p><div id="tocbot"></div></div></div></div></div></main><a id="scroll-top-button" href="#" role="button"><i class="iconfont icon-arrowup" aria-hidden="true"></i></a><div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true"><div class="modal-dialog modal-dialog-scrollable modal-lg" role="document"><div class="modal-content"><div class="modal-header text-center"><h4 class="modal-title w-100 font-weight-bold">搜索</h4><button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button></div><div class="modal-body mx-3"><div class="md-form mb-5"><input type="text" id="local-search-input" class="form-control validate"> <label data-error="x" data-success="v" for="local-search-input">关键词</label></div><div class="list-group" id="local-search-result"></div></div></div></div></div><footer class="text-center mt-5 py-3"><div class="footer-content"><a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a><i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a></div><div class="beian"><a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow noopener">皖ICP备17017808号</a></div></footer><script src="https://cdn.defectink.com/static/jquery/3.4.1/jquery.min.js"></script><script src="https://cdn.defectink.com/static/twitter-bootstrap/4.5.3/js/bootstrap.min.js"></script><script src="/js/debouncer.js"></script><script src="/js/main.js"></script><script src="/js/lazyload.js"></script><script defer="defer" src="https://cdn.defectink.com/static/clipboard.js/2.0.6/clipboard.min.js"></script><script src="/js/clipboard-use.js"></script><script src="/js/xfy.js"></script><script src="https://cdn.defectink.com/static/tocbot/4.11.1/tocbot.min.js"></script><script>$(document).ready(function(){var t=$("#board-ctn").offset().top;tocbot.init({tocSelector:"#tocbot",contentSelector:"#post-body",headingSelector:"h1,h2,h3,h4,h5,h6",linkClass:"tocbot-link",activeLinkClass:"tocbot-active-link",listClass:"tocbot-list",isCollapsedClass:"tocbot-is-collapsed",collapsibleClass:"tocbot-is-collapsible",collapseDepth:3,scrollSmooth:!0,headingsOffset:-t}),0<$(".toc-list-item").length&&$("#toc").css("visibility","visible")})</script><script src="https://cdn.defectink.com/static/typed.js/2.0.11/typed.min.js"></script><script>var typed=new Typed("#subtitle",{strings:[" ","bark-水果自定义通知大法🍎 "],cursorChar:"❤",typeSpeed:70,loop:!1});typed.stop(),$(document).ready(function(){$(".typed-cursor").addClass("h2"),typed.start()})</script><script src="/js/local-search.js"></script><script>var path="/xml/local-search.xml",inputArea=document.querySelector("#local-search-input");inputArea.onclick=function(){searchFunc(path,"local-search-input","local-search-result"),this.onclick=null}</script><script src="https://cdn.defectink.com/static/fancybox/3.5.7/jquery.fancybox.min.js"></script><link rel="stylesheet" href="https://cdn.defectink.com/static/fancybox/3.5.7/jquery.fancybox.min.css"><script>$("#post img:not(.no-zoom img, img[no-zoom]), img[zoom]").each(function(){var t=document.createElement("a");$(t).attr("data-fancybox","images"),$(t).attr("href",$(this).attr("src")),$(this).wrap(t)})</script><script src="https://cdn.defectink.com/static/mermaid/8.5.0/mermaid.min.js"></script><script>window.mermaid&&mermaid.initialize({theme:"default"})</script></body></html> |