@daily-co/react-native-daily-js

中文文档
0.90.0发布于 2026/11/07BSD-2-ClauseTypeScriptCommonJS近 30 天下载 12.5万

使用 Daily 调用视频调用本地文库

中文使用文档
文档目录8 节
  1. 最低OS/SDK版本
  2. 安装
  3. iOS系统
  4. 机器人
  5. 使用量
  6. 对应用程序执行者的各类考虑
  7. 参与者数
  8. 设备方向

反应-本土-每日-js

Daily JavaScript Resact Introduct图书馆.

最低OS/SDK版本

此软件包对您的项目所能支持的OS/SDK版本提出了一些限制 :

  • iOS系统- 部署目标
  • 机器人数字 : minSdkVersion 第24条

安装

安装 react-native-daily-js 及其同伴依赖关系:

npm i @daily-co/react-native-daily-js @react-native-async-storage/async-storage@^1.15.7 react-native-background-timer@^2.3.1 react-native-get-random-values@^1.9.0
npm i --save-exact @daily-co/[email protected]

然后,遵循以下步骤,在每个平台上设置你的本土项目. 请注意,这些步骤假设你使用的是支持自動連接(QQ 60)的React Industrial版本.

如果您的项目使用 博览,使用 config-plugin-rn-daily-js 配置软件包 而不是以下步骤.

iOS系统

更新 platform 在你身边 Podfile,从 @daily-co/react-native-webrtc 仅在iOS 12及以上工作:

platform :ios, '12.0'

如果你愿意的话 发送屏幕共享 从iOS,它只工作 iOS 14 及以上各点。 因此,在这种情况下,请切换使用iOS 14.0而不是iOS 12.0.

然后运行 :

npx pod-install

接下来,你需要更新您的项目 Info.plist 添加三行新键如下:

  • NSCameraUsageDescription
  • NSMicrophoneUsageDescription
  • UIBackgroundModes

对于前两个密钥的值,提供用户化的字符串,解释你的应用程序为什么要求相机和麦克风访问. 请注意, 没有这些应用程序, 应用程序只会静静地崩溃 .

UIBackgroundModes 处理方式略有不同,并将决定一个阵列。 对于第一个项目,请指定值 voip。这可以确保当您的应用程序被发送到背景时,音频会不间断地继续 .

要通过 Xcode 添加新行,请打开 Info.plist 并增加以下三行:

密钥类型数值
隐私 - 相机使用描述字符串"每日游乐场需要相机进入工作"
隐私 - 麦克风使用描述字符串"每日游乐场需要麦克风进入工作"
所需的背景模式阵列1项
-- -- > 项目0字符串App提供IP服务之声

如果您查看了原始文件内容 Info.plist应该是这样的

<dict>
    ...
    <key>NSCameraUsageDescription</key>
    <string>Daily Playground needs camera access to work</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>Daily Playground needs microphone access to work</string>
    <key>UIBackgroundModes</key>
    <array>
        <string>voip</string>
    </array>
    ...
</dict>

IOS 上的屏幕共享

要使用iOS上的屏幕共享功能,需要做几个人工步骤来设置 Daily's 反应原生屏幕共享扩展框架 (已包括在 react-native-daily-js) (中文(简体) ). 请参考其读取内容详细.

机器人

添加以下内容到 AndroidManifest.xml数字 :

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

<application>
  // ...
  <service android:name="com.daily.reactlibrary.DailyOngoingMeetingForegroundService" android:foregroundServiceType="camera|microphone"/>
</application>

注:上文, android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION 只有想要进行屏幕共享时才需要.

更新您的 minSdkVersion 在您的顶级 build.gradle 文件 :

minSdkVersion = 24

(如果遇到任何问题,请参考 Github 问题 喜欢 这些,或 react-native-webrtc 安装文件让你经历一个更复杂的过程 上文阐述的较简单程序似乎在以 " 土著CLI " 为基础的 " 香草现代反应 " 结构中起作用.

使用量

react-native-daily-js 是反应原生对应物 daily-js,并且可以几乎一样的方式用于在您的应用程序中添加视频通话. 完整文档 react-native-daily-js (还有) daily-js)在这里可以找到。 。 。 .

import Daily from '@daily-co/react-native-daily-js';

