Swift · 项目报告

ben-z/findphone

Locate a nearby Bluetooth device by signal strength, from the macOS command line — for when Find My isn't available

已完成 打开 GitHub
B
799星标
129Fork
10Issue
未知许可证

分析结果

项目分析

findphone 是一个面向 macOS 命令行的蓝牙设备定位工具,用 Swift 编写。它通过蓝牙信号强度 RSSI 来帮助用户在附近范围内寻找 iPhone、iPad 等 Apple 手持设备,适用于“查找 Find My”不可用但设备仍在蓝牙范围内的场景。工具支持扫描附近设备、按名称追踪单个设备、列出已配对设备,并可用声音提示距离变化。

适用领域 macOS 工具 / 蓝牙 / BLE / 命令行工具 / 设备定位 / IT 运维 / 终端用户效率工具
配置难度 低到中等。普通 macOS 用户下载二进制后即可运行,但需要了解终端命令、蓝牙权限设置以及未签名二进制的 quarantine 处理;从源码构建则需要基本 Swift / Xcode Command Line Tools 使用经验。
商业价值 对企业 IT、学校、实验室和受管设备场景有实用价值,尤其是在 Find My 被禁用或不可用时,可作为低成本的近距离寻物工具。它不适合做商业级精准定位或资产追踪系统,但可作为内部运维工具、终端支持工具或蓝牙信号排查辅助工具使用。由于无明确许可证和未签名发布,若要在企业或商业产品中采用,需要先解决授权、代码审计、签名分发和安全合规问题。
01

技术亮点

  • 无需依赖 Find My,可在其不可用时作为替代寻物方案
  • 命令行使用简单,支持 survey、hunt、list 等模式
  • 支持按设备名称进行大小写不敏感的追踪
  • 支持 --sound 声音提示,靠近设备时点击频率会提高,适合不盯屏幕寻找
  • 支持 --redact 隐私模式,可隐藏蓝牙地址和部分设备名称,便于录屏
  • 使用多个信号来源综合判断:GATT RSSI、BLE advertisements、Classic link RSSI
  • 作者对 macOS 蓝牙 RSSI 缓存机制有明确处理,避免误把重复缓存值当作新测量
  • Swift 实现,无外部依赖,构建和部署较轻量
02

目标用户

  • 使用 macOS 的开发者和高级用户
  • 需要在办公室、教室、实验室中寻找 iPhone / iPad 的用户
  • 企业 IT / MDM 管理员
  • 无法使用 Find My 的受管设备用户
  • 需要通过命令行排查蓝牙设备信号的技术人员
03

配置要求

  • macOS 13 或更高版本
  • 需要为运行该工具的终端应用授予蓝牙权限:System Settings > Privacy & Security > Bluetooth
  • 目标设备必须开启蓝牙并处于可探测或可连接范围内
  • 若从源码构建,需要安装 Xcode Command Line Tools 中的 Swift 工具链
  • 无需第三方依赖
  • 下载的 Release 二进制未签名,需要手动移除 macOS quarantine 属性
  • 室内有效范围通常约 10-20 米,隔墙、金属柜、人体遮挡会显著影响信号
04

适用场景

  • 在 Find My 被 MDM 禁用或不可用时,通过蓝牙信号寻找附近设备
  • 在房间、办公室或实验室内定位遗失的 iPhone / iPad
  • 通过 RSSI 趋势判断设备距离是变近还是变远
  • 用 --sound 模式通过点击频率变化进行“听觉寻物”
  • 列出 macOS 已配对蓝牙设备及地址用于排查
  • 录屏演示时使用 --redact 隐藏蓝牙地址和部分设备名称
05

部署与配置

  • 确认系统为 macOS 13 或更高版本
  • 从 GitHub Releases 下载 findphone-macos-universal.tar.gz
  • 解压文件:tar -xzf findphone-macos-universal.tar.gz
  • 由于二进制未签名,执行:xattr -dr com.apple.quarantine findphone
  • 运行帮助命令验证安装:./findphone --help
  • 可选:将 findphone 移动到 PATH 中,例如 ~/bin/findphone
  • 如需源码构建,安装 Xcode Command Line Tools 后执行:swift build -c release
  • 源码构建后复制可执行文件:cp .build/release/findphone ~/bin/findphone
  • 如需 universal arm64 + x86_64 构建,可执行:./scripts/build-universal.sh dist
06

风险与注意事项

  • 项目未声明许可证,商业使用、分发或集成前需要谨慎确认授权
  • Release 二进制未签名,用户需要手动解除 macOS quarantine,企业环境可能受安全策略限制
  • 只能提供距离趋势,不能给出方向或精确位置
  • 不能让设备响铃,无法替代 Find My 的完整功能
  • 蓝牙 RSSI 容易受墙体、金属、人体、设备姿态影响,测量结果可能波动较大
  • 只能查找蓝牙开启且在范围内的设备
  • BLE 广播地址可能轮换,部分设备名称只在少量广播包中出现,发现过程可能不稳定
  • --list 即使配合 --redact 也不适合公开录屏,因为仍需显示可用于选择目标的名称
  • 需要终端蓝牙权限,权限缺失会导致无法正常工作

历史记录

热榜历史快照

2026-08-07 第13名 新收录 · github_search
2026-08-06 第26名 新收录 · github_search