VoIP-сокет на iOS - уведомления не получены

У меня есть приложение VoIP, которое использует службу TCP, чтобы разбудить его на входящих звонках. Сокет TCP создается с этим фрагментом кода:

CFReadStreamRef read = NULL;
CFWriteStreamRef write = NULL;
...
CFStreamCreatePairWithSocketToHost(NULL,(__bridge CFStringRef)shost, port, &read, &write);
self.read = (__bridge NSInputStream*)read;
self.write = (__bridge NSOutputStream*)write;
if (![self.read setProperty:NSStreamNetworkServiceTypeVoIP
                     forKey:NSStreamNetworkServiceType]){
    [Log log:@"Could not set VoIP mode to read stream"];
}
if (![self.write setProperty:NSStreamNetworkServiceTypeVoIP
                      forKey:NSStreamNetworkServiceType]){
    [Log log:@"Could not set VoIP mode to write stream"];
}
self.read.delegate = self;
self.write.delegate = self;
CFRelease(read);
CFRelease(write);
[self.read scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[self.write scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[self.read open];
[self.write open];

Я также установил следующее:

VoIP & Audio in the info plist Keep alive timer using [UIApplication sharedApplication] setKeepAliveTimeout UIRequiresPersistentWiFi = YES in the info plist (quite sure it's not required, but...)

Это хорошо работает, когда приложение находится на переднем плане, и даже хорошо работает в фоновом режиме в течение нескольких минут, но через несколько минут - приложение не получает никаких новых сообщений TCP. Он не работает на Wi-Fi или 3G, один и тот же результат для обоих.

Я также попытался установить свойство только для потока чтения (хотя чтение и запись указывают на один и тот же сокет). Всякий раз, когда я получаю данные по TCP или отправляю данные, я также запускаю короткую фоновую задачу. Кстати - все происходит в основном потоке.
Я проверил, происходит ли сбой приложения, - это не так.
Такое же поведение можно наблюдать при отладке на устройстве - через некоторое время - ничего не получено (без сбоев, предупреждений, чего угодно).

Что я делаю неправильно?

Ответы на вопрос(3)

Ваш ответ на вопрос