1.3.1 初始化註冊
爲了啓動註冊,您需要建立一個默認的REGISTER請求,同時需要提供幾個強制性的頭部。
osip_message_t *reg = NULL;
int id;
int i;
eXosip_lock ();
id = eXosip_register_build_initial_register (identity, // 發送人URL
registrar, // 服務器URL
NULL,
1800, // 到期時間
®);
if (id < 0)
{
eXosip_unlock ();
return -1;
}
osip_message_set_supported (reg, "100rel");
osip_message_set_supported(reg, "path");
i = eXosip_register_send_register (id, reg); // 發送註冊請求
eXosip_unlock ();
return i;
eXosip_register_build_initial_register函數的返回值爲註冊ID,您可以用來升級註冊。在之後的關於該註冊的事件中,您將會看到註冊ID(如適用)。
1.3.2 升級註冊
您只需要再次使用註冊ID即可。
int i;
eXosip_lock ();
i = eXosip_register_build_register (id, 1800, ®);
if (i < 0)
{
eXosip_unlock ();
return -1;
}
eXosip_register_send_register (id, reg);
eXosip_unlock ();
注意:上述代碼表明,協議棧有時只需要一個API函數就可以建立和發送默認的SIP消息。
1.3.3 關閉註冊
當軟電話終止時,它應該刪除自己在服務器上的註冊信息。爲了實現該目的,您需要發送一個REGISTER請求,其中expires頭部設置爲0(即:到期時間爲0)。代碼和升級註冊一樣,只不過需要將到期時間由1800改爲0。