文章首發於個人公號:「阿拉平平」
之前我寫過一個腳本,校驗 SSL 證書是否過期並定時將結果以郵件的形式告知。事實上,這些消息並不是那麼重要,發送郵件未免有些「重」了,將結果直接推送到自己的手機上可能更加合適。於是我找到了這款開源的消息推送服務:Bark。
項目介紹
Bark[1] 是一款開源的消息推送服務,用於給 iPhone 發送自定義的內容,支持文字和鏈接。通過部署 Bark 服務端,我們可以安全地推送一些敏感信息。
下載安裝
Bark 分爲客戶端和服務端。其中,客戶端用於接收消息;服務端用於推送消息。
客戶端
Bark 客戶端僅支持 iOS 平臺,可以到 App Store 搜索並下載。
第一次使用會要求「註冊設備」,點擊後會爲設備隨機生成一個 Key:
作者提供了服務端,運行以上鍊接就可以測試消息推送:
服務端
如果是隱私信息,最好還是通過自建 Bark 服務端[2]來推送。接下來,我們嘗試部署下服務端。
服務端的部署支持 docker 和 docker-compose,不過本身並不複雜,所以這裏我選用手動方式來安裝:
# Bark 服務端支持多平臺,根據系統下載二進制文件
wget https://github.com/Finb/bark-server/releases/download/v2.0.1/bark-server_linux_amd64
# 添加可執行權限
chmod +x bark-server_linux_amd64
# 創建數據目錄
mkidr bark-data
# 運行服務
./bark-server_linux_amd64 -addr 0.0.0.0:8080 -data ./bark-data
至此,服務端部署完成,可以運行以下命令測試服務端是否正常:
curl http://0.0.0.0:8080/ping
{"code":200,"message":"pong","timestamp":1621936667}
使用說明
在上一章中,我們安裝了客戶端,也自建了服務端。但是別忘了,我們還沒將兩者關聯起來。
添加服務器
回到 App,點擊右上角的「+」進入添加私有服務器頁面,填寫服務器地址:
注意服務器的協議和端口,填好後點擊右上角圖標確認。如果服務器校驗失敗,則無法保存。
請求參數
之前我們只是簡單地測試了客戶端接受消息,現在我們發送些帶參數的請求,來看看 Bark 還支持哪些功能。
- 帶有標題的消息
通過在 URL 路徑上增加一個 title
來實現,形如:
/:key/:title/:body
- 自動複製推送內容
自動複製功能適用於驗證碼推送的場景,參數如下:
- automaticallyCopy:自動複製的開關,默認關閉。1:開啓,其它值:關閉。
- copy:指定自動複製的內容,不指定則複製所有 body 的內容。
比如發送以下請求會自動複製 9527,無需手動複製:
https://api.day.app/yourkey/驗證碼是9527?automaticallyCopy=1©=9527
- URL 跳轉
通過指定參數 url
,點擊推送將跳轉到相應的網址,比如:
# 發送時,URL 參數需要編碼
https://api.day.app/yourkey/百度網址?url=https://www.baidu.com
- 保存歷史記錄
一些推送,我們可以閱後即焚,另一些則可以選擇保存。保存與否通過 isArchive
來控制:
isArchive:1:保存,其他值:不保存。
要說明的是,如果不指定參數,是否保存則取決於 App 內的設置。相較於 App,參數具有更高的優先級,所以對於確認需要保存記錄的消息,可以這樣發送請求:
https://api.day.app/yourkey/需要保存的推送?isArchive=1
寫在最後
Bark 作爲一套開源的消息推送應用,通過自建服務端,可以提供非常及時、穩定可靠、隱私安全的推送服務。Bark 提供 http 接口,只需發送請求即可給自己的 iPhone 推送自定義的消息。
當然,Bark 的功能很簡單,推送的消息也有一定的侷限性,目前並不支持圖片、表情等。結合 Bark 使用的場景,我猜測這可能和作者設計初衷有關,Bark 目的在於替換傳統通知方式,保持簡單實用就好。
References
[1] Bark: https://github.com/Finb/Bark
[2] Bark 服務端: https://github.com/Finb/bark-server