2015-06-17 38 views
1

我使用Parse.com作为我的后端,并希望在应用程序进入后台时更新数据库中的内容(徽章计数)。我在下面使用这个代码。我知道这只允许5秒的操作时间。有没有办法延长这个时间?保存到Parse.com数据库在applicationDidEnterBackground

- (void)applicationDidEnterBackground:(UIApplication *)application { 

    PFInstallation *currentInstallation = [PFInstallation currentInstallation]; 
    curentInstallation.badge = self.messageCount; 
    currentInstallation.badge = 0; 
    [currentInstallation saveEventually]; 

} 

我也看过:如果您的应用程序支持后台运行,这种方法被调用,而不是applicationWillTerminate:当用户退出。通过支持后台执行,是否意味着在Plist中启用了值,并且用户允许后台执行,还是指的是旧版本的iOS不做背景?任何指针都会很棒。感谢

回答

1

你应该看看:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

的示例代码展示了如何创建一个后台任务。在那里你可以使用普通的Parse API和回调函数。在此回调中,您必须致电

[application endBackgroundTask:bgTask]; 
bgTask = UIBackgroundTaskInvalid; 

让iOS知道,完成后。

你还应该利用backgroundTimeRemaining并安排一个定时器火灾事件,然后你没有剩下任何时间,并确保你打电话saveEventually,所以解析可以(在这种情况下)至少保存下次更改用户打开你的应用!

+0

一直在看bgTask = [应用程序beginBackgroundTaskWithName:@“MyTask”expirationHandler:^,我在哪里声明MyTask?这是一种方法吗?只是不明白那部分代码。 – Kex

+0

“MyTask”只是您提供用于调试的名称。 From Docu:“在查看后台任务时显示在调试器中的名称,如果为该参数指定nil,则此方法根据调用函数或方法的名称生成名称。” –

+0

感谢哥们。是否需要启用应用程序后台模式(在Plist中)才能使用? – Kex