本文介绍iOS端集成AUI Kits低代码集成工具互动直播场景SDK的操作方式、注意事项及相关代码示例等内容。

源码说明

源码下载

下载地址请参见源码下载

源码结构

├── AUIInteractionLive  // 根目录
│   ├── AUIInteractionLive.podspec                // pod描述文件
│   ├── Class                                     // 源代码文件
│   ├── Resources                                 // 资源文件
│   ├── Demo                                      // Demo代码
│   ├── README.md                                 // Readme

环境要求

  • Xcode 12.0及以上版本,推荐使用最新正式版本。
  • CocoaPods 1.9.3及以上版本。
  • iOS 10.0或以上版本的真机。

前提条件

  • 您已经搭建AppServer并获取了访问域名。搭建步骤,请参见服务端集成
    说明 如果您仅需要跑通Demo体验功能,则无需搭建AppServer,我们在Demo中为您提供已搭建的AppServer域名。
  • 您需要获取音视频终端SDK的直播推流、播放器和美颜特效SDK的License授权和License Key。获取方法请参见获取License

(可选)跑通Demo

  1. 从GitHub下载代码后,进入Demo目录。
  2. 在Demo目录下执行如下命令,自动安装依赖SDK。
    pod install  --repo-update
  3. 打开工程文件AUIInteractionLiveDemo.xcworkspace,修改包ID。
  4. 前提条件中获取的License文件放到AUIInteractionLiveDemo/目录下,并修改文件名为license.crt
  5. 前提条件中获取的License Key填写到AUIInteractionLiveDemo/Info.plist文件的AlivcLicenseKey的值中。
  6. 编译运行。

快速集成

本节介绍如何在您的App工程中集成AUIInteractionLive,快速实现互动直播功能。

导入源码

  1. 导入AUIInteractionLive:拷贝AUIInteractionLive文件夹到您的App代码目录下,与您的Podfile文件在同一层级。
  2. 修改Podfile,需引入如下内容。
    1. AliVCSDK_PremiumLive:适用于互动直播的音视频终端SDK,也可以使用AliVCSDK_Premium。详细说明,请参见SDK说明
    2. AlivcInteraction:互动SDK。
    3. AUIFoundation:基础UI组件,详细说明请参见组件源码。如果需要对组件代码进行修改,建议您将组件下载到App代码中进行本地集成后再修改。
    4. AUIQueenCom:美颜UI组件,详细说明请参见组件源码。如果需要对组件代码进行修改,建议您将组件下载到App代码中进行本地集成后再修改。
    5. AUIInteractionLive:互动直播UI组件,即第一步导入的源码。如有需要可对组件代码进行修改。
    #需要iOS10.0及以上才能支持
    platform :ios, '10.0'
    
    target '您的App target' do
        # 根据自己的业务场景,集成合适的音视频终端SDK
        # 如果您的App中还需要频短视频编辑功能,可以使用音视频终端全功能SDK(AliVCSDK_Premium),可以把本文件中的所有AliVCSDK_PremiumLive替换为AliVCSDK_Premium
        pod 'AliVCSDK_PremiumLive', '~> 1.7.0'
    
        # 互动SDK
        pod 'AlivcInteraction', '~> 1.0.0'
    
        # 基础UI组件
        pod 'AUIFoundation/All', '~> 1.7.0'
    
        # 美颜UI组件,如果终端SDK使用的是AliVCSDK_Premium,需要AliVCSDK_PremiumLive替换为AliVCSDK_Premium
        pod 'AUIQueenCom/AliVCSDK_PremiumLive', '~> 1.7.0'
    
        # 互动直播UI组件,如果终端SDK使用的是AliVCSDK_Premium,需要AliVCSDK_PremiumLive替换为AliVCSDK_Premium
        pod 'AUIInteractionLive/AliVCSDK_PremiumLive',  :path => "./AUIInteractionLive/"
    
    end
  3. 执行如下命令,完成源码集成。
    pod install --repo-update

