---
name: "onDeviceOnlineStatusUpdate"
mode: "kit"
versionRequirements:
  - { name: "DeviceKit", version: "1.2.6" }
  - { name: "@ray-js/ray", version: "0.6.23" }
platform:
  - "iOS"
  - "Android"
async: true
title: "onDeviceOnlineStatusUpdate - 设备上下线状态变更"
summary: "onDeviceOnlineStatusUpdate 用于监听设备在线状态的实时变化，是获取设备上下线状态的推荐方式。回调参数包含：online（设备是否在线）、deviceId（设备 id）、onlineType（在线类型，支持 Wi-Fi/局域网/蓝牙 LE/蓝牙 Mesh 等多种连接方式的位标志）。使用前必须先调用 registerDeviceListListener 注册设备监听，否则无法收到事件。适用场景：实时感知设备上下线、根据在线状态更新 UI、区分不同连接类型的在线情况。需引入 DeviceKit，版本 >=1.2.6。如需一次性读取当前在线状态，可使用 getDeviceInfo 的 isOnline / isCloudOnline / isLocalOnline 字段。"
question:
  - "如何获取设备在线状态"
---

## onDeviceOnlineStatusUpdate

> [VERSION] DeviceKit >= 1.2.6 | @ray-js/ray >= 0.6.23

> [PLATFORM] iOS, Android

> ⚡ **支持 Promise 调用** — 不传 success / fail / complete 回调时，该方法返回 Promise。

### 描述

设备上下线状态变更

### 参数

`(listener: Function)`

| 参数 | 类型 | 必填 | 默认值 | 描述 |
| --- | --- | --- | --- | --- |
| `listener` | `(params: Online) => void` | 是 | - |  |

### 引用对象

##### `interface` Online

| 属性 | 类型 | 最低版本 | 描述 |
| --- | --- | --- | --- |
| `online` | `boolean` | `1.2.6` | 在线状态 |
| `deviceId` | `string` | `1.2.6` | 设备 id |
| `onlineType` | `number` | `1.2.6` | 设备网络在线类型，位运算方式表示，多种在线状态复合，定义如下： bit 0 (1 << 0): Wi-Fi online，(云端在线 \|\| 局域网在线)，若只想判断云端在线，建议使用 bit:7 bit 1 (1 << 1): Local online，局域网在线 bit 2 (1 << 2): BLE online，蓝牙在线 bit 3 (1 << 3): BLEMesh online，蓝牙mesh在线 bit 4 (1 << 4): beacon online，beacon在线 bit 5 (1 << 5): Dayu online，大禹在线 bit 6 (1 << 6): System BT Online，系统蓝牙在线 bit 7 (1 << 7): Cloud online，云端在线 bit 8 (1 << 8): Matter online，Matter 本地在线 |


### 示例代码

#### 基础调用

```tsx
import { device } from '@ray-js/ray'

const { onDeviceOnlineStatusUpdate } = device;

onDeviceOnlineStatusUpdate((res) => {
  console.log('onDeviceOnlineStatusUpdate', res);
});
```
