logo
常见问题
当前页

如何处理 macOS 系统上 App Nap(App 小憩)的问题?

2021-09-09

问题描述

由于 macOS 系统上存在 App Nap(App 小憩)的机制,如果一些 App 窗口被置于后台一段时间不用、且窗口完全不可见,macOS 会置为 App 小憩状态。在此状态下,App 的 CPU 等系统资源的占用会受到限制,处于类似于“睡眠”的状态。

在这种情况下,有可能会出现 ZIM 长链接的心跳超时,导致连接断开的情况。

解决方案

开发者可以通过声明禁用 App Nap 的方式,来防止系统将应用进入小憩状态。

开发者如果需要禁用 App 小憩,只需要在 AppDelegate.m 文件里添加如下代码:

#include <Foundation/NSProcessInfo.h>
#include <Foundation/Foundation.h>

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    ......
    ......

    NSActivityOptions options = NSActivityUserInitiatedAllowingIdleSystemSleep;
    NSString *reason = @"ZIM needs it's network connection. NO NAPPING!";
    self.activity = [[NSProcessInfo processInfo] beginActivityWithOptions:options reason:reason];
}

- (void)applicationWillTerminate:(NSNotification *)aNotification {
    ......
    ......
    
    [[NSProcessInfo processInfo] endActivity:self.activity];
    self.activity = nil;
}

Previous

如何处理使用 OBS 推流,SDK 拉流时出现画面卡顿或音画不同步的问题?

Next

如何使用位掩码?

当前页

返回到顶部