概述
优先使用这些平台 API,不要在插件里重复实现设备桥接。
- 包名:@quan-erp/shared-frontend-core
- 通过 .instance 访问系统服务
- Platforms 负责选择原生或 Web 桥
TSXimport surface
1import {
2 Camera,
3 Clipboard,
4 Network,
5 Platforms,
6 PluginAPI,
7 PluginAssets,
8 RequestDto,
9 ResponseDto,
10 toast,
11} from "@quan-erp/shared-frontend-core";单例模式
多数硬件与系统服务是单例 — 使用 .instance。
TSXaccess pattern
1import { Camera, Network, Platforms } from "@quan-erp/shared-frontend-core";
2
3const camera = Camera.instance;
4const network = Network.instance;
5
6const online = network.isOnline();
7const onMobile = Platforms.isMobile();
8const onDesktop = Platforms.isDesktop();
9const onWeb = Platforms.isWeb();
10
11// Always reuse .instance — do not `new Camera()`TSXReact: branch by platform
1import { useMemo } from "react";
2import { Platforms } from "@quan-erp/shared-frontend-core";
3
4export function CaptureButton() {
5 const label = useMemo(() => {
6 if (Platforms.isMobile()) return "Take photo";
7 if (Platforms.isDesktop()) return "Capture / upload";
8 return "Upload image";
9 }, []);
10
11 return <button type="button">{label}</button>;
12}目录
Browse by category in this section.
- Sensors
- Media & hardware
- Connectivity
- Storage
- System
- Utilities
规则
权限 → start → 卸载时 stop。
- 从 @quan-erp/shared-frontend-core 导入
- 需要时先 requestPermission
- 卸载时停止 sensor / stream
TSXcleanup template
1import { useEffect } from "react";
2import { Accelerometer } from "@quan-erp/shared-frontend-core";
3
4useEffect(() => {
5 const accel = Accelerometer.instance;
6 accel.start((data) => {
7 console.log(data);
8 });
9 return () => {
10 accel.stop();
11 };
12}, []);