工程配置

  1. 编译设置。
    • 进入到工程的Build Setting > Linking > Other Linker Flags,将Other Linker Flags添加-ObjC
    • 进入到工程的Build Setting > Build Options > Enable Bitcode,将Enable Bitcode设为NO
  2. 打开工程的info.Plist,添加NSCameraUsageDescription和NSMicrophoneUsageDescription权限。
    权限
  3. 如果需要在App切换为后台时继续直播,那么需要在XCode中开启Background Modes。
    后台
  4. 配置License,详细说明请参见配置License授权

初始化

  1. AppServer部署后,修改AppServer域名地址,找到AUIInteractionLiveService.m文件,修改kLiveServiceDomainString的值,示例如下:
    // AUIInteractionLiveService.m
    
    // 在部署LiveService部署后,修改LiveService域名地址
    static NSString * const kLiveServiceDomainString =  @"您的LiveService域名";
                            
  2. 初始化SDK配置。
    1. 注册InteractionLive。
      重要 需要引入头文件,必须确保在使用功能前进行注册。
    2. AUI组件页面的跳转需要依赖导航控制器,在App启动后进行SDK的初始化,建议您设置导航控制器(建议使用AVNavigationController)。以下为无Storyboard场景的启动初始化示例:
      #import "AUIInteractionLiveManager.h"
      
      
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          // Override point for customization after application launch.
      
          // 在这里进行InteractionLive的初始化,注意需要引入头文件
          [AUIInteractionLiveManager registerLive];
      
          // APP首页
          LiveViewController *liveVC = [LiveViewController new];
      
          // 需要使用导航控制器,否则页面间无法跳转,建议AVNavigationController
          // 如果使用系统UINavigationController作为APP导航控制器,需要你进行以下处理:
          // 1、隐藏导航控制器的导航栏:self.navigationBar.hidden = YES
          // 2、直播间(AUILiveRoomAnchorViewController和AUILiveRoomAudienceViewController)禁止使用向右滑动时关闭直播间操作。
          AVNavigationController *nav =[[AVNavigationController alloc]initWithRootViewController:liveVC];
          [self.window setRootViewController:nav];
          [self.window makeKeyAndVisible];
      
          // 你的其他初始化...
      
      
      
          return YES;
      }
  3. 对接登录用户。

    必须在用户登录后才能开启观看直播,在用户登录账号后,进行当前互动直播用户的初始化,示例如下:

    // 在登录后进行,进行赋值
    // 如果本次启动用户不需要重新登录(用户Token未过期),可以在加载登录用户后进行赋值
    
    AUIRoomAccount.me.userId = @"当前登录用户id";
    AUIRoomAccount.me.nickName = @"当前登录用户昵称";
    AUIRoomAccount.me.avatar = @"当前登录用户头像";
    AUIRoomAccount.me.token = @"当前登录用户token";   // 用于服务端用户有效性验证

运行

按照上文步骤配置完成后,您可以根据实际的业务场景和交互,在您的App上通过AUIInteractionLive接口快速集成直播列表、主播开播、进入直播等功能,也可以根据实际需求修改源码。

// 打开直播列表
AUIInteractionLiveListViewController *roomListVC = [AUIInteractionLiveListViewController new];
// 直播列表的展示需要使用导航控制器,否则页面间无法跳转,建议AVNavigationController
if (self.navigationController) {
    // 在启动初始化时设置了导航控制器,可以直接push
    [self.navigationController pushViewController:roomListVC animated:YES];
}
else {
    AVNavigationController *nav =[[AVNavigationController alloc]initWithRootViewController:roomListVC];
    [self av_presentFullScreenViewController:nav animated:YES completion:nil];
}


// 主播开播
[[AUIInteractionLiveManager defaultManager] createLive:self];


// 在进入直播前,如果没开通rts播放,需要关闭rts播放
AUIRoomLiveCdnPlayer.canRtsPull = NO;


// 进入直播
[[AUIInteractionLiveManager defaultManager] joinLive:roomModel currentVC:self];

            

直播调用流程图

普通直播

普通直播

连麦直播

  • 无人连麦无人连麦
  • 有人连麦有人连麦