Skip to content

获取设备 ID

获取当前设备的唯一标识符。如果不存在则自动生成并保存。

基本用法

javascript
const deviceId = sdk.getDeviceId();
console.log('设备 ID:', deviceId);
// 输出示例: "550e8400-e29b-41d4-a716-446655440000"

方法说明

getDeviceId() - 获取设备 UUID

获取当前设备的唯一标识符。如果不存在则自动生成并保存。

参数:

返回值:

typescript
string  // 设备 UUID(格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

示例:

javascript
const deviceId = sdk.getDeviceId();
console.log('设备 ID:', deviceId);
// 输出示例: "550e8400-e29b-41d4-a716-446655440000"

使用场景

1. 显示设备信息

javascript
function UserProfile() {
  const deviceId = sdk.getDeviceId();
  
  return (
    <div>
      <h1>用户信息</h1>
      <p>设备 ID: {deviceId}</p>
    </div>
  );
}

2. 调试和日志记录

javascript
// 在错误日志中包含设备 ID
try {
  await sdk.reportSession({ urlPath: '/dashboard' });
} catch (error) {
  const deviceId = sdk.getDeviceId();
  console.error('会话上报失败', {
    error: error.message,
    deviceId: deviceId,
    timestamp: new Date().toISOString()
  });
}

3. 用户支持

javascript
// 在用户反馈中包含设备 ID
function submitFeedback(message) {
  const deviceId = sdk.getDeviceId();
  const feedback = {
    message: message,
    deviceId: deviceId,
    userAgent: navigator.userAgent,
    timestamp: Date.now()
  };
  // 发送反馈到服务器
  sendFeedbackToServer(feedback);
}

React 示例

javascript
import { useState, useEffect } from 'react';
import DingYueSDK from 'dingyue-web-sdk';

const sdk = new DingYueSDK({
  baseUrl: 'https://mobile.dingyue.io',
  appId: 'your-app-id',
  apiKey: 'your-api-key'
});

function App() {
  const [deviceId, setDeviceId] = useState('');

  useEffect(() => {
    // 获取设备 ID
    const id = sdk.getDeviceId();
    setDeviceId(id);
  }, []);

  return (
    <div>
      <h1>设备信息</h1>
      <p>设备 ID: {deviceId}</p>
    </div>
  );
}

Vue 示例

vue
<template>
  <div>
    <h1>设备信息</h1>
    <p>设备 ID: {{ deviceId }}</p>
  </div>
</template>

<script>
import DingYueSDK from 'dingyue-web-sdk';

const sdk = new DingYueSDK({
  baseUrl: 'https://mobile.dingyue.io',
  appId: 'your-app-id',
  apiKey: 'your-api-key'
});

export default {
  data() {
    return {
      deviceId: ''
    };
  },
  mounted() {
    // 获取设备 ID
    this.deviceId = sdk.getDeviceId();
  }
};
</script>

注意事项

  1. 自动生成和保存

    • 设备 ID 会自动生成并保存到 localStorage
    • 如果设备 ID 不存在,SDK 会自动生成一个新的 UUID
    • 设备 ID 存储在 localStorage 中,键名为 dingyue_device_id
  2. 持久性

    • 同一浏览器同一域名下,设备 ID 保持不变
    • 清除浏览器数据后,设备 ID 会重新生成
    • 不同域名下的设备 ID 是独立的
  3. 格式

    • 设备 ID 是标准的 UUID 格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    • 如果无法生成 UUID,SDK 会使用设备指纹作为备选方案
  4. 无需登录

    • 获取设备 ID 不需要用户登录
    • 可以在 SDK 初始化后立即调用
  5. 自动使用

    • SDK 会在所有 API 请求中自动包含设备 ID(通过 X-USER-ID header)
    • 无需手动传递设备 ID

与设备信息的关系

SDK 在认证请求(注册、登录、OAuth)时会自动添加设备信息(uniqueUser 对象),其中包含:

  • 操作系统版本
  • 设备类型
  • 语言设置
  • 网络连接信息
  • 设备 ID

这些信息会自动添加到请求中,无需手动处理。