保利威文档中心

幫助中心

以下是第三方依赖库,若需使用Demo源码且您项目中未引入,需添加

更新時間:2024-11-25 17:01:02

1 閱讀準備

請先下載保利威多場景 Demo。

準備好一個保利威帳號,Demo 中登入直播需要帳號直播系統中的 appId(應用 ID)、appSecret(應用密鑰)、userId(帳號 ID)、channelId(頻道號),登入回放則需額外提供頻道號對應回放列表中的 videoId(回放影片 ID)。

2 環境需求

名稱 需求
iOS 系統 iOS 12.0+
CocoaPods 1.7.0+
整合工具 Xcode 11.0+

3 目錄結構

資料夾 內容
Demo 展示如何初始化 SDK、如何登入進入不同場景
PolyvLiveCloudClassScene 雲課堂場景模組,包含播放、聊天、連麥、互動等功能示範
PolyvLiveEcommerceScene 直播帶貨場景模組,包含播放、聊天、商品、打賞等功能示範
PolyvLiveStreamerScene 手機開播場景模組,包含推流、連麥、聊天、文件等功能示範
PolyvLiveCommonModule 通用模組,提供各場景實作所需依賴的基礎函式庫、工具類等

4 場景模組整合

多場景 Demo 採用多個場景層(PolyvLiveCloudClassScenePolyvLiveEcommerceScenePolyvLiveStreamerScene 資料夾)加上通用邏輯層(PolyvLiveCommonModule 資料夾)的方式整合。如下圖:

圖 1

通用邏輯層,也稱為 Common 層,本質上是對保利威多場景 SDK 的封裝開源程式碼。旨在為客戶提供更友善統一的 API、實現更完整的業務功能。程式碼均與多場景 SDK 相同,使用 PLV 前綴。關於 Common 層的更多介紹,請參閱文件 5-1 至 5-7。

場景層,也稱為 Scene 層,客戶可依需求整合特定場景。Scene 層的程式碼會根據不同場景使用不同前綴區分。例如,雲課堂場景的程式碼前綴為 PLVLC,直播帶貨場景的程式碼前綴為 PLVEC,手機開播場景的程式碼前綴為 PLVLS

4.1 匯入通用模組(必要)

將專案中的 PolyvLiveCommonModule 資料夾複製到您專案的根目錄下。

4.2 雲課堂場景模組整合(選用)

將專案中的 PolyvLiveCloudClassScene 資料夾複製到您專案的根目錄下。

4.3 直播帶貨場景模組整合(選用)

將專案中的 PolyvLiveEcommerceScene 資料夾複製到您專案的根目錄下。

4.4 手機開播場景模組整合(選用)

將專案中的 PolyvLiveStreamerScene 資料夾複製到您專案的根目錄下。

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
pod 'PLVImagePickerController', '~> 0.1.2' # 若不使用Demo源码,不需要添加
    
# 以下是第三方依赖库,若需使用Demo源码且您项目中未引入,需添加
pod 'SDWebImage', '4.4.0'
pod 'MJRefresh', '~> 3.5.0'
pod 'SVGAPlayer', '~> 2.3'

注意:

  • 我們強烈建議您加上版本號,避免自動升級
  • 我們建議使用最新版本 SDK
  • 不可遺漏 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 登入直播/回放及進入不同場景

7.1 觀看端(雲課堂場景/直播帶貨場景)

進入不同場景的觀看頁面前,需先呼叫登入直播/回放的方法進行驗證。登入驗證的目的是檢查參數是否正確,以及 SDK 內部會儲存從登入介面取得的一些資訊。專案的通用模組提供了 PLVRoomLoginClient 進行直播/回放的登入與登出,介面定義如下:

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

/// 登录回放直播间
/// @param channelType 频道类型,若支持多种类型,可对多个频道类型枚举值使用 | 进行位或
/// @param channelId 频道号
/// @param vodList 是否请求点播列表视频,默认NO
/// @param vid 视频id(可不填,不填时加载回放/点播列表)
/// @param userId 用户id
/// @param appId 应用id
/// @param appSecret 应用secret
/// @param roomUserHandler 返回带有默认值的观看用户实例对象,可在block中配置viewerId、viewerName、viewerAvatar属性
/// @param completion 登录成功,带上自定义参数对象,用户可在回调里面设置后台统计所需的自定义参数
/// @param failure 登录失败
+ (void)loginPlaybackRoomWithChannelType:(PLVChannelType)channelType
                               channelId:(NSString *)channelId
                                 vodList:(BOOL)vodList
                                     vid:(NSString * _Nullable)vid
                                  userId:(NSString *)userId
                                   appId:(NSString *)appId
                               appSecret:(NSString *)appSecret
                                roomUser:(void(^ _Nullable)(PLVRoomUser *roomUser))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 roomUser) {
        // 可在此处配置自定义的登录用户ID、昵称、头像,不配则均使用默认值
//        roomUser.viewerId = @"用户ID";
//        roomUser.viewerName = @"用户昵称";
//        roomUser.viewerAvatar = @"用户头像";
} completion:^(PLVViewLogCustomParam * _Nonnull customParam) {
    // 登录成功,进入云课堂直播间
    PLVLCCloudClassViewController *cloudClassVC = [[PLVLCCloudClassViewController alloc] init];
    [weakSelf.navigationController pushViewController:cloudClassVC animated:YES];
} failure:^(NSString * _Nonnull errorMessage) {
    // 登录失败
}];

上述方法的具體使用範例可在專案 Demo 資料夾中的 PLVLoginViewController 類別中找到。

7.2 開播端(手機開播場景)

在進入手機開播頁面前,需先呼叫登入頻道的方法進行驗證。登入驗證的目的是檢查參數是否正確,以及儲存從登入介面取得的一些資訊。專案的通用模組提供了 PLVRoomLoginClient 進行頻道開播的登入,介面定義如下:

/// 登录三分屏开播直播间
/// @param channelType 频道类型,目前只支持 PLVChannelTypeAlone 或者 PLVChannelTypePPT
/// @param channelId 频道号
/// @param password 频道密码
/// @param completion 登录成功
/// @param failure 登录失败
+ (void)loginStreamerRoomWithChannelType:(PLVChannelType)channelType
                               channelId:(NSString *)channelId
                                password:(NSString *)password
                              completion:(void (^)(void))completion
                                 failure:(void (^)(NSString *errorMessage))failure;

登入驗證的結果會透過 completionfailure block 回呼,您可以在登入成功的回呼中進入手機開播場景。以下範例展示如何登入頻道並進入手機開播場景,程式碼如下:

//登录手机开播
__weak typeof(self)weakSelf = self;
[PLVRoomLoginClient loginStreamerRoomWithChannelType:PLVChannelTypePPT 
                                            channelId:channelId 
                                             password:passwordString 
                                           completion:^{
    // 登录成功,进入云课堂直播间
    PLVLSStreamerViewController *vctrl = [[PLVLSStreamerViewController alloc] init];
    vctrl.modalPresentationStyle = UIModalPresentationFullScreen;
    [weakSelf presentViewController:vctrl animated:YES completion:nil];
} failure:^(NSString * _Nonnull errorMessage) {
    // 登录失败
}];

上述方法的具體使用範例可在專案 Demo 資料夾中的 PLVLSLoginViewController 類別中找到。

联系客服,在线咨询