4

UDP のみの SIP サーバーと通信できる ios sip アプリケーションがいくつかあります。

私が知っているように、iOS では TCP 接続のみをバックグラウンドで開いたままにすることができますが、ほとんどの SIP プロバイダーは UDP のみをサポートしています。

iOS アプリケーション 3CXPhone には「NAT ヘルパー モード」があり、UDP のみの 3CX Phone システムとの通信をバックグラウンドで維持できることに気付きました。彼らがどんなトリックを使っているか知っている人はいますか?私は SIP アプリを開発しており、UDP のみの SIP プロバイダーで動作するようにする必要があります。

SOのバックグラウンドでUDPソケットに関する複数の質問があることは知っていますが、それらのどれにも有用な答えがないか、提案された解決策が機能しなくなりました(iOS 6以降)。

1. いくつかの GPS イベントを使用し、そのイベントの間もソケット通信を維持します。その後、アップルをだましてアプリをストアに入れようとします。2. 中間 (B2BUA) で SIP プロキシを使用します。しかし、3CXPhone の「NAT ヘルパー モード」では、sip プロキシ構成が表示されません。

4

1 に答える 1

0

UDP ソケットが本当に必要な場合は、いくつかのものが必要になります。

  • UIRequiresPersistentWiFi:iOSがWi-Fiに接続し、しばらくしてからオフにならないようにするため(これを無視するだけでなく、Wi-Fiも必要だと思います)
  • バックグラウンドで空のオーディオをループ再生して、アプリケーションをアクティブに保ちます。
  • 約 10 秒ごとにポップし、小さな (crlf などの) メッセージをサーバーに送信するタイマーを用意します。

ネットワークで UDP 接続を開いたままにするには、最後の手順が必要です。頻繁に何も送信しない場合、ネットワーク内の誰か (ルーターなど) がそれを閉じます。

空のオーディオ ファイルは、短い間隔 (10 秒のタイマー) でバックグラウンドで何かを実行できるようにする唯一の方法です。

それをすべて書いた後:これは多くのバッテリーを消費します。ユーザーがアプリを長時間実行したままにすることはありません。

最新の SIP サーバーのほとんどは TCP をサポートしています。TCP ソリューションに時間を費やすべきです。UDP はユーザーに受け入れられません。

于 2013-03-09T12:27:56.940 に答える