# @expofp/react-native-efp-crowdconnected 中文文档

规范地址：https://npmcn.com/package/%40expofp/react-native-efp-crowdconnected/

版本：0\.1\.14
npm 元数据更新时间：2026-11-11T12:04:42.932Z
中文译文更新时间：2026-11-14T05:42:57.308Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40expofp/react-native-efp-crowdconnected
原文对照：https://npmcn.com/package/%40expofp/react-native-efp-crowdconnected/?lang=original
项目主页：https://github.com/expofp/react-native-efp-crowdconnected#readme
源码仓库：https://github.com/expofp/react-native-efp-crowdconnected

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：15 MB，204 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：react \*，react-native \*
- 首次发布：2025-11-05T16:21:54.519Z
- 最新版本发布：2026-11-11T12:04:42.730Z
- 近 30 天下载量：8967（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：15（近 12 个月 13 个）

## 中文简介

环绕 CrowdConnected SDK 的 ExpoFP 原生包装

## 安装

```sh
npm install @expofp/react-native-efp-crowdconnected
```

也可以使用：`pnpm add @expofp/react-native-efp-crowdconnected`、`yarn add @expofp/react-native-efp-crowdconnected`、`bun add @expofp/react-native-efp-crowdconnected`

## README

# @ expop/ react- native- efp- 人群连接

用于CrowdConnected定位跟踪和室内定位服务的回放原生涡轮模块. 提供跨平台访问GPS,IPS(室内定位系统),并基于蓝牙在iOS和Android上的定位.

