如何在 ios 中使用带有域的 pjsip 添加对 IPv6 的支持?

Posted

技术标签:

【中文标题】如何在 ios 中使用带有域的 pjsip 添加对 IPv6 的支持?【英文标题】:How to add support of IPv6 using pjsip with Domain in ios? 【发布时间】:2020-09-10 07:19:20 【问题描述】:

我制作了 VOIP 应用程序。现在在 ios 代码中添加了 ipv6,但它仅使用 IP。我们使用域的 IP 的 insted 然后给我们一个错误。 错误:-“503(错误网关)。”

在下面的代码中使用了对 ipv6 的额外支持。

pj_status_t status;
pjsua_acc_config acc_cfg;
const char *uname;
const char *authname;
const char *contactname;
const char *passwd;
const char *server;
//const char *proxy;

NSLog(@"isIPv6 = %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"isIPv6"]);

uname  = authname = contactname = [SharedAppDelegate.username UTF8String];//[@"4069567731" UTF8String];//
passwd = [SharedAppDelegate.password UTF8String];//[@"4069567731" UTF8String];//
server = (char*)[SharedAppDelegate.baseurl UTF8String];//[@"voiceforfriends.info" UTF8String];//

NSLog(@"Name is--->%s",uname);
NSLog(@"password is-->%s",passwd);
NSLog(@"server is--->%s",server);

NSLog(@"IPv6 flag = %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"isIPv6"]);

if([[[NSUserDefaults standardUserDefaults] objectForKey:@"isIPv6"] isEqualToString:@"1"])

    server = [@"[2607:feb8::4:ce]:7777" UTF8String]; 
    

contactname = nil;

//pjsua_acc_config_default(&acc_cfg);
printf("1");
pjsua_acc_config_default(&acc_cfg);

所以现在我想为 ipv6 使用域而不是 Ip。

所以任何人都有解决方案然后请帮助我。

提前致谢。

【问题讨论】:

您使用的是哪个服务器? FreeSWITCH 或 Kamailio @ShahbazAbbasi 我们正在使用 freeswitch 【参考方案1】:

您也可以在服务器端处理此问题。

您需要在服务器端进行两项更改。

    配置级别 操作系统级别

1.配置级别 您需要打开 vars.xml 文件并将以下代码粘贴到该文件中。

2。操作系统级别 您需要转到此路径 /etc/hosts/ 并添加此行。

127.0.0.1 localhost yourdomain.com

注意:不要忘记将我的示例域地址替换为您的原始域地址。

【讨论】:

Shahbaz,我希望它在 iOS 的目标 c 中。 @shraddhakvaishanani 您不能在客户端执行此操作。其他解决方案是您可以使用第三方/公司通过提供域名和您的 IP 地址来为 DNS 创建条目。他们会为此向您收取少许费用。

以上是关于如何在 ios 中使用带有域的 pjsip 添加对 IPv6 的支持?的主要内容,如果未能解决你的问题,请参考以下文章

PJSIP iOS 错误

如何在我的 iOS 项目中为模拟器和设备构建和集成 pjsip 2.5.5?

pjsip ios:蓝牙不工作

在 iOS 应用中集成 pjsip

如何构建和使用PJSIP用于不同于armeabi的架构?

为 iOS 4.0 编译 pjsip