Wir arbeiten an einer VoIP-Anwendung, wenn meine Anwendung Hintergrund geht, habe ich versucht, die setKeepAliveTimeout: Handler: um die Verbindung aufrecht zu erhalten. Laut der Apple-Dokumentation müssen sie mindestens 600 Sekunden als Timeout angeben. Tatsächlich halten wir weniger Timeout-Wert aufrecht, ist es möglich, mit weniger Timeout fertig zu werden?Wie verwendet man setKeepAliveTimeout: Handler - IOS?
Und wenn die Zeitüberschreitung trifft, wie verwende ich den Handler, um den Timer zurückzusetzen oder mehr Zeit zu verlangen, damit ich meine Verbindung immer am Leben erhalten kann (um eingehende Anrufe zu empfangen)?
Hier ist, was ich tue ...
- (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?
}
Haben Sie eine Idee, wie Sie den Timeout-Handler für VoIP-Anwendungen handhaben. Ich möchte mit dem Server verbunden bleiben und Benachrichtigungen über eingehende Anrufe erhalten. – Newbee
Können wir normale C++ - Socket (nicht objektive C-Socket-NSstream) als VoIP-Verbindungen verwenden. Wenn ja, können Sie mir in die richtige Richtung zeigen, wie es geht? – Newbee
Aus der Dokumentation von [Apple] (http://developer.apple.com/library/ios/#documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SocketsAndStreams/SocketsAndStreams.html): "In iOS wird von POSIX-Netzwerken abgeraten". Wenn Sie jedoch auf die harte Tour gehen wollen, können Sie es versuchen. Wenn Sie nur ObjC vermeiden möchten und mit C-Bindungen zufrieden sind, verwenden Sie [CFNetwork] (https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html). – Matthias