アプリが中断されている場合でも、tcp ソケットをリッスンするようにアプリをセットアップしようとしています。Apple のドキュメントで説明されているように、Info.plist で voip-background モードを設定しました。今、私は「VoIP 使用のためにアプリのソケットの 1 つを構成してください。」と書かれているところに行き詰まっています。CFReadStreamSetProperty() メソッドでこれを実行しようとしていますが、ポイントはソケットを作成する方法です。ソケットの作成は、次のように標準の C ライブラリを介して行われます。
int mySock = socket(AF_INET, SOCK_STREAM, 0);
これは、既存のライブラリ内の .cpp ファイル内で行われます。これは、VoIP を使用するためにソケットを構成しようとしたものです。
CFStreamCreatePairWithSocket(kCFAllocatorDefault, sock, &readStream, &writeStream);
if(readStream && writeStream)
{
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
}
私がステップスルーすると、見栄えは良いのですが、残念ながら機能しません。アプリがフォアグラウンドからバックグラウンド/サスペンドに移行するたびに、接続が失われ、サーバーからの入力は無視されます。ソケットの構成をこのように行うことができるかどうかはまったくわかりません。それに対する答えが見つかりません。