[![npm](https://img.shields.io/npm/v/@expofp/react-native-efp-crowdconnected)](https://www.npmjs.com/package/@expofp/react-native-efp-crowdconnected) [![npm downloads](https://img.shields.io/npm/dm/@expofp/react-native-efp-crowdconnected)](https://www.npmjs.com/package/@expofp/react-native-efp-crowdconnected) [![license](https://img.shields.io/npm/l/@expofp/react-native-efp-crowdconnected)](https://npmcn.com/package/%40expofp/react-native-efp-crowdconnected/LICENSE)

## 特征

-   📍 **多位置支持**:全球定位系统、室内定位和蓝牙
-   📱 **跨平台**: 原生iOS(Swift)和Android(Kotlin)实施
-   ⚡ **反应原生新建筑**: 建为最佳性能的涡轮模块
-   🔔 **基于事件**: 通过事件听众实时更新位置
-   🔄 **背景支持**: 可选背景位置更新
-   🎯 **标题跟踪**: 编译/载有信息
-   📦 **先输入脚本**: 带有生成类型定义的完整类型安全

## 所需资源

-   Android 7.0+ (API 级别 24+)
-   iOS 16.0+ (被捆绑的"人群"所需要) SDK

## 安装

```bash
npm install @expofp/react-native-efp-crowdconnected
# or
yarn add @expofp/react-native-efp-crowdconnected
```

### iOS系统

```bash
cd ios && pod install
```

你的软件主机 `Info.plist` 必须声明相关位置/蓝牙使用说明 `UIBackgroundModes` 条目。 见 [`example/ios/ExpofpCrowdconnectedExample/Info.plist`](https://npmcn.com/package/%40expofp/react-native-efp-crowdconnected/example/ios/ExpofpCrowdconnectedExample/Info.plist) 用于工作配置.

### 机器人

Gradle 自动解决依赖关系. 拥挤的SDK AARs(`net.crowdconnected.android.{core,background,geo,ips}`,从CrowdConnect's Maven寄存器中取出)通过Gradle的表单并购提供前景服务声明和以下权限. 您不需要在您的主机应用程序中声明 `AndroidManifest.xml`数字 : `INTERNET`, (中文(简体) ), `ACCESS_FINE_LOCATION`, (中文(简体) ), `ACCESS_COARSE_LOCATION`, (中文(简体) ), `FOREGROUND_SERVICE`, (中文(简体) ), `FOREGROUND_SERVICE_LOCATION`, (中文(简体) ), `BLUETOOTH_SCAN`, (中文(简体) ), `BLUETOOTH_CONNECT`和遗产 `BLUETOOTH` 编号 : `BLUETOOTH_ADMIN` (单位:千美元)`maxSdkVersion=30`) (中文(简体) ).

如果你准备好了 `isBackgroundUpdateEnabled: true`,您的主机应用程序 **必须** 并宣布:

```xml
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
```

`ACCESS_BACKGROUND_LOCATION` 无法从Android 11+上的标准运行时间提示给予;系统将用户重定向到应用程序的设置屏幕上,在屏幕上必须选择"Allow all the time".

## 快速启动

```typescript
import { CrowdConnectedLocationProvider } from '@expofp/react-native-efp-crowdconnected';

// Initialize
await CrowdConnectedLocationProvider.setup({
  appKey: 'your-app-key',
  clientId: 'your-client-id',
  clientSecret: 'your-client-secret',
  navigationType: 'all', // 'all' | 'GEO' | 'IPS'
  isBackgroundUpdateEnabled: false,
  isBluetoothEnabled: true,
  isHeadingEnabled: true,
});

// Listen to location updates
const unsubscribe = CrowdConnectedLocationProvider.onLocationChange((position) => {
  console.log('Location:', position);
  // { lat: number, lng: number, x?: number, y?: number, z?: string | number, angle?: number }
});

// Listen to errors
const unsubscribeError = CrowdConnectedLocationProvider.onError((error) => {
  console.error('Location error:', error);
});

// Start tracking
CrowdConnectedLocationProvider.startUpdatingLocation();

// Check if location tracking is active
const isUpdating = await CrowdConnectedLocationProvider.isLocationUpdating();

// Stop tracking
CrowdConnectedLocationProvider.stopUpdatingLocation();

// Cleanup
unsubscribe();
unsubscribeError();
```

## API 参考

### `setup(settings: ExpoFpLocationSettings): Promise<ExpoFpProviderInfo>`

以配置初始化 CrowdConnected SDK.

**参数:**

-   `appKey` - 人群连接应用程序密钥
-   `clientId` - 人群连接客户端ID
-   `clientSecret` - 拥挤的客户秘密
-   `navigationType` - 定位类型: `'all'` (GPS + IPS ), `'GEO'` (仅限一般服务费用), `'IPS'` (仅室内)
-   `isBackgroundUpdateEnabled` - 启用背景位置更新
-   `isBluetoothEnabled` - 启用以蓝牙为基础的定位
-   `isHeadingEnabled` - 启用指南针/标题跟踪
-   `aliases?` - 自定义位置别名(可选)

**回返情况:** 承诺决心 `ExpoFpProviderInfo` (单位:千美元)`{ deviceId?, isLocationUpdating }`(中文(简体) )

* * *

### `startUpdatingLocation(): Promise<ExpoFpProviderInfo>`

开始追踪位置.

* * *

### `stopUpdatingLocation(): Promise<ExpoFpProviderInfo>`

停止追踪位置.

* * *

### `isLocationUpdating(): Promise<ExpoFpProviderInfo>`

返回当前提供者状态.

* * *

### `onLocationChange(callback: (position: ExpoFpPosition) => void): Unsubscribe`

订阅位置更新 .

**位置对象 :**

```typescript
{
  lat?: number;      // Latitude
  lng?: number;      // Longitude
  x?: number;        // X coordinate (indoor)
  y?: number;        // Y coordinate (indoor)
  z?: string|number; // Z coordinate (floor/level)
  angle?: number;    // Heading in degrees
}
```

**回返情况:** 取消订阅函数

* * *

### `onError(callback: (error: Error) => void): Unsubscribe`

订阅位置错误 .

**回返情况:** 取消订阅函数

## 模拟模式

模拟模式在设备上重放GPS/IPS路径而不进行物理运动. 模拟职位通过经常预算抵达 `onLocationChange` 听着.

```typescript
const simulationToken = '<signed JWT for the simulation session>';

// The SDK must already be started (startUpdatingLocation) before activating.
const unsubConnected = CrowdConnectedLocationProvider.onSimulationConnected(() => {
  console.log('Simulation connected');
});
const unsubDisconnected = CrowdConnectedLocationProvider.onSimulationDisconnected(() => {
  console.log('Simulation disconnected');
});
const unsubError = CrowdConnectedLocationProvider.onSimulationError((error) => {
  console.error('Simulation error:', error.message);
});

CrowdConnectedLocationProvider.activateSimulation(simulationToken);

// ...later
CrowdConnectedLocationProvider.deactivateSimulation();

// Cleanup
unsubConnected();
unsubDisconnected();
unsubError();
```

### `activateSimulation(token: string): void`

开始模拟会话 。 火灾和遗忘:结果通过 `onSimulationConnected` 编号 : `onSimulationError` 事件.

-   `token` - 为模拟会议签发的署名JWT(包括: `sid` 会话标识和 `exp` 索赔)
-   SDK必须已经通过 `startUpdatingLocation()`
-   再次调用它取代了本届会议
-   调用前取消模拟 `stopUpdatingLocation()` 当会话活动时

* * *

### `deactivateSimulation(): void`

停止活动模拟会话。 无会话活动时安全禁用 .

* * *

### `onSimulationConnected(callback: () => void): Unsubscribe`

模拟会话建立时起火.

* * *

### `onSimulationDisconnected(callback: () => void): Unsubscribe`

模拟会话结束后会起火.

* * *

### `onSimulationError(callback: (error: Error) => void): Unsubscribe`

模拟会话失败时起火( 如无效或过期的令牌) .

## 发展

### 设置

```bash
yarn install
yarn prepare
```

### 图标

-   `yarn lint` - 运行ESLint
-   `yarn typecheck` - 检查类型脚本
-   `yarn test` - 运行杰斯特测试
-   `yarn example ios` - 运行iOS实例应用程序
-   `yarn example android` - 运行Android实例应用程序
-   `yarn clean` - 清洁建筑文物

## 支助

-   📖 [文档](https://developer.expofp.com/)
-   🐛 [报告问题](https://github.com/expofp/react-native-efp-crowdconnected/issues)
-   💬 [讨论情况](https://github.com/expofp/react-native-efp-crowdconnected/discussions)

## 常见问题

### @expofp/react-native-efp-crowdconnected 是什么？

环绕 CrowdConnected SDK 的 ExpoFP 原生包装

### 如何安装 @expofp/react-native-efp-crowdconnected？

在项目目录运行 npm install @expofp/react-native-efp-crowdconnected，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（\*）、react-native（\*）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @expofp/react-native-efp-crowdconnected 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @expofp/react-native-efp-crowdconnected 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @expofp/react-native-efp-crowdconnected 可以商用吗？

@expofp/react-native-efp-crowdconnected 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @expofp/react-native-efp-crowdconnected 的下载量有多少？

根据 npm 官方下载统计，@expofp/react-native-efp-crowdconnected 在 2026/10/14 – 2026/11/12 这 30 天内被下载 8,967 次，日均约 299 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @expofp/react-native-efp-crowdconnected 还在维护吗？

最新版本 0\.1\.14 发布于 2026/11/11（2 天前）；至今共发布 15 个版本，其中过去 12 个月发布了 13 个；首次发布于 2025/11/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

