Skip to content

Latest commit

 

History

History
214 lines (162 loc) · 10.5 KB

2-快速集成.md

File metadata and controls

214 lines (162 loc) · 10.5 KB

1 阅读准备

提前下载保利威多场景Demo,请先下载Demo。

准备好一个保利威账号,Demo中登录直播需要账号直播系统中的appId(应用ID),appSecret(应用密匙),userId(账号ID),channelId(频道号),登录回放再额外需要频道号对应回放列表里的videoId(回放视频id)。

2 环境要求

名称 要求
iOS 系统 iOS 9.0+
CocoaPods 1.7.0+
集成工具 Xcode 11.0+

3 目录结构

文件夹 内容
Demo 演示如何初始化 SDK、如何登录进入不同场景
PolyvLiveCloudClassScene 云课堂场景模块,包含播放、聊天、连麦、互动等功能的演示
PolyvLiveEcommerceScene 直播带货场景模块,包含播放、聊天、商品、打赏等功能的演示
PolyvLiveCommonModule 通用模块,提供给各个场景实现所需依赖的基础库、工具类等

4 场景模块集成

多场景 Demo 采用的是多个场景层(PolyvLiveCloudClassScenePolyvLiveEcommerceScene 文件夹)加通用逻辑层(PolyvLiveCommonModule 文件夹)的方式集成。如下图:

图 1

通用逻辑层,也叫 Common 层,本质是对保利威多场景 SDK 的封装的开源代码。旨在为客户提供更友好统一的API、实现更完整的业务功能。代码均跟多场景 SDK 一样,使用 PLV 前缀。关于 Common 层更多的介绍,详见文档 5-1至 5-7。

场景层,也叫 Scene 层,客户可以根据需要,集成具体的场景。Scene 层的代码,根据场景不同,会有不同的前缀进行区分。譬如,云课堂场景的代码前缀为 PLVLC,直播带货场景的代码前缀为 PLVEC

4.1 导入通用模块(必须)

拷贝项目中的 PolyvLiveCommonModule 文件夹到你项目的根目录下。

4.2 云课堂场景模块集成(可选)

拷贝项目中的 PolyvLiveCloudClassScene 文件夹到你项目的根目录下。

4.3 直播带货场景模块集成(可选)

拷贝项目中的 PolyvLiveEcommerceScene 文件夹到你项目的根目录下。

5 工程配置

5.1 配置支持系统版本

打开项目的 TARGETS - General - Deployment Info,把 iOS 系统改为 9.0 或更高。

5.2 配置 App Transport Security (ATS)

打开项目的 info.plist 文件,添加如下内容:

<key>NSAppTransportSecurity</key>
<dict>
	<key>NSAllowsArbitraryLoads</key>
	<true/>
</dict>

5.3 配置 Bitcode

打开项目的 TARGETS - Build Settings,搜索 Enable Bitcode,并设置为 NO。

5.4 配置隐私权限

连麦及聊天室的使用,需要获取用户设备的麦克风、摄像头、相册的访问、使用权限。

打开项目的 info.plist 文件,添加如下内容:

<key>NSCameraUsageDescription</key>
<string>请允许我们访问您的摄像头,以便您使用连麦、拍照功能</string>
<key>NSMicrophoneUsageDescription</key>
<string>请允许我们访问您的麦克风,以便您使用连麦功能</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>请允许我们访问您的相册,以便您保存图片到相册中</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>请允许我们访问您的相册,以便您使用发送图片消息、保存图片到相册的功能</string>

5.5 配置设备旋转

播放器支持全屏播放,需要在 TARGETS - General - Deployment Info 中,勾选支持的横屏旋转方向。

5.6 配置 Podfile

在 Podfile 文件中,添加以下内容:

use_frameworks!
pod 'PLVLiveScenesSDK', '~> 1.0.0' # polyv 多场景 SDK
    
# 以下是第三方依赖库,若本身未引入,则需添加(若不使用Demo源码,可不Pod以下依赖库)
pod 'SDWebImage', '4.4.0'
pod 'MJRefresh', '~> 3.5.0'

注意:

  • 我们强烈建议您带上版本号,避免自动升级
  • 不能遗漏 use_frameworks!

6 初始化 SDK

