2

我在我的应用程序中使用 pjsip。在注册时,我将超时设置为 60 秒。每 60 秒后,我的帐户将重新注册,但在我的情况下并没有发生。如果有人知道为什么,请告诉我(我设置了调用 pjsip 帐户添加方法所需的任何字段,如果我错过任何事情,请告诉我)。

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;
}

日志

05-03 12:17:58.820: I/libpjsip(1003): 12:17:58.826    pjsua_acc.c  

注册成功,status=200(OK),60秒后重新注册

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
4

2 回答 2

0

看到这个

我不知道您面临的问题,但是当我尝试使用您的代码时遇到了问题,我设法按照相关问题中的描述进行了修复

于 2013-05-13T08:49:49.543 回答
0

您需要设置间隔

cfg.reg_retry_interval

我很确定 Java API 提供了这个属性。

于 2015-12-10T19:17:15.287 回答