ZhangLei e409a1db1a chore: 更新项目配置信息
- 更新版本号至 v1.0.3
- 添加应用显示名称 "Bitcoin Monitoring"
- 完善版权信息为 "Copyright© 2025 Mark International Inc. All rights reserved."
2025-10-30 14:36:20 +08:00
2025-10-28 21:13:13 +08:00
2025-10-30 13:37:41 +08:00

BTC 价格监控器

BTC Icon Swift macOS License

一款 macOS 原生菜单栏应用,用于实时监控主流虚拟货币价格,支持 BTC/ETH/BNB/SOL/DOGE 多种币种之前使用Python写过虽然也蛮好用但最终还是决定用macOS原生语言开发已经编译了IntelApple Silicon的通用应用,请至releases下载。

📖 如在macOS下无法运行请执行以下步骤

系统设置 → 隐私与安全性 → 安全性 → 已阻止“Bitcoin Monitoring.app”以保护Mac → 仍要打开

📷 界面预览

功能特性

🚀 核心功能

  • 多币种支持: 支持 BTC/ETH/BNB/SOL/DOGE 主流虚拟货币价格监控
  • 实时价格显示: 在菜单栏实时显示选中币种的 USDT 价格
  • 多种刷新机制: 可选 5、10、30、60 秒自动获取最新价格数据
  • 智能错误重试: 网络异常时自动重试,最多 3 次
  • 手动刷新: 支持快捷键 Cmd+R 手动刷新价格
  • 状态指示: 直观显示加载、更新、错误状态

🎨 用户体验

  • SF Symbols 图标: 使用原生 macOS 图标系统
  • 中文界面: 完整的中文用户界面
  • 优雅动画: 流畅的状态切换动画
  • 轻量级设计: 最小化系统资源占用
  • 后台运行: 不占用 Dock 空间,专注菜单栏

🛡️ 可靠性

  • 网络容错: 完善的网络异常处理机制
  • 内存管理: 避免循环引用,及时释放资源
  • 线程安全: UI 更新确保在主线程执行
  • 错误恢复: 自动从临时网络故障中恢复

📋 安装要求

系统要求

  • 操作系统: macOS 12.4 或更高版本
  • 架构支持: Intel 和 Apple Silicon (M1/M2/M3/M4/M5)

开发环境

  • 开发工具: Xcode 16.2 或更高版本
  • Swift 版本: Swift 5.0
  • 部署目标: macOS 26.0.1

网络要求

  • 需要稳定的互联网连接
  • 访问币安 API (https://api.binance.com) 的网络权限

🚀 快速开始

直接运行

  1. 克隆项目

    git clone https://github.com/jiayouzl/Bitcoin-Monitoring.git
    cd Bitcoin-Monitoring
    
  2. 在 Xcode 中打开

    open "Bitcoin Monitoring.xcodeproj"
    
  3. 运行应用

    • 在 Xcode 中选择 "Bitcoin Monitoring" scheme
    • 点击运行按钮或使用快捷键: Cmd+R

📖 使用说明

基本操作

  1. 启动应用

    • 应用启动后自动在菜单栏显示默认币种 (BTC) 图标
    • 首次启动会显示 "加载中...." 状态
  2. 查看价格

    • 菜单栏实时显示当前选中币种的 USDT 价格
    • 格式:$价格 (例如: $43,250.50)
  3. 切换币种

    • 点击菜单栏图标 → 币种选择 → 选择想要的币种
    • 支持 BTC/ETH/BNB/SOL/DOGE 五种主流币种
  4. 交互菜单

    • 点击菜单栏图标显示详细菜单
    • 查看更多信息并执行操作

菜单功能

功能 描述 快捷键
价格信息 显示当前选中币种的价格和状态 -
币种选择 切换监控的币种 (BTC/ETH/BNB/SOL/DOGE) -
错误信息 显示网络错误详情 (如有) -
更新时间 显示上次成功更新时间 -
刷新价格 手动获取最新价格 Cmd+R
刷新设置 设置刷新的间隔 -
GitHub 打开仓库查询更新 -
关于 查看应用信息和版本 -
退出 完全退出应用 Cmd+Q

状态说明

状态 显示 说明
加载中 加载中... 首次启动,正在获取数据
更新中 更新中... 正在获取最新价格
错误 错误 网络连接或 API 异常
正常 $价格 成功显示当前价格

🏗️ 技术架构

设计模式

  • MVVM 架构: SwiftUI + ObservableObject 模式
  • Combine 框架: 响应式数据流和事件处理
  • 依赖注入: 服务层分离和松耦合设计
  • 单例模式: PriceService 网络服务管理
  • 观察者模式: 价格变化的响应式更新

并发处理

// 主线程 UI 更新
@MainActor
class BTCMenuBarApp: ObservableObject

// 异步网络请求
func fetchPrice() async throws -> Double

// Combine 响应式流
priceManager.$currentPrice
    .receive(on: DispatchQueue.main)
    .sink { [weak self] price in
        self?.updateMenuBarTitle(price: price)
    }

🌐 API 集成

币安 API 端点

应用支持多种币种的价格查询:

GET https://api.binance.com/api/v3/ticker/price?symbol={SYMBOL}

支持的交易对

币种 交易对符号 显示名称
Bitcoin BTCUSDT BTC/USDT
Ethereum ETHUSDT ETH/USDT
BNB BNBUSDT BNB/USDT
Solana SOLUSDT SOL/USDT
Dogecoin DOGEUSDT DOGE/USDT

请求参数

参数 类型 必需 描述
symbol String 交易对符号 (如: BTCUSDT, ETHUSDT, BNBUSDT, SOLUSDT, DOGEUSDT)

响应格式

{
  "symbol": "BTCUSDT",
  "price": "43250.50"
}

错误处理策略

  1. 网络连接失败

    • 自动重试机制 (最多3次)
    • 递增延迟策略 (1秒, 2秒, 4秒)
    • 用户友好的错误提示
  2. API 服务器错误

    • HTTP 状态码检查
    • 服务器响应验证
    • 优雅降级处理
  3. 数据解析异常

    • JSON 格式验证
    • 数据类型检查
    • 价格格式验证
  4. 无效价格格式

    • 数值范围检查
    • 格式规范化
    • 异常值过滤

🔧 故障排除

常见问题

1. 应用无法启动

问题: 双击应用图标无反应 解决方案:

# 检查系统完整性
xattr -d com.apple.quarantine "/Applications/Bitcoin Monitoring.app"

# 或者在系统偏好设置中允许应用运行
# 系统偏好设置 → 安全性与隐私 → 通用

2. 网络连接失败

问题: 显示"错误"状态,无法获取价格 诊断步骤:

  1. 检查网络连接
ping api.binance.com
  1. 验证 API 可用性
# 测试同币种 API 的可用性
curl "https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT"
  1. 检查防火墙设置
# 确保允许出站 HTTPS 连接

🤝 贡献指南

我们欢迎所有形式的贡献!请阅读以下指南:

贡献方式

  1. 报告 Bug: 在 Issues 中提交详细的 Bug 报告
  2. 功能建议: 提出新功能的想法和建议
  3. 代码贡献: 提交 Pull Request 改进代码
  4. 文档完善: 改进 README 和代码注释

📄 许可证

本项目采用 GNU General Public License v3.0 许可证。

完整许可证文本

详见 LICENSE 文件。

👨‍💻 作者

Mark


如果这个项目对你有帮助,请给它一个 Star

Made with ❤️ for the Bitcoin community

Star History

Star History Chart

Languages
Swift 100%