打开项目的 AppDelegate 文件,在 -application:didFinishLaunchingWithOptions: 方法中进行 SDK 功能配置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // HttpDNS默认开启,如需关闭,解开注释
//    [PLVLiveVideoConfig sharedInstance].enableHttpDNS = NO;
      // 如需启用IPV6,解开注释,启用IPV6之后,将自动选择IP,取消HttpDNS
//    [PLVLiveVideoConfig sharedInstance].enableIPV6 = YES;
    return YES;
}

7 登录直播/回放及进入不同场景

进入不同场景的直播间前,需要先调用登录直播/回放的方法进行校验。登录校验的目的是检验参数是否正确,以及 SDK 内部会保存从登录接口获取到的一些信息。项目的通用模块提供了 PLVRoomLoginClient 进行直播/回放直播间的登录和退登,接口定义如下:

/// 登录直播间
/// @param channelType 频道类型,若支持多种类型,可对多个频道类型枚举值使用 | 进行位或
/// @param channelId 频道号
/// @param userId 用户id
/// @param appId 应用id
/// @param appSecret 应用secret
/// @param roomUserHandler 为登陆提供观看用户的实例对象,可用来配置viewerId、viewerName等参数
/// @param completion 登录成功,带上自定义参数对象,用户可在回调里面设置后台统计所需的自定义参数
/// @param failure 登录失败
+ (void)loginLiveRoomWithChannelType:(PLVChannelType)channelType
                           channelId:(NSString *)channelId
                              userId:(NSString *)userId
                               appId:(NSString *)appId
                           appSecret:(NSString *)appSecret
                            roomUser:(PLVRoomUser *(^ _Nullable)(void))roomUserHandler
                          completion:(void (^)(PLVViewLogCustomParam *customParam))completion
                             failure:(void (^)(NSString *errorMessage))failure;

/// 登录回放直播间
/// @param channelType 频道类型,若支持多种类型,可对多个频道类型枚举值使用 | 进行位或
/// @param channelId 频道号
/// @param vid 视频id
/// @param userId 用户id
/// @param appId 应用id
/// @param appSecret 应用secret
/// @param roomUserHandler 为登陆提供观看用户的实例对象,可用来配置viewerId、viewerName等参数
/// @param completion 登录成功,带上自定义参数对象,用户可在回调里面设置后台统计所需的自定义参数
/// @param failure 登录失败
+ (void)loginPlaybackRoomWithChannelType:(PLVChannelType)channelType
                               channelId:(NSString *)channelId
                                     vid:(NSString *)vid
                                  userId:(NSString *)userId
                                   appId:(NSString *)appId
                               appSecret:(NSString *)appSecret
                                roomUser:(PLVRoomUser *(^ _Nullable)(void))roomUserHandler
                              completion:(void (^)(PLVViewLogCustomParam *customParam))completion
                                 failure:(void (^)(NSString *errorMessage))failure;

/// 离开直播间时调用
+ (void)logout;

登录过程中,观看者的相关信息可以通过回调 roomUserHandler 进行配置,登陆的结果(成功跟失败)会通过 block 回调,可以在登录成功的回调中,选择进入所需的场景页。下面的例子展示了如何登录并进入云课堂场景的直播间页面,代码如下:

//登录直播
__weak typeof(self)weakSelf = self;
[PLVRoomLoginClient loginLiveRoomWithChannelType:PLVChannelTypePPT | PLVChannelTypeAlone
                                       channelId:channelId
                                          userId:userId
                                           appId:appId
                                       appSecret:appSecret
                                        roomUser:^PLVRoomUser * _Nonnull{
    // 配置观看用户相关信息
    PLVRoomUser *roomUser = [[PLVRoomUser alloc] initWithViewerId:viewerId viewerName:viewerName viewerAvatar:viewerAvatar viewerType:PLVRoomUserTypeSlice];
    return roomUser;
} completion:^(PLVViewLogCustomParam * _Nonnull customParam) {
    // 登陆成功,进入云课堂直播间
    PLVLCCloudClassViewController *cloudClassVC = [[PLVLCCloudClassViewController alloc] init];
    [weakSelf.navigationController pushViewController:cloudClassVC animated:YES];
} failure:^(NSString * _Nonnull errorMessage) {
    // 登陆失败
}];

上述方法的具体用例可以在项目 Demo 文件夹中的 PLVLoginViewController 类中找到。