Apple Handoff 接力:Mac 唤起应用时 iPhone 为什么也会出现

2026-08-27
9494 分钟
...

这是 Apple 的 Handoff(接力) 功能,属于 Continuity 连续互通 体系的一部分。Mac 端有应用启动时,系统会把当前 App 的活动上下文通过 iCloud 推送到其他登入同一 Apple ID 的苹果设备,iPhone 锁屏左下角弹出对应图标,点击可从刚才的位置继续。

三个触发条件(缺一不可)

条件作用
同 Apple ID身份一致,知道"接力给谁"
蓝牙开启BLE 心跳,用于发现附近设备
WiFi / 网络可达实际数据走 iCloud 传输

任何一项关闭都不会触发。Mac 端和 iPhone 端都要满足。

底层原理

把它类比成 React 应用的状态同步:

Mac                    iCloud                    iPhone
┌──────────┐   序列化 ┌────────┐    反序列化    ┌──────────┐
App 状态 │ ──────► │ 状态包 │ ──────────► │ 还原状态
└──────────┘          └────────┘              └──────────┘
     │ ▲
     └──── BLE 广播"我在这" ───────────────►
仅发现机制

三层机制:

  • BLE 发现层:蓝牙低功耗只做"心跳广播",告诉附近同账号设备"我刚有活动",并不传输数据
  • NSUserActivity 序列化:应用把当前 activity 打包(activityType + userInfo + webpageURL),相当于 JSON.stringify(state)
  • iCloud 加密传输:把状态包推到云端,另一台设备拉下来 JSON.parse 还原

iPhone 检测到匹配的 activityType 就在锁屏显示接力入口,用户点击即 hydrate。

涉及的相关能力(同一基础设施)

  • Universal Clipboard:跨设备剪贴板共享
  • Auto Unlock:Apple Watch 解锁 Mac
  • AirDrop 接力:iPhone 来电在 Mac 上接听
  • Sidecar:iPad 作为 Mac 第二屏
  • Continuity Camera:iPhone 给 Mac 当摄像头

底层都是 BLE + iCloud + 同 Apple ID 这套基础设施的不同应用。

面试答题模板

这是 Apple 的 Handoff 接力,本质是跨设备的状态同步。触发需要同 Apple ID + 蓝牙 + 网络三件套。原理上蓝牙负责发现、iCloud 负责传输、应用通过 NSUserActivity API 把自己当前状态序列化上传,另一台设备的同款 App 拉到后还原。Continuity 的其他能力底层都是这一套基础设施的不同应用。

关闭方法(如果不想被打扰)

系统设置 → 通用 → 隔空播放与接力 → 关闭"接力"(macOS Monterey+ 路径,不同版本略有差异)

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
mac2025-09-23
mac解决 Telegram无法连接
问题描述: 1、macOS上使用了 V2ray 客户端 或 ClashX 客户端,能访问 Google,但打开 Telegram 后会一直卡在 Telegram is connecting to Proxy 界面,Telegram 无法同步消息。 为什么telegram一直在转圈加载呢,因为 mac telegram客户端默认不遵从系统代理,跟 windows telegram客户端不一样,mac需进行下面代理配置 解决方案:重新配置t...
学习
mac2025-07-06
Mac系统 .zprofile、.zshrc 和 .bash_profile 区别及作用
在 macOS 中,.zprofile、.zshrc 和 .bash profile 是三个重要的配置文件,分别用于不同的 shell 和场景。下面详细介绍它们的作用和区别: 1. 作用 : 主要用于 Zsh shell 的全局配置。 它在每次用户登录时都会被读取。 通常用于设置环境变量、路径和其他全局配置。 适用于所有 Zsh shell 的启动过程。 示例内容 : 2. 作用 : 是 Zsh shell 的用户级配置文件。 它在每次...
学习
mac2025-06-02
tar 提取文件时提示 Ignoring unknown extended header keyword
在 Linux 上使用 tar 提取文件时出现下列提示: 当 tar 文件在 macOS 上创建,在 Linux 上提取时,就会发生这种情况。原因是 macOS 默认使用 "),而 Linux 默认使用 。BSD tar 在创建归档文件的同时加入了一些 macOS 文件特有的扩展属性,如 ,这些信息不被 GNU tar 所识别。 也就是说,BSD tar 在保留文件特殊属性上比 GNU tar 更全面。然而这些属性可能会导致 GNU t...
学习
mac2025-05-08
Homebrew 配置 brew install 国内镜像源指南
本文会提供详细的配置步骤,通过国内镜像源加速 Homebrew 的 操作。🎯 正文 为什么需要配置国内镜像源? 在国内,使用 Homebrew 时,由于网络原因,往往会遭遇下载速度极慢或者根本无法连接的问题。😓 这不仅浪费时间,还可能影响工作进度。幸运的是,Homebrew 支持自定义镜像源,因此我们可以通过设置国内镜像来提高下载速度。 通过设置 国内镜像源 ,你可以在 brew install 时享受到更快的下载速度。💨 配置步...
学习
mac2024-02-27
缩小 macOS 菜单栏各个图标之间的间距
新款的 Macbook 都有刘海,现在有一些软件可以隐藏刘海,但是缩小了一点屏幕的高度,当年苹果说这点高度是他们“送”给用户的。还有一些小工具,可以隐藏部分图标,但是如果要使用隐藏的图标,那就要两步动作。 今天看到一篇 ,可以缩小每个图标之间的间隔,这样就可以显示更多的图标,如果图标非常多,那还是会被刘海挡住的,我们先来看看效果。这是 自带的命令,无需安装第三方工具。 这是缩小图标间距之前,看不到 notion 的图标: 这是缩小图标间...
学习
mac2024-02-19
macOS查看并修改终端显示名称以及主机名和计算机名
之前通过“系统设置 通用 关于本机”修改了“名称”,本以为会全盘修改所有名称,但是在终端却显示成“192”,这难免看起来会有些奇怪。 可以通过ps(Prompt Sign)命令查看终端用的是Bash Shell还是Zsh SHell,具体看终端头部显示的是“bash”还是“zsh”,然后修改“/etc/zshrc”或“/etc/bashrc”文件,但是这个语法看得一头雾水,什么“n表示用户名,m表示主机名”,还有“h代表主机名,u代表用...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录