2016-06-29 13 views
0

Ich bin neu in iOS und schnell mit etwas Erfahrung in Android. Ich benutze die GCDWebUploader. Es funktioniert gut.Wie setze ich GCDWebServerOption_AutomatischSuspendInBackground auf NO

Der Server wird angehalten, wenn sich die App im Hintergrund befindet. Ich bin mir der Einschränkungen in der iOS Hintergrundausführung bewusst. Ich möchte dieses Verhalten nicht ändern.

Aber ich habe in GCDWebServer Dokumentation gefunden, dass wir diese Aussetzung deaktivieren können. Überprüfen Sie hier https://github.com/swisspol/GCDWebServer#gcdwebserver--background-mode-for-ios-apps. Speziell dieser Teil

If the app goes in the background while no HTTP connections are opened, GCDWebServer will immediately suspend itself and stop accepting new connections as if you had called -stop (this behavior can be disabled with the ****GCDWebServerOption_AutomaticallySuspendInBackground**** option).

Wie stellen Sie diese Option ein. Ich habe versucht,

GCDWebServerOption_AutomaticallySuspendInBackground = "NO" 

Und ich bekomme die offensichtlichen Fehler:

Cannot assign to value: 'GCDWebServerOption_AutomaticallySuspendInBackground' is a 'let' constant

Antwort

1

Sie sollen Konfigurationsoptionen übergeben Sie ein NSDictionary mit dem folgende Verfahren aus einer GCDWebServer Instanz mit:

- (BOOL)startWithOptions:(NSDictionary*)options error:(NSError**)error; 

Edit: ein praktisches Beispiel mit einem on-the-fly Wörterbuch in Objective -C:

NSError*myError = nil; 
self.webServer = [[GCDWebServer alloc] init]; 
BOOL success = [self.webServer startWithOptions:@{ 
       GCDWebServerOption_AutomaticallySuspendInBackground : @(NO) 
       } error:&myError]; 

Swift Code

var myError: NSError? 
let webServer = GCDWebServer() 
webServer.startWithOptions([GCDWebServerOption_AutomaticallySuspendInBackground : false], error: myError) 

Ein kleiner Tipp: wenn Sie die GCDWebServer Protokollebene ändern Sie die statische Methode verwenden können:

[GCDWebServer setLogLevel:4]; 
+0

ja Ich konnte die Variable auf diese Weise setzen. Aber ich sehe keine Änderung in der Serveraussetzung. Es wird immer noch ausgesetzt, wenn im Hintergrund. Ich benutze den Webuploader - es funktioniert nicht so? Ich werde mehr darüber lesen. Ich füge dies als Antwort zwischenzeitlich hinzu. Vielen Dank! – lakvin

+0

Sobald ich es mit iOS 7 funktionierte, indem ich den Systemleerlauftimer deaktivierte: '[UIApplication sharedApplication] .idleTimerDisabled = YES;'. Ich bin mir allerdings nicht ganz sicher, ob es mit neueren iOS-Geräten richtig funktioniert, da sie eine bessere Energiesteuerung eingeführt haben. – lookaji

Verwandte Themen