すべてのiOSアプリケーションがIPV6ネットワークで動作するというAppleの新しい要件により、私は完全に壊れているPJSIPに基づくVOIPクライアントアプリケーションを持っています。私は問題を段階的に解決しようとしています。私が最初に修正したい問題は、SRVの解決です。PJSIP iOSがIPV6ネットワークでSRVレコードを解決できない
私のアプリでこのようなsrv解決を行い、失敗します(タイムアウト/結果なし)。同じipv6ネットワークにある私のMacでdigコマンドを使うことができ、pjsipからしようとしているSRVレコードを正しく解決します。ここでIPV6に使用する正しいAPIの入力はすべて歓迎します。
pj_dns_resolver* m_pDnsResolver = NULL;
::pj_dns_resolver_create(
&(m_cachingPool.Get().factory), // pf (pool factory)
NULL, // name
0, // options - must be 0
NULL, // timer - unused
NULL, // ioqueue - unused
&m_pDnsResolver)); // p_resolver
// Set the name server to be used (nameServer is 8.8.8.8)
const std::string localNameServer = nameServer;
pj_str_t servers[] = { ::pj_str(const_cast< char* >(localNameServer.c_str())) };
::pj_dns_resolver_set_ns(
m_pDnsResolver,
1, // count
servers,
NULL)); // ports
// Resolver start query method (DomainName cannot be mentioned here. SRV resolution works fine in IPV4 network)
void StartQuery(const std::string& domainName)
{
PJString name(domainName);
::pj_dns_resolver_start_query(
m_pDnsResolver, // resolver
&(name.Get()), // name
PJ_DNS_TYPE_SRV, // type
0, // options - must be 0
&ResolverCallback,
this, // user_data
&m_pAsyncQuery)
}
私はこの方法で接続できませんでした。私の主な問題はDNS SRVの解決であり、AppleのDNS Service Discovery API(Bonjour)を使用して一時的な回避策を得ることができました。オンラインですばらしい実装があります。私はそれに続き、ipv6環境で私のSRVレコードを解決するようです。これがあなたのために働くかどうか私に教えてください。 https://justanapplication.wordpress.com/category/ios/ios_api/dns_sd_api/dnsservicequeryrecord/ – adsun
最新のアップデートはipv6 NATをサポートしていますのでご注意ください –
私はPJSIP 2.6を使用しています。このバージョンでは、私のアプリケーションはIPv6アドレスを提供する場合にのみIPv6で動作します。しかし、私のSIPサーバがIPv6アドレスをサポートしていない場合は、問題に直面します。この場合、Appleの承認を受ける方法はありますか? –