2016-05-18 13 views
4

すべての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) 
} 

答えて

3

私は同じように取り組んでいます。

AppleはすべてのiOSデベロッパーに、Macのネットワーク共有を使ってアプリをテストするように頼んだ。そのネットワーク共有はNAT64を使用します。enter image description here

複数のスレッドとPJSIP独自のドキュメントに基づいて、IPv6はNAT環境のPJSIPによってまだサポートされていません。

Ref1の.: pjnathで https://trac.pjsip.org/repos/wiki/IPv6

IPv6サポート(STUNとICE)

が行われます。

pjnathでIPv6サポートを追加する作業は、チケット#422で文書化されています。

Ref2の.: http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2016-February/018965.html

2016年1月29日、午前4時49分で、リザ・Sulistyoは書きました:

こんにちはニック、

を我々は(でipv6のためのオープンチケットを持っている# 419)および(#422)。 チケットの優先順位を2.6、 にすることを考えていますが、まだ現時点では決まっていません。

+

こんにちはニック、

我々は、回避策を持っているので、残念ながら、DNSのサポート(IPv6)は、当社のロードマップには、現在ではありません。 しかし、実装に興味がある場合は、パッチを公開しています。サーバーのIPv6アドレスを解決し、プロキシとして、私が持っていることを指定することで

おかげリザ、

+

しかし、このための回避策があるようですipv6経由でpjsipを接続できるようになりました。

PJSIPライブラリ(2.4.5)とまったく同じバージョンを使用しようとしていますが、この方法でサーバーに接続しようとすると、私はアサートしています。

この方法で接続できますか?

ありがとうございます!

+1

私はこの方法で接続できませんでした。私の主な問題はDNS SRVの解決であり、AppleのDNS Service Discovery API(Bonjour)を使用して一時的な回避策を得ることができました。オンラインですばらしい実装があります。私はそれに続き、ipv6環境で私のSRVレコードを解決するようです。これがあなたのために働くかどうか私に教えてください。 https://justanapplication.wordpress.com/category/ios/ios_api/dns_sd_api/dnsservicequeryrecord/ – adsun

+1

最新のアップデートはipv6 NATをサポートしていますのでご注意ください –

+0

私はPJSIP 2.6を使用しています。このバージョンでは、私のアプリケーションはIPv6アドレスを提供する場合にのみIPv6で動作します。しかし、私のSIPサーバがIPv6アドレスをサポートしていない場合は、問題に直面します。この場合、Appleの承認を受ける方法はありますか? –

関連する問題