2015-06-17 68 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