Commit 599dd78e by MissYasiky

新增 README.md

parent 5f83515d
# RN 云课堂集成文档
## 1. 概述
PolyvRNCloudClassDemo 支持 Android + iOS, 是专为 ReactNative 技术开发者定制的云课堂集成 demo,从属于广州易方信息科技股份有限公司旗下的 POLYV 保利威视频云核心产品“云课堂”,包含了视频教学直播、ppt 在线演示同步播放、教学连麦、在线聊天功能,以及直播回放功能。
### 1.1 支持设备
Android 4.1.0 (API 16) 以上 或 iOS 9.0 以上
### 1.2 接入条件
- 了解 ReactNative 技术;
- 搭建好运行 React Native 的相关环境;
- 准备在使用 React Native 技术开发的项目中接入云课堂功能;
-[保利威视频云平台](http://www.polyv.net/)注册账号,并开通相关服务。
## 2. 快速开始
### 2.1 RN 端集成
#### 2.1.1 安装依赖
执行如下命令下载 react 相关依赖
```js
$ npm install
```
#### 2.1.2 引入插件
云课堂的插件和 demo 的目录结构如下所示:
├── polyv
│ ├── demo
│ │ ├── img
│ │ │ └── logo_polyv.png
│ │ ├── view
│ │ │ └── LoginInput.js
│ │ ├── PolyvUserConfig.js
│ │ └── PolyvLogin.js
│ └── sdk
│ └── PolyvCloudClassLoginModule.js
如果只是需要使用到 sdk 的功能,把 sdk 目录下的文件拉到 RN 项目中即可。demo 中的功能则需要使用到 demo 目录下的文件。
#### 2.1.3 项目配置
1. 项目中 app.json 中的字段 name 需要与native 层的入口名对应,所以在 Android 与 ios 两端需要做入口名统一配置。配置文件名:
- Android 端的 MainActivity.java 文件
```java
@Override
protected String getMainComponentName() {
return "此处填入 app.json 里的 name 字段内容";
}
```
- iOS 端的 AppDelegate.m 文件
```objective-c
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSURL *jsCodeLocation;
#ifdef DEBUG
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"此处填入app.json里的name字段内容"
initialProperties:nil
launchOptions:launchOptions];
…… // 代码省略
return YES;
}
```
2. 在 package.json 文件中配置依赖。
```json
"dependencies": {
"react": "16.6.3",
"react-native": "0.57.8",
//polyv/demo里需要的依赖(如不需要可删除)
"react-native-gesture-handler": "^1.4.1",
"react-native-reanimated": "^1.2.0",
"react-navigation": "^3.12.1",
"axios": "^0.18.0"
},
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/runtime": "^7.5.5",
"@react-native-community/eslint-config": "^0.0.5",
"babel-jest": "23.6.0",
"eslint": "^6.2.2",
"jest": "23.6.0",
"metro-react-native-babel-preset": "^0.51.1",
"react-test-renderer": "16.6.3"
},
```
#### 2.1.4 使用方法
云课堂的插件 PolyvCloudClassLoginModule.js 提供了如下接口:
| 函数名 | 参数 | 功能说明 | 是否有返回值 |
| :------------ | ------------------------------------------------------------ | ---------------- | ------------ |
| init | vodKey:加密串(必填)<br/>decodeKey:加密密钥(必填)<br/>decodeIv:加密向量(必填)<br/>viewerId:观看者 ID(选填)<br/>nickName:观看者昵称(选填) | 获取视频码率列表 | 是 |
| liveLogin | userId:账号 ID(必填)<br/>channelId:频道号(必填)<br/>appId:应用 ID(必填)<br/>appSecret:应用密钥(必填) | 开始下载视频 | 是 |
| playbackLogin | userId:账号 ID(必填)<br/>channelId:频道号(必填)<br/>vodId:回放视频 ID(必填)<br/>appId:应用 ID(必填)<br/>appSecret:应用密钥(必填) | 暂停下载 | 是 |
以上函数的返回值参见 2.1.5。
#### 2.1.5 返回码
| 返回码(整型) | 返回码描述 |
| -------------- | ----------------------- |
| 0 | 成功 |
| -1 | 加密串 vodKey 为空 |
| -2 | 加密密钥 decodeKey 为空 |
| -3 | 加密向量 decodeIv 为空 |
| -4 | appId 为空 |
| -5 | appSecret 为空 |
| -6 | userId 为空 |
| -7 | channelId 为空 |
| -8 | vodId 为空 |
| -9 | 登录失败 |
### 2.2 Android 端集成
### 2.3 iOS 端集成
iOS 端工程的原生插件代码全部包含在 ios/PolyvCloudClassModule 文件夹中。
#### 2.3.1 引入原生代码
1. 把 demo 项目的 ios/PolyvCloudClassModule 文件夹拷贝到目标项目的 ios 目录下(如果以前已经拷贝过上述文件夹,需要在 Xcode 先删除,然后再拷贝);
2. 在 Xcode 中,把上述文件夹增加(Add Files)到项目中。
#### 2.3.2 配置 CocoaPods
1. 如果目标项目原来没有 ios/Podfile 文件,需要拷贝 demo 项目的 ios/Podfile 文件到目标项目的 ios 目录下;打开 Podfile 文件,把其中 ‘PolyvRNCloudClassDemo’ 改为 ‘自身项目名’;
2. 如果目标项目原来有 Podfile 文件,只需要把以下代码拷贝到 ios/Podfile 文件 中;
```
use_frameworks!
pod 'Masonry', '~> 1.1.0'
pod 'SDWebImage', '~> 4.4.0'
pod 'PolyvCloudClassSDK', '0.9.0-beta'
```
注意:
- 不能遗漏 use_frameworks!
- PolyvCloudClassSDK 要带上版本号,避免自动升级;
3. 在命令行环境进入 ios 目录,执行 `pod install` 命令。
#### 2.3.2 项目配置
由于云课堂项目中的播放器,在播放过程中进行截图后会直接保存到系统相册,需要有访问系统相册的权限;直播间的聊天室,允许用户上传相册里的照片或拍照上传,也需要访问系统相册以及访问摄像头的权限;直播时的连麦功能需要访问麦克风以及摄像头的权限。想要正常使用以上功能,需要在文件 Info.plist 中添加这一系列权限。
另外,本项目支持后台播放,因此还需要开启后台播放权限。info.plist 文件新增内容如下:
```
`<?xml version=``"1.0"` `encoding=``"UTF-8"``?>``<!DOCTYPE plist PUBLIC ``"-//Apple//DTD PLIST 1.0//EN"` `"http://www.apple.com/DTDs/PropertyList-1.0.dtd"``>``<plist version=``"1.0"``>``<dict>`` ``……`` ``<key>NSPhotoLibraryUsageDescription</key>`` ``<string>允许App访问相册以保存截图或读取相册视频文件</string>`` ``<key>UIBackgroundModes</key>`` ``<array>`` ``<string>audio</string>`` ``</array>`` ``……``</dict>``</plist>`
```
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment