2013-02-25 10 views
5

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? 
} 

Antwort

2

Von Apple ‚s Dokumentation:

The minimum acceptable timeout value is 600 seconds. 

EDIT in Bezug auf Ihren Kommentar

Ein VoIP-Verbindung ist ein (fast) normale Verbindung. Wenn Ihre eingehenden Daten vorliegen, setzt Ihre App die Ausführung im Hintergrund fort. Der Timeout-Handler ist für den Fall, dass Sie pingen wollen die andere Seite, um Zeitüberschreitung dort zu vermeiden. Ein bisschen mehr Informationen gibt TN 2277.

+0

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

+0

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

+1

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

Verwandte Themen