如何在重新注册时更改pjsip注册帐户?

Ret*_*tro 7 voip sip objective-c pjsip ios

我正在使用iOS的pjsip,我已经配置了pjsip并且能够注册并重新注册特定的时间间隔,但是有一种情况我想在重新注册时更改pjsip帐户的详细信息,但是我没有在谷歌上找到任何可以指导如何改变它的东西.

如果有人对此有所了解,请指导我如何pjsua_acc_config在重新注册时更改详细信息,我会在重新注册时收到方法调用.

static void on_reg_state2(pjsua_acc_id acc_id, pjsua_reg_info *info) {
    PJ_LOG(3,(__FILE__, "%s: Account %d Reason %.*s Status %d code %d CurrentOp %d",
              __FUNCTION__, acc_id, info->cbparam->reason.slen, info->cbparam->reason.ptr,
              info->cbparam->status,info->cbparam->code, info->cbparam->regc));
}
Run Code Online (Sandbox Code Playgroud)

jkr*_*jkr 2

获取帐户 ID 的帐户配置,并将字段设置为 on_reg_state2 函数中所需的任何内容。

if (pjsua_acc_is_valid(acc_id))
 {
    pjsua_acc_set_default(acc_id);
    pjsua_acc_config acc_cfg;
    pj_status_t status;
    pjsua_acc_config_default(&acc_cfg);

    acc_cfg.id = pj_str(id);
    acc_cfg.reg_uri = pj_str(registrar);
    acc_cfg.cred_count = 1;
    acc_cfg.cred_info[0].scheme = pj_str("Digest");
    acc_cfg.cred_info[0].realm = pj_str(realm);
    acc_cfg.cred_info[0].username = pj_str(uname);
    acc_cfg.cred_info[0].data_type = 0;
    acc_cfg.cred_info[0].data = pj_str(passwd);

    acc_cfg.publish_enabled = PJ_TRUE;

  }
Run Code Online (Sandbox Code Playgroud)

  • 除了修改一些本地(基于堆栈的)变量之外,这段代码没有做太多事情。调用 pjsua_acc_modify 实际上会做一些事情,尽管我不确定在帐户回调内修改帐户是否实际上是个好主意 - 它现在可能有效并且安全(即使用特定的 pjsip 版本),但我宁愿在这里设置一些标志,然后执行实际操作来自应用程序线程的修改。 (2认同)