本文适用于 1.42.0 及以前的版本。
提供以下方法进入与离开直播间、设置监听器,以及获取直播间页面等。
@interface BDLLiveEngine : NSObject
直播间配置信息。
@property (nonatomic, strong, readonly) BDLLiveRoomConfiguration *liveRoomConfiguration;
获取 BDLLiveEngine 实例。
+ (instancetype)sharedInstance;
返回值BDLLiveEngine 实例。
获取 SDK 版本号。
+ (NSString *)sdkVersion;
返回值
SDK 版本号。
设置直播间的监听器。
- (void)setActivityListener:(nullable id<BDLActivityListener>)listener;
参数
名称 | 类型 | 说明 |
|---|---|---|
listener | 直播间的监听器。 |
设置自定义登录直播间代理。
- (BOOL)setLoginProvider:(nullable id<BDLLoginProvider>)loginProvider;
参数
名称 | 类型 | 说明 |
|---|---|---|
loginProvider | id<BDLLoginProvider> | 自定义登录直播间代理。 |
返回值
YES:设置成功。NO:如果您未实现loginWithActivity:completion: 方法,返回 NO,设置失败。进入直播间。
- (BOOL)joinLiveRoomWithActivity:(BDLActivity *)activity;
参数
名称 | 类型 | 说明 |
|---|---|---|
activity | 直播间信息。 |
返回值
YES:调用方法成功。NO:参数无效,即 activityId 或 token 的值为空。注意
该方法自 1.40.0 版本开始已废弃,请使用 joinLiveRoomWithActivity:success:failure: 方法替代之。
进入直播间。进入直播间成功或失败后,SDK 会触发对应的回调。
- (BOOL)joinLiveRoomWithActivity:(BDLActivity *)activity; success:(void (^)(void))success failure:(void (^)(NSError *error))failure;
参数
名称 | 类型 | 说明 |
|---|---|---|
activity | 直播间信息。 | |
success | block | 进入直播间成功后触发的回调,无返回值。 |
failure | block | 进入直播间失败后触发的回调,无返回值。
|
返回值
YES:调用方法成功。NO:参数无效,即 activityId 或 token 的值为空。更新直播间信息,即更新直播间的 token 和 authMode。更新直播间信息成功或失败后,SDK 会触发对应的回调。
说明
确保使用与调用 joinLiveRoomWithActivity: 时相同的 activityId 和 isPortrait,用于更新对应直播间的信息。
- (BOOL)updateActivity:(BDLActivity *)activity; success:(void (^)(void))success failure:(void (^)(NSError *error))failure;
参数
名称 | 类型 | 说明 |
|---|---|---|
activity | 直播间信息。 | |
success | block | 更新直播间信息成功后触发的回调,无返回值。 |
failure | block | 更新直播间信息失败后触发的回调,无返回值。
|
返回值
activityId 或 isPortrait 与调用 joinLiveRoomWithActivity: 时使用的 activityId 或 isPortrait 不同、或者 activityId 或 token 的值为空。获取直播间页面。
在 joinLiveRoomWithActivity:success:failure: 的 success 回调中调用 getLivePullViewController。
- (nullable BDLLivePullViewController *)getLivePullViewController;
返回值
nil:
joinLiveRoomWithActivity:success:failure:。joinLiveRoomWithActivity:success:failure: 收到返回值 NO。joinLiveRoomWithActivity:success:failure:进入直播间失败。BDLLivePullViewController 实例。通过传入一个已经在播放的 basePlayerView 来获取直播间页面。basePlayerView 指用于提前展示直播间视频内容的独立播放器。将 basePlayerView 传入该方法后,可以避免视频内容的重新获取和重新播放,让用户在进入直播间后无缝继续观看之前的视频内容。
在 joinLiveRoomWithActivity:success:failure: 的 success 回调中调用 getLivePullViewControllerWithBasePlayerView:。
- (nullable BDLLivePullViewController *)getLivePullViewControllerWithBasePlayerView:(nullable BDLBasePlayerView *)basePlayerView;
返回值
nil:
joinLiveRoomWithActivity:success:failure:。joinLiveRoomWithActivity:success:failure: 收到返回值 NO。joinLiveRoomWithActivity:success:failure:进入直播间失败。BDLLivePullViewController 实例。离开直播间。
- (void)leaveLiveRoom;
清除观众当前设备上 SDK 的所有本地缓存。本地缓存包含:
+ (void)clearCache;
获取用户的唯一 ID,在用户成功进入直播间后调用。在反馈问题时,可以提供给企业直播技术支持,用于排查与解决问题。
(nullable NSString *)userUniqueId;
直播间信息。
@interface BDLActivity : NSObject
@property (nonatomic, strong) NSNumber *activityId;
直播间活动 ID。
@property (nonatomic, copy) NSString *token;
进入直播间所需的授权 Token。
@property (nonatomic, assign) BDLActivityAuthMode authMode;
直播间的鉴权模式,详见 BDLActivityAuthMode。
@property (nonatomic, copy, nullable) NSString *nickName;
如果 authMode 的值为 BDLActivityAuthModePublic,即直播间的鉴权模式为公开,且该参数值非空,则该参数值会作为观众的昵称。
注意
该属性自 1.40.0 版本开始不再支持使用。您可以使用 BDLUserInfoConfiguration 中 setNickname:complete: 方法的 nickname 参数替代之。
@property (nonatomic, assign) BOOL isPortrait;
是否为竖屏直播间。
YES:竖屏直播间。NO:横屏直播间。验证直播间信息是否有效。
- (BOOL)isValid;
返回值
YES:有效。activityId 和 token 均非空值。NO:无效。activityId 和 token 有一个为空值或二者皆为空值。自定义登录直播间代理。
说明
如果 authMode 的值为 BDLActivityAuthModePublic,即直播间的鉴权模式为公开,且 BDLUserInfoConfiguration 中 setNickname:complete: 方法的 nickname 参数值非空,则不会触发该代理的任何方法。
@protocol BDLLoginProvider <NSObject>
自定义登录直播间,即允许观众通过您的自有账号系统登录直播间。
- (void)loginWithActivity:(BDLActivity *)activity completion:(void (^)(NSString * _Nullable token))completion;
参数
名称 | 类型 | 说明 |
|---|---|---|
activity | 由 joinLiveRoomWithActivity: 方法传入的直播间信息。 | |
completion | block | 自定义登录直播间完成后触发的回调,无返回值,传入 |
取消自定义登录直播间。
@optional - (void)cancelLoginWithActivity:(BDLActivity *)activity;
参数
名称 | 类型 | 说明 |
|---|---|---|
activity | 由 joinLiveRoomWithActivity: 方法传入的直播间信息。 |
直播间的监听器。
@protocol BDLActivityListener <NSObject>
直播间网络状态变化回调。
(void)activity:(BDLActivity *)activity networkStatusDidChange:(BDLNetworkStatus)networkStatus;
参数
名称 | 类型 | 说明 |
|---|---|---|
activity | 由 joinLiveRoomWithActivity: 方法传入的直播间信息。 | |
networkStatus | 当前网络状态。 |
直播状态变化回调。
- (void)activity:(BDLActivity *)activity activityStatusDidChange:(BDLActivityStatus)activityStatus;
参数
名称 | 类型 | 说明 |
|---|---|---|
activity | 由 joinLiveRoomWithActivity: 方法传入的直播间信息。 | |
activityStatus | 当前直播状态。 |
收到自定义的 IM(即时消息)信令。
您可以通过观播 SDK 的信道在进入直播间期间触发您的界面逻辑,例如即时动画、自行实现的抽奖等。
自定义的 IM 信令收到回调。
- (void)onReceiveIMString:(NSString *)string;
参数
名称 | 类型 | 说明 |
|---|---|---|
string | NSString | 通过 SendCustomSystemMessageAPI 接口发送的自定义的 IM 信令。 |
IM 建立连接成功回调。
- (void)onConnected;
IM 建立连接失败回调。
- (void)onConnectFailed;
日历工具类。
@interface BDLCalendarUtils : NSObject
创建系统日历日程。
+ (void)addCalendarEvent:(NSString *)eventTitle alarms:(NSArray<EKAlarm *> *)alarms startDate:(NSDate *)startDate endDate:(NSDate *)endDate completion:(void(^)(BOOL success, NSError *error))completion;
参数
名称 | 类型 | 说明 |
|---|---|---|
eventTitle | NSString | 日程的标题,即直播名称。 |
alarms | NSArray<EKAlarm *> | 提前直播开始时间多久提醒直播即将开始。详见 EKAlarm。 说明 支持设置多个提醒时间。 |
startDate | NSDate | 直播开始时间。 |
endDate | NSDate | 直播结束时间。 |
completion | void(^)(BOOL success, NSError *error) | 系统日历日程创建完成后触发的回调。
|
直播间的鉴权模式。
typedef NS_ENUM(NSInteger, BDLActivityAuthMode) { BDLActivityAuthModeUnknown = 0, BDLActivityAuthModePublic = 1, BDLActivityAuthModeCustom = 2, };
BDLActivityAuthModeUnknown(0):未知模式。BDLActivityAuthModePublic(1):公开模式。昵称由观众输入或者由 BDLUserInfoConfiguration 中 setNickname:complete: 方法的 nickname 参数传入。BDLActivityAuthModeCustom(2):自定义模式。观众通过登录您的自有账号系统进入直播间。昵称从自有账号系统同步至直播间,无需观众输入。直播状态。
typedef NS_ENUM(NSInteger, BDLActivityStatus) { BDLActivityStatusUnknown = 0, BDLActivityStatusLive = 1, BDLActivityStatusPreview = 2, BDLActivityStatusReplay = 3, BDLActivityStatusEnd = 4, };
BDLActivityStatusUnknown(0):未知状态。BDLActivityStatusLive(1):直播中。BDLActivityStatusPreview(2):预告。BDLActivityStatusReplay(3):回放。BDLActivityStatusEnd(4):已结束。错误码。
typedef NS_ENUM(NSUInteger, BDLError) { BDLErrorUnknown = 0, BDLErrorGetActivityFailed = 1, BDLErrorPullDisallowed = 2, BDLErrorChangeTokenFailed = 3, };
BDLErrorUnknown(0):未知错误。BDLErrorGetActivityFailed(1):获取直播间信息失败。BDLErrorPullDisallowed(2):由于在控制台设置为仅支持 PC 端观看,因此移动端观看失败。BDLErrorChangeTokenFailed(3):变更进入直播间所需的授权 Token 失败。网络状态。
typedef NS_ENUM(NSInteger, BDLNetworkStatus) { BDLNetworkStatusUnknown = 0, BDLNetworkStatusNotReachable = 1, BDLNetworkStatusReachableViaWWAN = 2, BDLNetworkStatusReachableViaWiFi = 3, };
BDLNetworkStatusUnknown(0):未知状态。BDLNetworkStatusNotReachable(1):无网络。BDLNetworkStatusReachableViaWWAN(2):无线广域网(WWAN)。BDLNetworkStatusReachableViaWiFi(3):WiFi。播放器加载状态。
typedef NS_ENUM( NSInteger, BDLPlayerLoadState )
枚举值
类型 | 值 | 说明 |
|---|---|---|
BDLPlayerLoadStateUnknown | 0 | 未知。 |
BDLPlayerLoadStateStalled | 1 | 卡顿。 |
BDLPlayerLoadStatePlayable | 2 | 可以播放,即卡顿停止。 |
BDLPlayerLoadStateError | 3 | 加载遇到错误。 |
直播预约信息。
@interface BDLActivityBookingModel : BDLBaseModel /// 直播名称 @property (nonatomic, copy) NSString *activityName; /// 直播间的活动 ID @property (nonatomic, strong) NSNumber *activityId; /// 直播开始时间 @property (nonatomic, strong) NSDate *startDate; /// 直播结束时间 @property (nonatomic, strong) NSDate *endDate; /// 观众昵称。观众未输入昵称或未登录直播间时,取值为空 @property (nonatomic, copy, nullable) NSString *nickname; /// 观众在第三方平台的唯一标识。仅在鉴权模式为自定义,且观众已登录直播间时有值 @property (nonatomic, copy, nullable) NSString *externalUserId; /// 用户 ID,观众在企业直播的唯一标识。观众未输入昵称或未登录直播间时,取值为 0 @property (nonatomic, strong, nullable) NSNumber *userId; @end