Docs
Resources
Tools
News
to top

RCS

多方通话

创建多方通话

- (void)setupConferenceWithPhoneArray:(NSArray *)phoneArray {
    ZULONG dwConfId = Mtc_ConfCreate();
    ZULONG dwPartpLstId = Mtc_PartpLstCreate(EN_MTC_PARTP_LST_URI_LST);
    for (NSString* phone in phoneArray) {
        NSString* phoneNumber = FMUtilContactsGetDialablePhone(phone);
        Mtc_PartpLstAddPartp(dwPartpLstId, ZNULL, [MtcDBUtils formatPhone:phoneNumber]);
    }
    Mtc_ConfIvtUserLst(dwConfId, ZNULL, dwPartpLstId);
    //若创建成功返回ZOK,若失败返回ZFAILED
}

发起多方通话后会触发以下回调:

static ZVOID MtcConfCbOutgoing(ZULONG dwConfId) {
    //通话记录插入数据库,设置扬声器方式
}
static ZVOID MtcConfCbConned(ZULONG dwConfId) {
    //发起方会立即接收到该回调,显示多方通话创建成功
}
static ZVOID MtcConfCbPtptUpdt(ZULONG dwConfId, ZCHAR *pcUri, ZULONG dwState) {
    //发起方会立即收到其他成员的状态回调,初始状态为pengding,在用户接听起电话和挂断电话后都会收到该回调,更新数据库状态,并更新界面显示
}

多方通话来电时,会触发以下回调:

static ZVOID MtcConfCbIncoming(ZULONG dwConfId) {
    int size = Mtc_ConfGetPartpSize(dwConfId);
    for (int index=0 ; index<size; index++) {
        ZCHAR* ppcUri;
        ZCHAR* ppcDispName;
        Mtc_ConfGetPartpUri(dwConfId, index, &ppcDispName, &ppcUri);
        NSString *phone = [NSString stringWithUTF8String:Mtc_UriGetUserPart(ppcUri)];
        [phoneArray addObject:phone];
    }
    //获取各成员及主席信息,插入数据库,界面显示多方通话来电
}

同意加入多方通话

用户点击接听按钮,调用:

NSInteger dwConfId = [self getConfIdWithCallId:callId];
Mtc_ConfAcpt(dwConfId, ZNULL);

成功后会收到回调:

static ZVOID MtcConfCbConned(ZULONG dwConfId) {
    //该回调为被叫方开始计时点
}

拒绝加入多方通话

用户点击拒绝按钮,调用:

Mtc_ConfTerm(dwConfId, EN_MTC_CALL_TERM_REASON_DECLINE)

主动及被动终止多方通话,主席取消多方通话

多方通话成员可以退出,只有主席可以终止,主席调用:

    Mtc_ConfTerm(dwConfId, EN_MTC_CALL_TERM_REASON_NORMAL)

主席以及成员会收到回调:

static ZVOID MtcConfCbDisced(ZULONG dwConfId) {
    //更新数据库,界面取消通话界面显示
}

多方通话中加人

在多方通话中,只有主席可以添加成员,调用该接口:

NSInteger dwConfId = [self getConfIdWithCallId:callId];
for (NSString *phone in phoneArray) {
    Mtc_ConfIvtUser(dwConfId, [MtcDBUtils formatPhone:phone]);
}

主席会收到以下回调:

static ZVOID MtcConfCbIvtAcpt(ZULONG dwConfId, ZCHAR *pcUri) {
    NSString *phone = [NSString stringWithUTF8String:Mtc_UriGetUserPart(pcUri)];
    //获取成员号码,插入数据库,界面添加成员
}

多方通话订阅与通知

static ZVOID MtcConfCbPtptUpdt(ZULONG dwConfId, ZCHAR *pcUri, ZULONG dwState) {
    NSString *ptpNumber = [NSString stringWithUTF8String:Mtc_UriGetUserPart(pcUri)];
    
    switch (dwState) {
        case EN_MTC_CONF_PARTP_STATE_PENDING:
            break;
        case EN_MTC_CONF_PARTP_STATE_CONNED:
        {
            //更新群成员状态,此为计时开始点
            break;
        }
        case EN_MTC_CONF_PARTP_STATE_DISCED:
        {
            //更新群成员状态,该成员已退出多方通话或多方通话已结束
            break;
        }
        default:
            break;
    }
    //更新数据库
}
Juphoon © 2015 中文(简体)
关于我们 JusTalk 开发人员 招聘 隐私政策