Pracujemy nad aplikacją VoIP, kiedy moja aplikacja działa w tle, próbowałem użyć setKeepAliveTimeout: handler: aby utrzymać połączenie przy życiu. Zgodnie z dokumentacją Apple, prosi o podanie co najmniej 600 sekund jako czasu oczekiwania. W rzeczywistości utrzymujemy mniejszą wartość limitu czasu, czy można obsłużyć mniej czasu?Jak korzystać z setKeepAliveTimeout: handler - IOS?
A jeśli przekroczony zostanie limit czasu, jak korzystać z funkcji obsługi, aby zresetować licznik czasu lub zażądać więcej czasu, aby utrzymać połączenie przy życiu (aby odbierać połączenia przychodzące)?
Oto co robię ...
- (void)applicationDidEnterBackground:(UIApplication *)application
{
BOOL backgroundAccepted = [[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }];
if (backgroundAccepted)
{
NSLog(@"VOIP backgrounding accepted");
}
}
- (void)backgroundHandler {
NSLog(@"### -->VOIP backgrounding callback"); // What to do here to extend timeout?
}
Czy masz pojęcie, jak obsługiwać handler z limitem czasu dla aplikacji VoIP. Chcę pozostać w kontakcie z serwerem i otrzymywać powiadomienia o przychodzących połączeniach? – Newbee
Czy możemy używać normalnego gniazda C++ (nieobiektywnego C-socket-NSstream) jako połączeń VoIP. Jeśli tak, czy możesz wskazać mi właściwy kierunek, jak to zrobić? – Newbee
Dokumentacja [Apple's] (http://developer.apple.com/library/ios/#documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SocketsAndStreams/SocketsAndStreams.html): "W iOS odradza się tworzenie sieci POSIX". Jednakże, jeśli chcesz pójść twardo, możesz spróbować. Jeśli chcesz tylko uniknąć ObjC i jesteś zadowolony z powiązań C, użyj [CFNetwork] (https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html). – Matthias