Skip to content

位置与生物识别

Mini App 提供位置信息获取和生物识别认证功能。

LocationManager

位置管理器,用于获取用户的地理位置。通过 Telegram.WebApp.LocationManager 访问。Bot API 8.0+

属性

属性类型描述
isInitedBoolean位置管理器是否已初始化
isLocationAvailableBoolean设备是否支持位置服务
isAccessRequestedBoolean是否已请求位置权限
isAccessGrantedBoolean位置权限是否已授予

方法

init

javascript
Telegram.WebApp.LocationManager.init(callback)

初始化位置管理器。

参数类型必填描述
callbackFunction初始化完成回调

getLocation

javascript
Telegram.WebApp.LocationManager.getLocation(callback)

获取当前位置。

参数类型必填描述
callbackFunction回调函数,参数为 LocationData 对象,失败时为 null

openSettings

javascript
Telegram.WebApp.LocationManager.openSettings()

打开位置权限设置页面,引导用户授权。

示例

javascript
const locationMgr = Telegram.WebApp.LocationManager;

locationMgr.init(() => {
  if (locationMgr.isLocationAvailable) {
    locationMgr.getLocation((location) => {
      if (location) {
        console.log(`纬度: ${location.latitude}`);
        console.log(`经度: ${location.longitude}`);
        console.log(`精度: ${location.accuracy}m`);
      } else {
        console.log('无法获取位置');
      }
    });
  } else {
    console.log('设备不支持位置服务');
  }
});

LocationData

位置数据对象,由 LocationManager.getLocation() 返回。

字段类型描述
latitudeFloat纬度
longitudeFloat经度
altitudeFloat | null海拔高度(米),不可用时为 null
courseFloat | null移动方向(0-360°),不可用时为 null
speedFloat | null移动速度(m/s),不可用时为 null
horizontal_accuracyFloat | null水平精度(米)
vertical_accuracyFloat | null垂直精度(米)
course_accuracyFloat | null方向精度(度)
speed_accuracyFloat | null速度精度(m/s)

BiometricManager

生物识别管理器,提供指纹和面部识别认证功能。通过 Telegram.WebApp.BiometricManager 访问。Bot API 7.2+

属性

属性类型描述
isInitedBoolean管理器是否已初始化
isBiometricAvailableBoolean设备是否支持生物识别
biometricTypeString生物识别类型:"finger"(指纹)、"face"(面部)或空字符串
isAccessRequestedBoolean是否已请求生物识别权限
isAccessGrantedBoolean生物识别权限是否已授予
isBiometricTokenSavedBoolean是否已保存生物识别 token
deviceIdString设备唯一标识

方法

init

javascript
Telegram.WebApp.BiometricManager.init(callback)

初始化生物识别管理器。

参数类型必填描述
callbackFunction初始化完成回调

requestAccess

javascript
Telegram.WebApp.BiometricManager.requestAccess(params, callback)

请求生物识别权限。

参数类型必填描述
paramsObject参数
params.reasonString请求权限的原因描述
callbackFunction回调函数,参数 (granted)

authenticate

javascript
Telegram.WebApp.BiometricManager.authenticate(params, callback)

发起生物识别认证。

参数类型必填描述
paramsObject参数
params.reasonString认证原因描述
callbackFunction回调函数,参数 (authenticated, token)

updateBiometricToken

javascript
Telegram.WebApp.BiometricManager.updateBiometricToken(token, callback)

更新存储在设备上的生物识别 token。

参数类型必填描述
tokenString新的 token 值,传空字符串可删除
callbackFunction回调函数,参数 (updated)

openSettings

javascript
Telegram.WebApp.BiometricManager.openSettings()

打开生物识别权限设置页面。

示例

javascript
const bioMgr = Telegram.WebApp.BiometricManager;

bioMgr.init(() => {
  if (!bioMgr.isBiometricAvailable) {
    console.log('设备不支持生物识别');
    return;
  }

  console.log('生物识别类型:', bioMgr.biometricType);

  // 请求权限
  bioMgr.requestAccess({ reason: '用于身份验证' }, (granted) => {
    if (granted) {
      // 发起认证
      bioMgr.authenticate({ reason: '请验证身份' }, (authenticated, token) => {
        if (authenticated) {
          console.log('认证成功');
          if (token) {
            console.log('Token:', token);
          }
        } else {
          console.log('认证失败');
        }
      });
    }
  });
});

// 保存 token 以供下次使用
bioMgr.updateBiometricToken('my-secure-token', (updated) => {
  if (updated) {
    console.log('Token 已保存');
  }
});