For the complete documentation index, see llms.txt. This page is also available as Markdown.

Device.subscribeLocation

函数式 API startUpdateLocation也可以这样使用同样的功能。

功能说明

持续检测设备位置的变化,每当位置发生变化时 onEvent 会执行回调。需要通过返回的 cleanup 函数取消订阅。 timeInterval由于系统影响,可能会比指定值更长。

如果没有位置权限, onError 在回调中 StartUpdateLocationPermissionError(GetCurrentLocationPermissionError会传入与其相同的类) Device.subscribeLocation.getPermission() / Device.subscribeLocation.openPermissionDialog()可以用来确认并请求权限。

类型

Device.subscribeLocation(params: StartUpdateLocationEventParams): () => void;

Params

type StartUpdateLocationEventParams = {
  onEvent: (location: Location) => void;
  onError: (error: unknown) => void;
  options: {
    accuracy: Accuracy;
    /** 位置更新的最小周期(ms)。 */
    timeInterval: number;
    /** 检测位置变化的距离(m)。 */
    distanceInterval: number;
  };
};

Response

用于取消订阅的 cleanup 函数(() => void)作为返回值。

错误

错误是 onError 会作为类实例传递给回调 — error instanceof StartUpdateLocationPermissionError来识别。该类可在 @apps-in-toss/web-framework中导入。

错误类
说明

StartUpdateLocationPermissionError

表示位置更新权限被拒绝。 Device.subscribeLocation.openPermissionDialog()可以重新请求。

示例代码

这有帮助吗?