pjsua2一些注意的点

9 篇文章 0 订阅

为什么用它

因为使用pjsip的c接口,太麻烦了。
同时因为项目使用的是c++,自己也要封装,最后选择了它们提供的pjsua2的类接口。感觉还不错。就是有些地方要注意一下。

注意的地方

因为pjsua2仅仅是对pjsip库的c++封装,因此pjsip有的问题,pjsua2也肯定有。

反注册没有回调

注册成功了会有注册状态变化的回调接口调用。注销之后就没有了。
其实想想也对。注销信号发送之后就不用获取返回验证了。
这里分情况
如果调用的

m_pAccount0->setRegistration(false);

则在Account类中会有回调。

如果调用的是shutdown则不会有回调。

多账户的管理

某些高级一点的还是需要c接口的。eg:枚举当前所有的账户。
我还没找到好的办法。

/*
 * Get number of current accounts.
 */
PJ_DEF(unsigned) pjsua_acc_get_count(void)

/*
 * Enum accounts info.
 */
PJ_DEF(pj_status_t) pjsua_acc_enum_info( pjsua_acc_info info[],
					 unsigned *count )

从 pjsua_acc_enum_info 获取到每一个的id,然后调用 Account *Account::lookup(int acc_id),就可以得到Account *,再转换成你自己的指针。
Account 在调用 create的时候,会把自己的指针传进去。
在这里插入图片描述

账户相关的函数

pjsua_acc_is_valid(id) 

注销之后还能外呼

不知道这算不算bug,调用注销之后,还能外呼。但是不能呼入了。
我抓了一下包,证实了确实发送了注销消息。

modify 函数

    /**
     * Modify the account to use the specified account configuration.
     * Depending on the changes, this may cause unregistration or
     * reregistration on the account.
     *
     * @param cfg 		New account config to be applied to the
     * 				account.
     */
void modify(const AccountConfig &cfg) PJSUA2_THROW(Error);

如果account本身注册状态,那么它就会在更新后发起注册。如果本事不是注册状态,那么它就仅仅是更新信息。

setOnlineStatus 函数

这个是给订阅了消息的小伙伴看的。
这个暂时没用过。

通话中注销

在通话的过程中将Account注销。
发现通话竟然还能继续。看起来像是账户跟通话底层没关联似的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值