是' performFetchWithCompletionHandler'没有互联网连接时叫?

时间:2015-12-09 10:53:58

标签: ios objective-c ios8 ios9 uiapplicationdelegate

如果设备未连接到互联网,UIApplicationDelegate是否会致电performFetchWithCompletionHandler?在这种情况下,文档并不清楚。

2 个答案:

答案 0 :(得分:1)

经过一些测试,我可以声称如果设备未连接到互联网,则不会调用performFetchWithCompletionHandler委托方法。 在iOS8和iOS9上测试。

答案 1 :(得分:0)

下载完成后,

-application:performFetchWithCompletionHandler:不会被调用。系统调用它为您的应用提供下载数据的机会。您可以根据需要进行正常的错误处理。

-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    NSURL *URL = // Your URL
    [[[NSURLSession sharedSession] dataTaskWithURL:URL completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        if (error != nil) {
            // Handle Error
            completionHandler(UIBackgroundFetchResultFailed);
            return;
        }

        // Process the data
        completionHandler(UIBackgroundFetchResultNewData);
    }] resume];
}