# 使用Back推送消息到你的iPhone # 前言 我的好友看了我的博客,給我提了個需求,讓我搞個網站通知,我開始以為就是評論回覆然後發送郵件通知。不過他告訴我網站通知是,當有人評論或者留言後,會通知到我這邊來,消息是實時通知的,他說用的是Back,不需要發郵件,然後發了個GitHub鏈接給我,我 ...
使用Back推送消息到你的iPhone
前言
我的好友看了我的博客,給我提了個需求,讓我搞個網站通知,我開始以為就是評論回覆然後發送郵件通知。不過他告訴我網站通知是,當有人評論或者留言後,會通知到我這邊來,消息是實時通知的,他說用的是Back,不需要發郵件,然後發了個GitHub鏈接給我,我覺得還不錯,下麵開始實操一下。
Back
Back是一個GitHub開源的消息推送項目,簡單來說就是通過下載一個App,然後網站調用App給的介面,就能將信息推送到你的iPhone手機上。
Back軟體在蘋果商店搜索即可 預計在2031年之前都是免費的。
支持GET POST請求
使用自帶的伺服器推送
我這裡也簡單的描述一下直接用App給的伺服器推送
直接複製到瀏覽器執行即可
Your Key:自己下載Back軟體自帶
https://api.day.app/Your Key/測試內容
這種方式很簡單也很快捷
自己搭建伺服器推送
Docker部署
考慮到安全問題,你也可以自己搭建伺服器進行推送,方法有很多種,我這裡講解的是使用Docker部署。
如果伺服器的8080埠被占用,改成 8081:8080 更改前面的埠號即可,記得要放行埠!
docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server
運行完成後可以查看容器是否以及在運行
docker ps -a
可以看到我的是運行在9090埠的
CentOS 埠操作
放行埠:sudo firewall-cmd --zone=public --add-port=9090/tcp --permanent
重新載入防火牆:sudo firewall-cmd --reload
查看放行埠:sudo firewall-cmd --zone=public --list-ports
測試部署
上述步驟完成後,就是測試了
輸入curl localhost:8080/ping
命令進行測試,註意埠號為剛剛映射出來的埠,看圖:
出現 code:200就行部署成功了。
測試成功後就可以放在自己的項目中去了
配置伺服器
伺服器搭建完成後,在App配置一下
地址可以為ip地址
配置完成就能使用了
運用在ZY知識庫
public class HttpSend
{
public string Url { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
public interface IHttpService
{
Task<string> SendGetRequest(HttpSend httpSend);
Task<string> SendPostRequest(HttpSend httpSend);
}
public class HttpService : IHttpService
{
private readonly HttpClient _httpClient;
public HttpService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<string> SendGetRequest(HttpSend httpSend)
{
string requestUrl = $"{httpSend.Url}/{httpSend.Title}/{httpSend.Content}";
HttpResponseMessage response = await _httpClient.GetAsync(requestUrl);
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
throw new HttpRequestException($"請求失敗:{response.StatusCode}");
}
public async Task<string> SendPostRequest(HttpSend httpSend)
{
var httpContent = new StringContent(httpSend.Content, Encoding.UTF8, "application/json");
HttpResponseMessage response = await _httpClient.PostAsync(httpSend.Url, httpContent);
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
throw new HttpRequestException($"請求失敗:{response.StatusCode}");
}
}
在配置文件中註入builder.Services.AddHttpClient<IHttpService, HttpService>();
GET請求
使用SendGetRequest
方法傳入參數就行了
POST請求
GET 和Post在屏幕上顯示效果一樣,具體效果看你自己定義的內容
請求的圖標也是可以更改的 ,我這裡就不演示了。
group為分組,在App上可以分組查看推送的消息
private readonly IHttpService _httpService;
public LinkExchangeController(IHttpService httpService){
_httpService = httpService;
}
private async Task Send(string name,string link)
{
string jsonContent = JsonConvert.SerializeObject(new
{
body = $"網站名:{name}\n\n網址:{link}",
title = "友鏈申請通知",
group = "友鏈"
});
HttpSend send = new HttpSend()
{
Url = Url, //APP上的請求地址
Content = jsonContent
};
await _httpService.SendPostRequest(send);
}
效果展示
總結
Back 功能很強大可以加上推送標題、設置推送鈴聲、自定義推送圖標等等功能,我這裡只演示了最簡單的推送內容,其他功能自行驗證吧