【问题标题】:How to set GCDWebServerOption_AutomaticallySuspendInBackground to NO如何将 GCDWebServerOption_AutomaticallySuspendInBackground 设置为 NO
【发布时间】:2016-11-01 05:57:19
【问题描述】:

我是 iOS 新手,并且在 android 方面有一些经验。我正在使用GCDWebUploader。它工作正常。

当应用程序处于后台时,服务器会挂起。我知道 iOS 后台执行中的限制。我不想改变这种行为。

但我在 GCDWebServer 文档中发现我们可以禁用此暂停。在这里查看https://github.com/swisspol/GCDWebServer#gcdwebserver--background-mode-for-ios-apps。特别是这部分

如果应用程序在没有打开 HTTP 连接的情况下进入后台,GCDWebServer 将立即挂起并停止接受新连接,就像您调用了 -stop 一样(此行为可以通过 ****GCDWebServerOption_AutomaticallySuspendInBackground 禁用**** 选项)

如何设置此选项。我试过了

GCDWebServerOption_AutomaticallySuspendInBackground = "NO"

我得到了明显的错误:

无法赋值: 'GCDWebServerOption_AutomaticallySuspendInBackground' 是一个'让' 常数

【问题讨论】:

    标签: ios gcdwebserver


    【解决方案1】:

    您应该使用 NSDictionary 从 GCDWebServer 实例中使用以下方法传递配置选项:

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

    编辑:一个在 Objective-C 中使用 on-the-fly 字典的实际示例:

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

    Swift 代码

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

    小提示:如果你想改变 GCDWebServer 的日志级别,可以使用静态方法:

    [GCDWebServer setLogLevel:4];
    

    【讨论】:

    • 是的,我能够以这种方式设置变量。但我没有看到服务器暂停有任何变化。在后台时它仍然会暂停。我正在使用 webuploader - 它不会那样工作?将做更多的阅读。同时,我将其添加为答案。谢谢!
    • 一旦我通过禁用系统空闲计时器让它与 iOS 7 一起工作:[UIApplication sharedApplication].idleTimerDisabled = YES;。不过,我不太确定它是否适用于较新的 iOS,因为它们引入了更好的能量控制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多