本篇是即构科技音视频SDK高级功能第四篇,ZegoLiveRoom SDK 打断事件处理,以iOS环境为例。

1、简介

使用 ZegoLiveRoom SDK 直播过程中,可能会被来电、切后台等事件打断,此时开发者需要处理打断事件。

SDK 提供了与音频打断事件相关的API,如下所示:

ZegoLiveRoomApi.h/**暂停模块@param moduleType 模块类型,参考 ZegoAPIModuleType 定义@attention 用于需要暂停指定模块的场合,例如来电时暂定音频模块@note 暂停指定模块后,注意在合适时机下恢复模块*/
- (void)pauseModule:(int)moduleType;
ZegoLiveRoomApi.h/**恢复模块@param moduleType 模块类型,参考 ZegoAPIModuleType 定义@attention 用于需要恢复指定模块的场合,例如来电结束后恢复音频模块@note 暂停指定模块后,注意在合适时机下恢复模块*/
- (void)resumeModule:(int)moduleType;

本文以来电和切后台为例,讲述如何处理打断事件。

2、来电

2.1 监听音频打断事件

开发者需要在合适的 ViewController 中或其他位置,监听音频打断事件。

示例代码片段如下:

// 监听电话事件
[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(audioSessionWasInterrupted:)name:AVAudioSessionInterruptionNotificationobject:nil];

2.2 处理音频打断

音频打断处理一般有两个步骤:

1.音频打断发生时,暂停音频设备

2.音频打断恢复后,恢复音频设备

示例代码片段如下:

