iOS - idoubs 通话判断对方状态(在线、拒接、无人接听、挂断)

本文介绍如何在iOS的idoubs应用中添加功能,判断通话的对方状态,包括在线、拒接、无人接听和挂断。通过修改_NgnSipCallback中的私有变量,并监听特定的tsip_event_code,如dialog_connected和dialog_terminated,来实现通话状态的跟踪。此外,还提到了记录通话开始时间和使用通知中心更新状态的方法。
摘要由CSDN通过智能技术生成

打开NgnSipService.mm文件中有_mSipCallback变量,用来回调事件状态传值。
我们知道idoubs中原来并没有类似于“对方是否在线” “对方是否挂断电话” 但是实际项目中是有这些需求的。
所以,我们自行加入一些变量,用来判断对方的状态!

1.首先我们在定义_NgnSipCallback中来定义几个私有变量:
这里写图片描述

private:
    NgnSipService* mSipService;
    NgnBaseService<INgnConfigurationService>* mConfigurationService;

    //以下为自己加上的变量
    long timeStart;  //记录整个开始拨打的时间
    long timeEnd;    //记录整个结束时间
    bool isInComing = false;  //判断是否是来电
    long inCallTimeStart = 0; //记录接听通话开始的时间
    long inCallTimeEnd = 0;   //记录接听结束通话的时间

还要给事件添加几个状态:
这里写图片描述

//枚举
typedef enum NgnInviteEventTypes_othere {

    OTHER_DEFAULT,  // 对方默认状态
    OTHER_ANSWER_NOT, //对方未接听状态
    OTHER_ANSWER_OR_REJECT,//对方接听或拒绝状态
    OTHER_REJECT //对方拒绝状态
}
NgnInviteEventTypes_other;


//增加属性
@property (nonatomic,assign) NgnInviteEventTypes_other otherInCallstate;
@property (nonatomic,assign) bool otherNotAnswer;
@property (nonatomic,assign) bool otherIsOnLine;

2.找到事件连接状态: tsip_event_code_dialog_connected
再找到 Audio/Video/MSRP(Chat, FileTransfer) 表明是通话的事件
接下来加上代码:

else if (((ngnSipSession = [NgnAVSession getSessionWithId: _sessionId]) != nil) || ((ngnSipSession = [NgnMsrpSession getSessionWithId: _sessionId]) != nil)){
                    eargs = [[NgnInviteEventArgs alloc]
                             initWithSessionId: _sessionId
                             andEvenType:INVITE_EVENT_CONNECTED
                             andMediaType:((NgnInviteSession*)ngnSipSession).mediaType
                             andSipPhrase:phrase];
                    [ngnSipSession setConnectionState:CONN_STATE_CONNECTED];
                    [((NgnInviteSession*)ngnSipSession) setState:INVITE_STATE_INCALL];


                    //  ---------  拨打电话给对方做判断

                    if (!isInComing) {
                        NSLog(@"拨出");
                        bool otherIsOnLine = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值