You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无互联网环境下唤醒锁屏手机(适配iOS与Android)

双平台(iOS/Android)本地局域网唤醒锁屏设备方案

针对你这种在澳洲偏远地区、无外网但有稳定本地局域网的场景,要实现本地服务器触发事件时唤醒锁屏手机,我整理了iOS和Android各自可行的落地方案,都是基于本地网络通信实现的,完全不依赖云端服务:

iOS 端方案

苹果系统对后台APP的限制比较严格,锁屏后普通的后台进程会被暂停,所以得借助官方提供的本地通信框架和后台权限:

  • Multipeer Connectivity 框架:这是苹果官方的局域网设备间通信工具,支持点对点或多设备组网。你可以让本地服务器(如果是iOS设备的话)或者服务器端实现Multipeer的服务端逻辑,客户端APP在后台开启监听。记得在Xcode的Background Modes里勾选「Uses Bluetooth LE accessories」,这样能延长后台监听的时长。当服务器发送特定触发指令时,客户端调用UNUserNotificationCenter发送本地通知——只要用户开启了通知权限,这个通知就能唤醒锁屏设备。
  • BLE 外设监听模式:如果本地服务器能模拟BLE外设(比如发送特定UUID的iBeacon信号,或者通过BLE特征值传递指令),客户端APP开启后台BLE扫描权限(同样要在Background Modes里勾选对应选项)。当扫描到服务器的BLE信号变化时,客户端就能触发本地通知唤醒屏幕。这个方案的稳定性相对更高,因为iOS对BLE后台扫描的权限限制更宽松。
  • ❌ 注意:iOS不支持传统的网络唤醒(WOL),因为锁屏后设备网卡会休眠,无法接收WOL魔术包,这个路子走不通。

Android 端方案

Android的后台限制相对灵活一些,只要配置好权限和后台保活机制,可选的方案更多:

  • 本地Socket后台监听:客户端APP启动一个Foreground Service(Android 8+必须用前台服务,不然容易被系统杀掉),在Service里绑定TCP/UDP Socket监听本地服务器的指定端口。当服务器发送触发指令时,Service通过NotificationManager发送通知,还可以给通知设置setFullScreenIntent,直接唤醒屏幕并亮屏。记得要申请WAKE_LOCK权限(Android 12+还要申请POST_NOTIFICATIONS权限),同时在WiFi设置里开启「休眠时保持WiFi连接」,确保锁屏下网络不掉线。
  • BLE 中心模式扫描:和iOS类似,客户端作为BLE中心,后台扫描服务器的BLE设备。可以用WorkManager或者JobScheduler来调度扫描任务,确保锁屏下也能持续监听。当收到服务器发送的特定BLE数据时,触发通知唤醒设备。这个方案不需要依赖网络,适合WiFi不稳定的场景。
  • Wake-on-LAN(WOL):如果你的Android设备硬件支持(大部分现代安卓设备都支持,需要在设备设置或BIOS里开启WOL功能),本地服务器可以发送WOL魔术包直接唤醒设备。前提是设备要保持WiFi连接(开启休眠时WiFi不掉线)或者连接有线网络,不然锁屏后网卡休眠就收不到包了。

通用注意事项

  • 权限务必配全:双平台都要提前申请对应权限,比如iOS的本地网络权限、通知权限、蓝牙权限;Android的网络权限、通知权限、唤醒锁权限、蓝牙权限等,一定要在APP里引导用户开启,不然功能会失效。
  • 后台保活是关键:不管iOS还是Android,系统都会优先杀掉后台闲置进程,所以要尽量利用官方提供的后台机制(iOS的Background Modes、Android的Foreground Service/WorkManager)来维持监听状态。
  • 本地环境测试:一定要在完全断开外网的环境下测试,确保所有通信都走本地局域网,避免依赖云端服务导致在偏远地区失效。

内容的提问来源于stack exchange,提问作者Andrew Lipscomb

火山引擎 最新活动