golang实现OSX桌面通知功能的插件库gosx-notifier的使用
golang实现OSX桌面通知功能的插件库gosx-notifier的使用
gosx-notifier是一个Go语言库,用于向OSX Mountain Lion(10.8或更高版本)的通知中心发送桌面通知。
功能特点
- 支持在OSX 10.8及以上版本发送通知
- 10.9及以上版本支持图片和图标
- 简单易用的API
- 无外部依赖
安装
使用以下命令安装gosx-notifier库:
go get github.com/deckarep/gosx-notifier
基本使用示例
package main
import (
"github.com/deckarep/gosx-notifier"
"log"
)
func main() {
// 至少需要指定要显示给用户的消息
note := gosxnotifier.NewNotification("检查你的苹果股票!")
// 可选:设置标题
note.Title = "赚钱时间到 💰"
// 可选:设置副标题
note.Subtitle = "我的副标题"
// 可选:从预定义集合中设置声音
note.Sound = gosxnotifier.Basso
// 可选:设置组,确保只显示一个通知,替换相同组ID的先前通知
note.Group = "com.unique.yourapp.identifier"
// 可选:设置发送者(通知现在将使用Safari图标)
note.Sender = "com.apple.Safari"
// 可选:指定点击通知时要打开的URL或bundleid
note.Link = "http://www.yahoo.com" // 或像 com.apple.Terminal 这样的BundleID
// 可选:应用图标(仅限10.9+)
note.AppIcon = "gopher.png"
// 可选:内容图片(仅限10.9+)
note.ContentImage = "gopher.png"
// 然后推送通知
err := note.Push()
// 如有必要,检查错误
if err != nil {
log.Println("出错了!")
}
}
实际应用示例:网站监控通知
package main
import (
"github.com/deckarep/gosx-notifier"
"net/http"
"strings"
"time"
)
// 要监控的网站列表
var sites []string = []string{
"http://www.yahoo.com",
"http://www.google.com",
"http://www.bing.com"}
func main() {
ch := make(chan string)
for _, s := range sites {
go pinger(ch, s)
}
for {
select {
case result := <-ch:
if strings.HasPrefix(result, "-") {
s := strings.Trim(result, "-")
showNotification("紧急,无法ping通网站: " + s)
}
}
}
}
func showNotification(message string) {
note := gosxnotifier.NewNotification(message)
note.Title = "网站宕机"
note.Sound = gosxnotifier.Default
note.Push()
}
// 网站前缀为+表示正常,-表示宕机
func pinger(ch chan string, site string) {
for {
res, err := http.Get(site)
if err != nil {
ch <- "-" + site
} else {
if res.StatusCode != 200 {
ch <- "-" + site
} else {
ch <- "+" + site
}
res.Body.Close()
}
time.Sleep(30 * time.Second)
}
}
使用场景建议
- 监控服务器集群,当出现问题时推送通知
- 抓取Hacker News寻找特定关键词的文章并推送通知
- 监控股票表现,在亏损前推送通知
- 连接到ifttt.com,当家中运动传感器触发时推送通知
许可证
该项目采用双重许可:基于底层应用的许可以及Go版本的MIT许可。
更多关于golang实现OSX桌面通知功能的插件库gosx-notifier的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang实现OSX桌面通知功能的插件库gosx-notifier的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用gosx-notifier实现OSX桌面通知功能
gosx-notifier是一个Go语言库,用于在macOS系统上发送本地桌面通知。下面我将详细介绍如何使用这个库。
安装gosx-notifier
首先,使用go get命令安装gosx-notifier:
go get github.com/deckarep/gosx-notifier
基本使用示例
package main
import (
"log"
"github.com/deckarep/gosx-notifier"
)
func main() {
// 创建一个新的通知
note := gosxnotifier.NewNotification("这是通知标题")
// 设置通知内容
note.Title = "系统提醒"
note.Subtitle = "重要消息"
note.Message = "您的任务已完成,请查看详情。"
note.Sound = gosxnotifier.Default // 使用默认提示音
// 可以设置应用图标
note.AppIcon = "/Applications/Calendar.app/Contents/Resources/Calendar.icns"
// 可以设置点击通知时的回调URL
note.Link = "https://github.com/deckarep/gosx-notifier"
// 发送通知
err := note.Push()
if err != nil {
log.Fatal("发送通知失败:", err)
}
}
高级功能
1. 自定义通知声音
note.Sound = gosxnotifier.Basso // 使用特定声音
// 可用的声音类型包括: Basso, Blow, Bottle, Frog, Funk, Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink
2. 添加按钮和响应
note.Group = "com.mycompany.myapp.notifications" // 设置通知分组
note.Sender = "com.apple.Safari" // 可以伪装成其他应用发送通知
// 添加操作按钮
note.Actions = []string{"查看详情", "忽略"}
// 处理用户响应
note.Reply = func(response string) {
if response == "查看详情" {
fmt.Println("用户点击了查看详情")
} else if response == "忽略" {
fmt.Println("用户选择忽略通知")
}
}
3. 定时发送通知
// 设置5秒后发送通知
note.DeliverAfter = time.Now().Add(5 * time.Second)
4. 使用自定义图标
// 使用自定义图标文件
note.ContentImage = "/path/to/your/image.png"
完整示例:带按钮和回调的通知
package main
import (
"fmt"
"log"
"time"
"github.com/deckarep/gosx-notifier"
)
func main() {
note := gosxnotifier.NewNotification("任务完成提醒")
note.Subtitle = "数据库备份"
note.Message = "数据库备份任务已于" + time.Now().Format("15:04") + "完成。"
note.Sound = gosxnotifier.Ping
note.Group = "com.example.backup.notifications"
// 添加操作按钮
note.Actions = []string{"查看日志", "立即同步", "稍后提醒"}
// 处理用户响应
note.Reply = func(response string) {
switch response {
case "查看日志":
fmt.Println("打开日志文件...")
case "立即同步":
fmt.Println("开始同步数据...")
case "稍后提醒":
fmt.Println("将在30分钟后再次提醒...")
}
}
// 发送通知
if err := note.Push(); err != nil {
log.Fatal("通知发送失败:", err)
}
// 保持程序运行以接收回调
time.Sleep(30 * time.Second)
}
注意事项
- gosx-notifier只能在macOS系统上工作
- 需要为应用程序启用通知权限
- 如果使用自定义图标,需要确保路径正确
- 回调功能需要保持程序运行才能接收到用户响应
这个库提供了一种简单的方式来为你的Go应用程序添加macOS原生通知功能,非常适合需要向用户发送提醒或状态更新的应用程序。