没有互联网连接时是不是调用“performFetchWithCompletionHandler”?

Posted

技术标签:

【中文标题】没有互联网连接时是不是调用“performFetchWithCompletionHandler”?【英文标题】:Is 'performFetchWithCompletionHandler' called when no internet connection?没有互联网连接时是否调用“performFetchWithCompletionHandler”? 【发布时间】:2015-12-09 10:53:58 【问题描述】:

如果设备未连接到互联网,UIApplicationDelegate 会呼叫performFetchWithCompletionHandler 吗?在这种情况下,文档不清楚。

【问题讨论】:

performFetchWithCompletionHandler 被系统调用以给您的应用程序一些处理时间来更新自身。它与下载失败无关。你不是指- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)())completionHandler吗? 【参考方案1】:

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

【讨论】:

【参考方案2】:

下载完成后不会调用-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];

【讨论】:

以上是关于没有互联网连接时是不是调用“performFetchWithCompletionHandler”?的主要内容,如果未能解决你的问题,请参考以下文章

检查是不是有互联网连接 webView 没有出现

Game Center 分数同步是不是适用于沙盒帐户?

如何通过从服务器调用 gif 来检查是不是有连接互联网连接?

核心数据 - 在 vi​​ewDidLoad 之前调用数据源方法

检查是不是连接到 WiFi(即使没有互联网)或移动数据

如何在连接互联网时运行服务?