iOS 接入说明文档

接入临境直播观看 SDK 首先遵循以下步骤:

  • 配置 SDK 集成环境
  • 按照以下接入文档集成代码

SDK 集成环境配置

开发与运行环境

  • Xcode 13.3.1
  • iOS 8.0 及以上版本

Cocoapods 快速集成

暂不支持

手动集成

  1. 将YXTLivePullComponent.framework集成到工程中
  2. 部分资源需要从根目录访问,将另外携带的资源文件放入主工程

声明SDK需要的权限

info.plist 设置权限:
info.plist权限设置

关闭bitcode

将YXTLivePullComponent不支持bitcode,需要将Enable Bitcode关闭

解决打包失败

Swift工程在打包时如果某个framework含有模拟器架构就会出现冲突出现IPA processing failed错误,解决方法是在打包时将YXTLivePullComponent中的可执行文件的模拟器架构删除;

  1. 永久删除模拟器架构
  2. 添加脚本,在打包时将自动移除模拟器架构,但不影响YXTLivePullComponent本身
    脚本内容:
  1. APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
  2. find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
  3. do
  4. FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
  5. FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
  6. echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
  7. EXTRACTED_ARCHS=()
  8. for ARCH in $ARCHS
  9. do
  10. echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
  11. lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
  12. EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
  13. done
  14. echo "Merging extracted architectures: ${ARCHS}"
  15. lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
  16. rm "${EXTRACTED_ARCHS[@]}"
  17. echo "Replacing original executable with thinned version"
  18. rm "$FRAMEWORK_EXECUTABLE_PATH"
  19. mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
  20. done

SDK集成配置

1、环境配置

  1. #import "YXTLivePullComponent/YXTLivePullComponent.h"
  2. /**
  3. 环境配置
  4. @param environment 环境配置(0:测试环境;1:正式环境)
  5. */
  6. [[YXTLivePullSDK getInstance] configLivePullWithApiEnvironment:LPullEnvironmentDevelopment];
  7. [YXTLivePullSDK getInstance].isUsedOutside = YES;
  8. [YXTLiveBaseSDK getInstance].isUsedOutside = YES;

2、跳转直播播放页面

  1. #import "YXTLivePullComponent/YXTLivePullComponent.h"
  2. NSMutableDictionary *params = [NSMutableDictionary dictionary];
  3. [params setValue:@"" forKey:kLivePullSDKeyRoomCode];//直播室roomCode 必传
  4. [params setValue:@"" forKey:kLivePullSDKeyUserId];//用户userId 必传
  5. [params setValue:@"" forKey:kLivePullSDKeyUserName];//用户昵称 必传
  6. [params setValue:@"" forKey:kLivePullSDKeyAvatar];//用户头像
  7. [params setValue:@"" forKey:kLivePullSDKeyPassword];//观看密码
  8. [params setValue:@"" forKey:kLivePullSDKeyLoginName];//产线用户登陆名称
  9. [params setValue:@"" forKey:kLivePullSDKeyUserPoint];//用户积分
  10. [params setValue:@YES forKey:kLivePullSDKeyCannotEditUserInfo];//默认传Yes
  11. [[YXTLivePullSDK getInstance] loginChatRoomWithParam:params inNav:当前的navigationController];

3、绑定微信功能接入

设置微信绑定功能需要添加以下操作:

注:若不需要微信绑定功能,不需要接入改板块内容。

1. 在微信开放平台申请相应 appId;
2. 在 AppDelegate 中初始化微信

  1. #import "WXApi.h"
  2. appdelegate 文件下 didFinishLaunchingWithOptions 方法里添加
  3. [WXApi registerApp:@"微信key"];
  4. [[YXTLivePullSDK getInstance]setIsNeedBindUserInfo:YES];//打开微信绑定

3. 在 info—>URL Types 里添加微信跳转配置
微信跳转配置

4、支持后台播放功能接入

设置后台播放功能需要添加以下操作:

后台播放配置

常见问题

1、PC 推流时,直播界面未横竖屏切换失效或项目横竖屏不受控制问题

  1. 无法横竖屏切换
    解答:要求项目必须默认支持横竖屏切换

  2. 默认支持横竖屏切换,固定页面关闭横竖屏切换失败
    解答:需要自定义 UINavigationController
    并实现 shouldAutorotate 方法

    1. -(BOOL)shouldAutorotate
    2. {
    3. return self.topViewController.shouldAutorotate;
    4. }
  3. 横屏状态打开 App,启动页变成横屏
    解答:在 AppDelegate 里- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions 方法里设置竖屏显示;

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  2. {
  3. [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
  4. return YES;
  5. }

2、开始观看直播时,无法正常进入

  1. 控制台log提示“直播参数缺失:kLivePullSDKeyRoomCode value 不存在”
    解答:kLivePullSDKeyRoomCode 值为空,此参数必传
  2. 控制台log提示“直播参数缺失:kLivePullSDKeyUserName value 不存在”
    解答:kLivePullSDKeyUserName 值为空,此参数必传

关于作者

江苏云学堂网络科技有限公司开发人员,如有问题请发送邮件至 yll@yxt.com