iOS7 后台获取

Posted

技术标签:

【中文标题】iOS7 后台获取【英文标题】:iOS7 Background Fetch 【发布时间】:2013-10-07 19:23:47 【问题描述】:

我正在尝试实现新的 ios7 应用刷新。我不认为它工作正常。

我加到info.plist

必需的后台模式 - 应用从网络下载内容

在我的主视图控制器中,

    UIApplicationDelegate 设置为委托

    Viewdidload我输入[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:1.0];

    我添加如下方法

    - (void)application:(UIApplication *)application 
        performFetchWithCompletionHandler: 
        (void (^)(UIBackgroundFetchResult result))completionHandler 
            NSLog(@"Refresh from Background");
    
    

我插入我的 iPhone 并启动应用程序,然后我进入 Debug -> Simulate Background Fetch

NSLog 不打印。 (如果我的应用在前台,它会将其置于后台)

谢谢!

【问题讨论】:

【参考方案1】:

您可以从以下链接查看苹果的演示代码

http://adcdownload.apple.com/wwdc_2013/wwdc_2013_sample_code/52012_ios_simplebackgroundtransfer.zip

我尝试在我的应用程序的后台获取数据。它工作正常。

【讨论】:

您可以在 developer.apple.com/downloads/index.action# 中找到它并搜索 ios_simplebackgroundfetch 和 simplebackgrdountransfer - 这两个应该会在 WWDC 2013 示例中弹出【参考方案2】:

你应该添加

[application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];

在方法中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

也是这个方法

 (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult result))

completionHandler 应该添加到您的应用委托类中,而不是 UIViewController,请参阅本教程:http://www.objc.io/issue-5/multitasking.html

【讨论】:

我已经以这种方式实现了它,它仅在我从 Xcode 调用时才有效(模拟后台获取)。我从未收到来自设备的通知...

以上是关于iOS7 后台获取的主要内容,如果未能解决你的问题,请参考以下文章

应用程序未运行时的 iOS 7 后台获取

后台获取不更新 UI

执行后台获取完成处理程序后应用程序崩溃

使用 UILocalNotifications、带有完成处理程序的远程通知和后台获取

iOS 中的后台获取和后台传输以在后台下载数据 (JSON)

在 iOS 中,后台提取多久执行一次?