// ...

// Start joining a call
const call = Daily.createCallObject();
call.join({ url: 'https://your-team.daily.co/allhands' });

// Listen for events signaling changes to participants or their audio or video.
// - 'participant-joined' and 'participant-left' are for remote participants only
// - 'participant-updated' is for the local participant as well as remote participants
const events: DailyEvent[] = [
  'participant-joined',
  'participant-updated',
  'participant-left',
];
for (const event of events) {
  call.on(event, () => {
    for (const participant of Object.values(call.participants())) {
      console.log('---');
      console.log(`participant ${participant.user_id}:`);
      if (participant.local) {
        console.log('is local');
      }
      if (participant.audio) {
        console.log('audio enabled', participant.audioTrack);
      }
      if (participant.video) {
        console.log('video enabled', participant.videoTrack);
      }
    }
  });
}
import { DailyMediaView } from '@daily-co/react-native-daily-js';

// ...

<DailyMediaView
  videoTrack={participant.videoTrack}
  audioTrack={participant.audioTrack}
  mirror={participant.local}
  zOrder={participant.local ? 1 : 0}
  style={someStyle}
/>;

请见此博客文章. 它专注于React Web,但大部分也应应用于你的React Introduct应用.

对应用程序执行者的各类考虑

参与者数

请注意,同时为众多参与者展示视频可以使用你手机的大量资源. 这可以让应用程序运行得更慢,使用更多的电池,特别是如果你使用更老的设备. 对于更大的会议,考虑一次只展示一些视频. 在未来的发行中, daily-js是因为 音轨订阅 API 将会被带到 react-native-daily-js,让您避免网络带宽成本 接收视频为非屏幕参与者.

设备方向

如果您想支持在电话中旋转您的电话, 建议您不要限制您的应用程序支持的方向( 即通过) Info.plist 或者说 AndroidManifest.xml) (中文(简体) ).

狦 为: 限制您的应用程序所支持的方向( 例如, 用于肖像) , 请注意, 默认情况下, 每次您都会在 iOS 和 Android 上出现一些不同的视频行为 对 旋转您的手机( 例如到地平面) .

在iOS上,您所捕获的视频会旋转以补偿手机的旋转,意思是:

  • 其他学员会继续直面你
  • 您的本地视频将和您手机上其他参与者的视频一样定向(所以您现在需要用鸡巴敲头才能直观)

在Android上,你抓获的视频会 没有 旋转以补偿电话的旋转,意思是:

  • 其他参与者现在会看到你的侧面
  • 您的本地视频会 没有 和电话上其他参与者的视频一样

版本与发布记录

@daily-co/react-native-daily-js 共发布 112 个版本,首次发布于 2020/06/30;过去 12 个月发布了 10 个版本。

版本发布日期距今
0.90.0latest2026/11/073 天前
0.89.02026/10/1725 天前
0.88.02026/10/031 个月前
0.87.12026/08/202 个月前
0.87.02026/08/152 个月前
0.86.02026/06/115 个月前

其他发布通道:alpha → 0.11.0-alpha.1。

关于 @daily-co/react-native-daily-js 的常见问题

@daily-co/react-native-daily-js 是什么?

使用 Daily 调用视频调用本地文库

如何安装 @daily-co/react-native-daily-js?

在项目目录运行 npm install @daily-co/react-native-daily-js,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react-native(>=0.68.0)、@daily-co/react-native-webrtc(^155.0.1-daily.1)、react-native-background-timer(^2.4.1)、react-native-get-random-values(^1.11.0)、@react-native-async-storage/async-storage(^1.24.0 || ^2.0.0 || ^3.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@daily-co/react-native-daily-js 支持 TypeScript 吗?

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

@daily-co/react-native-daily-js 支持 ESM 还是 CommonJS?

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

@daily-co/react-native-daily-js 可以商用吗?

@daily-co/react-native-daily-js 使用 BSD-2-Clause 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@daily-co/react-native-daily-js 的下载量有多少?

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

@daily-co/react-native-daily-js 还在维护吗?

最新版本 0.90.0 发布于 2026/11/07(3 天前);至今共发布 112 个版本,其中过去 12 个月发布了 10 个;首次发布于 2020/06/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。