帐户重新登记在PJSIP [英] Account re-registration in pjsip
问题描述
我用我的应用程序PJSIP。在注册的时候,我的超时设置为60秒。每隔60秒后,我的帐户将重新注册,但我的情况没有发生。如果有人知道这是为什么,请告诉我(我设置为来电PJSIP帐户添加方法,如果我错过任何事,请告诉我什么领域需要)。
setRegistration(字符串sipUser,密码字符串,字符串sipServer){ INT状态= pjsuaConstants.PJ_FALSE;
/ *注册通过创建SIP帐户SIP服务器。 * /
{ INT [] ACCID =新INT [1]; ACCID [0] = 1; pjsua_acc_config CFG =新pjsua_acc_config();
pjsua.acc_config_default(CFG);
csipsimple_acc_config css_cfg =新csipsimple_acc_config();
pjsua.csipsimple_acc_config_default(css_cfg);
cfg.setPriority(100);
cfg.setId(pjsua.pj_str_copy(SIP:+ sipUser +@+ sipServer));
cfg.setReg_uri(pjsua.pj_str_copy(SIP:+ sipServer
+;运输= UDP; LR));
cfg.setReg_timeout(60);
cfg.setCred_count(1); cfg.setPublish_enabled(0);
cfg.setReg_delay_before_refresh(-1); cfg.setUse_timer(pjsua_sip_timer_use.PJSUA_SIP_TIMER_OPTIONAL); pjsip_cred_info cred_info = cfg.getCred_info();
cred_info.setRealm(pjsua.pj_str_copy(sipServer));
cred_info.setScheme(pjsua.pj_str_copy(消化));
cred_info.setUsername(pjsua.pj_str_copy(sipUser));
cred_info
.setData_type(pjsip_cred_data_type.PJSIP_CRED_DATA_PLAIN_PASSWD
.swigValue());
cred_info.setData(pjsua.pj_str_copy(密码));
cfg.setKa_interval(0); pjsua.csipsimple_set_acc_user_data(CFG,css_cfg);
Log.i(身份,ACC是增加......);
状态= pjsua.acc_add(CFG,pjsuaConstants.PJ_FALSE,ACCID);
Log.i(身份,ACC加); 如果(状态== pjsuaConstants.PJ_SUCCESS){
状态= pjsua.acc_set_online_status(ACCID [0],1);
Log.i(设置在线状态在线,--- online--+状态);
}其他{
Log.i(未成功,联合国--- success--+状态);
}
}
返回状态== pjsuaConstants.PJ_SUCCESS;
}
日志
12月5日至3日:17:58.820:I / libpjsip(1003):12:17:58.826 pjsua_acc.c
注册成功,状态= 200(OK),将在60秒重新注册
12月5日至3日:17:58.820:D / libpjsip(1003):12:17:58.827 pjsua_acc.c ....保活定时器开始为ACC 1,目的地:4.53.123.201:5060,间隔:40秒
您需要设置的时间间隔
cfg.reg_retry_interval
块引用>我是pretty确保Java API提供这个属性。
I'm using pjsip in my application. At the time of registration I set the timeout to 60 sec. After every 60 seconds my account will re-register but in my case it is not happening. If anybody knows why, please tell me (I set whatever fields required to call pjsip account add method, if i miss any thing please tell me).
setRegistration(String sipUser, String password,String sipServer) { int status = pjsuaConstants.PJ_FALSE; /* Register to SIP server by creating SIP account. */ { int[] accId = new int[1]; accId[0] = 1; pjsua_acc_config cfg = new pjsua_acc_config(); pjsua.acc_config_default(cfg); csipsimple_acc_config css_cfg = new csipsimple_acc_config(); pjsua.csipsimple_acc_config_default(css_cfg); cfg.setPriority(100); cfg.setId(pjsua.pj_str_copy("sip:" + sipUser + "@" + sipServer)); cfg.setReg_uri(pjsua.pj_str_copy("sip:" + sipServer + ";transport=udp;lr")); cfg.setReg_timeout(60); cfg.setCred_count(1); cfg.setPublish_enabled(0); cfg.setReg_delay_before_refresh(-1); cfg.setUse_timer(pjsua_sip_timer_use.PJSUA_SIP_TIMER_OPTIONAL); pjsip_cred_info cred_info = cfg.getCred_info(); cred_info.setRealm(pjsua.pj_str_copy(sipServer)); cred_info.setScheme(pjsua.pj_str_copy("Digest")); cred_info.setUsername(pjsua.pj_str_copy(sipUser)); cred_info .setData_type(pjsip_cred_data_type.PJSIP_CRED_DATA_PLAIN_PASSWD .swigValue()); cred_info.setData(pjsua.pj_str_copy(password)); cfg.setKa_interval(0); pjsua.csipsimple_set_acc_user_data(cfg, css_cfg); Log.i("status", "acc is adding...."); status = pjsua.acc_add(cfg, pjsuaConstants.PJ_FALSE, accId); Log.i("status", "acc is added"); if (status == pjsuaConstants.PJ_SUCCESS) { status = pjsua.acc_set_online_status(accId[0], 1); Log.i("Setting online status to online", "---online--" + status); } else { Log.i("Not success", "---un success--" + status); } } return status == pjsuaConstants.PJ_SUCCESS; }
Logs
05-03 12:17:58.820: I/libpjsip(1003): 12:17:58.826 pjsua_acc.c
registration success, status=200 (OK), will re-register in 60 seconds
05-03 12:17:58.820: D/libpjsip(1003): 12:17:58.827 pjsua_acc.c ....Keep-alive timer started for acc 1, destination:4.53.123.201:5060, interval:40s
解决方案You need to set the interval
cfg.reg_retry_interval
I am pretty sure that Java API provides this property.
这篇关于帐户重新登记在PJSIP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!