IOS技术分享| IOS快对讲调度场景实现

前言

“快对讲” 是基于 anyRTC 音视频技术 对讲业务的产品,为客户提供专业对讲、多媒体对讲和可视化调度功能。 主要功能包含:

  • 频道与会话
  • 多频道对讲、监听、锁定、强拆
  • 音视频单人、多人呼叫、呼叫调度台
  • 图片、视频上报
  • 视频回传、监看
  • 位置回传
  • 即时消息:文字消息、语音消息、图片消息、视频消息、文件消息、位置消息
  • 文字广播、媒体广播
  • 监控、录像服务、调度台。

功能体验

快对讲调度管理平台

场景功能实现

一、对讲
效果预览

ARUICalling_talk

部分代码实现
/**
 anyRTC 云平台对讲 频道方法。
 */
__attribute__((visibility("default"))) @interface ARTalkChannel: NSObject


/// ARTalkChannelDelegate 接口类向 App 发送回调通知,上报运行时的频道相关事件。
@property (nonatomic, weak, nullable) id<ARTalkChannelDelegate> channelDelegate;

/// 加入频道。
/// - Parameter completionBlock 同一用户只能同时加入最多 20 个频道。加入频道超限时用户会收到错误码 ARTalkJoinChannelErrorExceedLimit
- (void)joinWithCompletion:(ARTalkJoinChannelBlock _Nullable)completionBlock;

/// 离开频道。
/// - Parameter completionBlock ARTalkLeaveChannelBlock 回调返回本方法的调用结果。
- (void)leaveWithCompletion:(ARTalkLeaveChannelBlock _Nullable)completionBlock;

/// 设置自己的对讲等级
/// - Parameter level 说话等级,0为最大,level 越大等级越低
- (int)setLevel:(int)level;

/// 获取自己的对讲等级
/// - returns 对讲等级
- (int)getLevel;

/// 设置推送音频质量
/// - Parameter nQuality: 1-5 低,中,高,超高,HD,默认为1
- (int)setPushAudioQuality:(int)nQuality;

/// 设置拉取音频质量,暂不可使用
/// - Parameter nQuality: 1-5 低,中,高,超高,HD,默认为1
- (int)setPullAudioQuality:(int)nQuality;

/// 开始对讲
/// - Parameter nTalkOnTime: 对讲时长,0为无限制
/// - returns 0方法调用成功,小于0方法调用失败
- (int)pushToTalk:(int)nTalkOnTime;

/// 结束对讲
/// - returns 0方法调用成功,小于0方法调用失败
- (int)stopPushToTalk;

/// 是否接收频道其它声音
/// - Parameter mute: mute true 静音,false 解除静音
/// - returns 0方法调用成功,小于0方法调用失败
- (int)muteAllRemoteAudio:(BOOL)mute;

/// 打断对讲
/// - returns 0方法调用成功,小于0方法调用失败
- (int)breakTalk;

/// 是否接收广播流
/// - Parameter enable: YES 接收,NO 不接收
- (int)enableAudioStream:(BOOL)enable;

/// 获取频道 ID
- (NSString *)getChannelId;

@end
二、频道与会话
效果预览

ARUICalling_main

部分代码实现
class ARMainViewCellData: ARUICommonCellData {
    /// 群id
    var groupId: String = ""
    /// 是否监听
    var isMonitor: Bool = false
    /// 监听状态
    var monitorStatus: Bool = false
    var groupName: String = ""
    /// 群组类型(0:群组(频道),1:临时群组(会话))
    var groupType: Int = 1
    /// 在线人数
    var onlineCount: NSInteger = 0
    /// 群人数
    var memberCount: NSInteger = 0
    /// 用户在群组内权限(默认0,0:高,1:中,2:低,3:仅听)
    var permission: NSInteger = 0
    var isOwner: Bool = false
    var item: ARCahnnelItem!
    /// 对讲状态(优先级高)
    var talkStatus: String?
    /// 广播状态(优先级低)
    var broadCastStatus: String?
    /// 群组最大发言时长(单位:秒),默认:60s,0表示无限制
    var groupMaxSpeak: NSInteger = 60
    /// 最大排队人数(默认0:无排队,1:5人,2:10人)
    var groupMaxQueue: NSInteger = 0
    var groupDesc: String = ""
    /// 群组级别(默认:0,0:低,1:中,2:高)
    var groupGrade: NSInteger = 0
    var groupImId: NSInteger = 0
    /// 对讲状态
    var userDataNofi: ARTalkUserDataNofi?
    /// 未读数
    var unReadNum: NSInteger = 0
    
    weak var delegate: ARMainViewCellDataDelegate?
    weak var dataSource: ARMainViewCellDataSource?
    
    class func getCellData(item: ARCahnnelItem) -> ARMainViewCellData {
        let cellData = ARMainViewCellData()
        cellData.groupId = item.groupId
        cellData.groupImId = item.groupImId
        cellData.isMonitor = (item.isMonitor == 1)
        cellData.groupName = item.groupName
        cellData.groupType = item.groupType
        cellData.onlineCount = item.onlineCount
   
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值