46

从 iOS 7 开始,Apple 的多任务 API 允许应用程序以三种新的后台模式运行:后台获取、远程通知内容和后台传输服务。Apple 还让 iOS 用户能够控制是否允许所有应用程序在后台运行,或者单个应用程序是否可以在后台运行(设置 > 常规 > 后台应用程序刷新)。我的应用程序是否有办法以编程方式检测用户是否禁用了我的应用程序在后台刷新的能力?

4

3 回答 3

80

这就是你要找的。

if ([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusAvailable) {

    NSLog(@"Background updates are available for the app.");
}else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusDenied)
{
    NSLog(@"The user explicitly disabled background behavior for this app or for the whole system.");
}else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusRestricted)
{
    NSLog(@"Background updates are unavailable and the user cannot enable them again. For example, this status can occur when parental controls are in effect for the current user.");
}
于 2013-10-02T13:44:28.877 回答
9

为 Swift 3 和 iOS10 更新:

switch UIApplication.shared.backgroundRefreshStatus {
case .available:
    print("Refresh available")
case .denied:
    print("Refresh denied")
case .restricted:
    print("Refresh restricted")
}
于 2017-02-10T02:53:33.433 回答
8

检查 UIApplication 的 backgroundRefreshStatus 属性。以下内容引用自苹果文档。

该属性反映应用程序是否可以启动到后台以处理后台行为,例如处理后台位置更新和执行后台获取。如果您的应用程序依赖于在后台启动来执行任务,您可以使用此属性的值来确定是否可以这样做,如果不可以,则警告用户。如果此属性的值设置为 UIBackgroundRefreshStatusRestricted,则不警告用户;受限用户无法为应用启用多任务处理。

于 2013-09-27T13:02:19.353 回答