- (void)audioSessionWasInterrupted:(NSNotification *)notification
{NSLog(@"%s: %@", __func__, notification);if (AVAudioSessionInterruptionTypeBegan == [notification.userInfo[AVAudioSessionInterruptionTypeKey] intValue]){// 暂停音频设备[[ZegoDemoHelper api] pauseModule:ZEGOAPI_MODULE_AUDIO];}else if(AVAudioSessionInterruptionTypeEnded == [notification.userInfo[AVAudioSessionInterruptionTypeKey] intValue]){// 恢复音频设备[[ZegoDemoHelper api] resumeModule:ZEGOAPI_MODULE_AUDIO];}
}

Apple 官方示例详见: MusicCube

3、切后台

3.1 支持后台播放

如果开发者希望 App 退至后台依然支持音频播放、录制,需要先在项目中开启后台模式,并指定模式为 Audio,AirPlay,and Picture in Picture,如图所示:

设置后,Xcode 会自动在项目的 Info.plist 中添加对应条目 Required background modes: App plays audio or streams audio/video using AirPlay。

开启此选项,当应用退至后台,只要有音频播放、录制行为,就可以一直运行。运行时,状态栏会变成红色,指示用户当前有麦克风设备在后台运行。

3.2 停止后台播放

开发者开启后台模式,如果在某些场景下需要在后台停止音频播放或录制,依然可以使用 pauseModule resumeModule 实现。

请注意,iOS 系统不支持 App 在后台播放或采集视频画面(注意视频声音属于声音内容,支持后台播放),因此视频画面无需额外暂停或恢复。

对于 App 切换前后台行为的监听,有两种常用方式:

1.在 AppDelegate.m 对应的系统方法中处理。详见 Apple 官方指南:The App Life Cycle

2.注册通知监听状态。示例代码如下:

// 监听 App 切后台
[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(appDidEnterBackground:)name:UIApplicationDidEnterBackgroundNotificationobject:nil];// 监听 App 从后台切前台
[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(appWillEnterForeground:)name:UIApplicationWillEnterForegroundNotificationobject:nil];

在上述方法中,停止后台播放音频的步骤为:

1.App 切后台,调用 pauseModule 暂停音频模块。

2.App 切换回前台,调用 resumeModule 恢复音频模块。

直播打断事件处理(音视频SDK高级功能四)相关推荐

  1. 混流(音视频SDK高级功能二)

    1.简介 混流是把多路音视频流混合成单流的技术.本文讲述zego即构科技实时音视频SDK高级功能之一:混流功能,以iOS环境为例. 主播端和观众端均可主动触发混流.SDK 既支持音视频混流,也支持纯音 ...

  2. 音频前处理:回声消除、噪声抑制等(音视频SDK高级功能六)

    音频前处理技术一般用于去除语音中的干扰.本篇文章介绍即构科技音视频SDK高级功能第六篇,ZegoLiveRoom SDK 为开发者提供了音频前处理的功能,还是以iOS环境为例. 关于如何使用SDK,请 ...

  3. 音视频SDK包-远程网络视频会议-在线远程教育-屏幕共享-电子白板-影音共享-在线直播等等都可以用

    史上最全的音视频SDK包分享给大家 概述一下SDK功能: 项目 详情 视频通信  支持多种分辨率的视频通信 语音通信  提供语音通信,可支持高清宽带语音 动态创建房间  可以根据需要,随时创建房间 H ...

  4. linux搭建音视频服务器,Linux平台部署音视频SDK实现即时通讯功能

    Linux平台部署音视频SDK实现即时通讯功能 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码 ...

  5. 新增微信小程序和WebRTC连麦直播等多项能力,即构实时音视频SDK再升级!

    经过2018年小半年的闭关练功,即构ZEGO团队铸造了不少黑科技.本文将为你带来即构ZEGO实时语音视频SDK近半年新增能力和功能优化的最新进展. 更懂应用场景的语音视频云 作为全球领先的实时语音视频 ...

  6. 新增微信小程序、WebRTC连麦直播多项能力,即构实时音视频SDK再升级

    经过2018年小半年的闭关练功,即构ZEGO团队铸造了不少黑科技.本文将为你带来即构ZEGO实时语音视频SDK近半年新增能力和功能优化的最新进展. 更懂应用场景的语音视频云 作为全球领先的实时语音视频 ...

  7. “小程序+直播”怎样搅动音视频技术生态?

    ​ 责编 / 王宇豪 策划 / LiveVideoStack 12月26日晚间,微信小程序开放了直播能力,并首先向社交.教育.医疗.政务民生.金融等五大应用场景开放.与原生App应用和基于浏览器的H5 ...

  8. 移动音视频SDK工程实践之数据采集和处理

    本文由百度智能云音视频SDK产品技术负责人李明路在LiveVideoStack线上分享的演讲内容整理而成,内容从音视频数据角度出发,梳理了音视频SDK的发展和技术演进.详细分析数据在常见音视频模块上遇 ...

  9. linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用

    Linux平台音视频开发和音视频SDK应用 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码标准 ...

最新文章

  1. 029# Adempiere采购模组-从采购申请创建采购订单
  2. Invoice校验差异处理
  3. java线程在什么时候结束,java – 什么时候线程超出范围?
  4. ps cs6磨皮插件_【PS插件】ps磨皮插件Portraiture
  5. ConcurrentHashMap的初步使用及场景
  6. 【转】刨根究底字符编码之十——Unicode字符集的字符编码方式
  7. JAVA实现onvif的ptz控制_使用Onvif协议进行设备PTZ云台控制
  8. H5 中 bordercolorlight 属性的用法及作用
  9. 总结几种常用的安全算法
  10. python每日一题今天的答案_python每日一题总结1
  11. read.table与readr::read_delim
  12. jQuery 常用效果
  13. JQuery筛选器全系列介绍
  14. tuned-adm性能优化工具详解
  15. python机械数据分析_记一次小机器的 Python 大数据分析
  16. 叩丁狼学院Java入门 项目代码
  17. CCF试题 201903-2 二十四点
  18. Android Room 数据库使用记录
  19. 《罗辑思维不逻辑》之那些温柔的操纵
  20. Spring boot + Sharding JDBC 分库分表 及 分布式事务处理

热门文章

  1. 用u-view写的uni-app常用的表单形式精品分析
  2. 008:超简单的复数类
  3. 小盒子解决大问题加油站智能视频分析盒子
  4. 4个byte转int
  5. 【Unity3D Shader编程】之四 热带雨林篇 剔除 深度测试 Alpha测试以及基本雾效合辑
  6. 初学Python(六)
  7. 开发微博Flash应用详解(转)
  8. CNN中的卷积的意义
  9. 炉石传说的竞技场模式平均胜场
  10. 美国最高法院确定保密或不公开技术细节之销售仍将触发on-sale bar导致丧失可专利性