1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > ios开发 多人语音聊天_iOS语音通话功能实现流程(实时语音通话二)

ios开发 多人语音聊天_iOS语音通话功能实现流程(实时语音通话二)

时间:2020-09-05 06:59:44

相关推荐

ios开发 多人语音聊天_iOS语音通话功能实现流程(实时语音通话二)

上一篇我们讲述了iOS语音通话SDK集成指引,今天就来看下iOS下实时语音通话功能实现的流程。实时语音场景的典型之一是同一会话中的成员进行实时语音对话。

以 2 人间的实时语音为例,主要流程如下:

请注意:

上面流程中以 2 名房间成员间的实时语音为例,实际上 Zego SDK 支持多人实时语音。建议开发者按需设计。

为了便于开发者更快理解 AudioLive 中的逻辑,下述每节会将功能核心源码片段挑出来并加以讲解。开发者亦可直接阅读 AudioLive 源码,两者是一致的。

1、登录房间

用户间进行实时语音对话前,需要先登录到同一个房间。

AudioLive 中登录相关源码片段演实时语音示如下,仅供参考:

ZegoAudioLiveViewController.m

// 登录房间

[[ZegoAudioLive api] loginRoom:self.sessionID completionBlock:^(int errorCode) {

if (errorCode != 0)

{

[self addLogString:[NSString stringWithFormat:NSLocalizedString(@"加入session失败: %d", nil), errorCode]];

self.tipsLabel.text = [NSString stringWithFormat:NSLocalizedString(@"登录房间失败: %d", nil), errorCode];

}

else

{

self.mutedButton.enabled = YES;

self.publishButton.enabled = YES;

self.messageButton.enabled = YES;

[self addLogString:[NSString stringWithFormat:NSLocalizedString(@"加入session成功", nil)]];

self.tipsLabel.text = [NSString stringWithFormat:NSLocalizedString(@"登录房间成功", nil)];

}

}];

2、发布直播

房间内成员均可发布直播,用户进入房间成功,默认会自动发布直播。此时 SDK 会自动开始推流,用户无需手动触发。

请注意:如果新用户进入房间,只想播放实时语音(但不推流),可在登录房间前,设置为手动发布直播。则用户进入房间后,不会自动推流。

AudioLive 中手动发布直播相关源码片段演示如下,仅供参考:

ZegoAudioLiveViewController.m

// 用户主动点击发布直播按钮

- (IBAction)onPublishButton:(id)sender

{

if (self.isPublished)

{

// 停止直播

[[ZegoAudioLive api] stopPublish];

[self.publishButton setTitle:NSLocalizedString(@"开始直播", nil) forState:UIControlStateNormal];

self.isPublished = NO;

// 删除流

for (ZegoAudioStream *audioStream in self.streamList)

{

if ([audioStream.userID isEqualToString:[ZegoSettings sharedInstance].userID])

{

[self.streamList removeObject:audioStream];

break;

}

}

[self.tableView reloadData];

}

else

{

// 手动发布直播

BOOL result = [[ZegoAudioLive api] startPublish];

if (result == NO)

{

self.tipsLabel.text = NSLocalizedString(@"开播失败,直播流超过上限", nil);

}

else

{

[self.publishButton setTitle:NSLocalizedString(@"停止直播", nil) forState:UIControlStateNormal];

self.publishButton.enabled = NO;

}

}

}

3、播放直播

房间内成员均可播放直播,登录房间成功后,SDK 会自动拉流播放直播。用户无需手动触发拉流。

4、结束音频直播

音频通话结束后的操作主要是登出房间、清理视图或数据等。开发者可按需调用。

AudioLive 中结束音频直播相关源码片段演示如下,仅供参考:

ZegoAudioLiveViewController.m

// 关闭实时语音通话 ViewController

- (IBAction)closeView:(id)sender

{

// 退出房间

[[ZegoAudioLive api] logoutRoom];

[self.streamList removeAllObjects];

[self dismissViewControllerAnimated:YES completion:nil];

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。