# React Native 与 Expo (https://talivia.com/zh-CN/docs/mobile-analytics/react-native)



使用 `@talivia/react-native` 追踪通过 React Native 或 Expo 构建的原生 iOS 与 Android 应用。Expo Web 请使用 [Expo Web 安装指南](https://talivia.com/zh-CN/docs/installation-guides/expo)。

## 安装 [#安装]

```sh
npm install @talivia/react-native
```

Expo 项目还需安装存储和 UUID 适配器：

```sh
npx expo install @react-native-async-storage/async-storage expo-crypto
```

## 初始化与追踪 [#初始化与追踪]

```tsx
import AsyncStorage from '@react-native-async-storage/async-storage';
import * as Crypto from 'expo-crypto';
import { Platform } from 'react-native';
import { Talivia } from '@talivia/react-native';

const analytics = new Talivia({
  websiteId: 'YOUR_WEBSITE_UUID',
  host: 'https://talivia.com',
  hostname: 'example.com', // 使用网站域名，共享同一个工作区
  platform: Platform.OS === 'ios' ? 'ios' : 'android',
  storage: AsyncStorage,
  uuid: prefix => `${prefix}_${Crypto.randomUUID()}`,
});

await analytics.init();
await analytics.screen('Home');
await analytics.track('signup_completed', { plan: 'pro' });
await analytics.identify('your-stable-user-id');
// 退出登录时：await analytics.reset();
```

在 React Navigation 或 Expo Router 的导航变化回调中调用 `screen()`。仅在操作成功后调用 `track()`。原生 React Native 项目应提供适合自身应用的存储适配器和安全 UUID 生成器；运行环境支持 `crypto.randomUUID` 或 `crypto.getRandomValues` 时，无需显式提供 UUID 适配器。

仅在用户同意采集时初始化。网络恢复后，如果需要在下一个应用事件发生前重试队列中的事件，可调用 `flush()`。重试队列仅保存在内存中，最多容纳 100 个事件。

使用与网站相同的 Website ID 和域名，即可在 Talivia 工作区查看两种来源。稳定 ID 一致时，`identify()` 可关联已知账户身份记录；当前跨设备漏斗仍按访客标识统计。安装归因和购买不会自动采集。请从后端发送已验证收入。

[查看 React Native 分析](https://talivia.com/zh-CN/mobile-app-analytics/react-native) · [查看包源代码](https://github.com/talivia-group/react-native)
