2014-02-27 49 views
2

的,所以這是我的第一個問題,對不起,如果我沒有遵循任何指引。背景獲取調用一次ios7

我實現ios7背景在我的大app.But唯一的問題取的是,我必須做模擬在Xcode的位置。 我已經實施了類似於http://www.objc.io/issue-5/multitasking.html的代碼。

我的問題是 - 1)將在定期調用(可以說30秒)的設備上? 2)我是否需要模擬背景獲取始終在設備上進行測試?

回答

4

您應該使用模擬背景取功能來驗證它在後臺獲取執行的邏輯。即取出的任何代碼。

必須設置最小間隔取。通常情況下,所允許你將它設置爲UIApplicationBackgroundFetchIntervalMinimum去取爲經常

您可以設置它是這樣的:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum]; 

    return YES; 
} 

默認值是UIApplicationBackgroundFetchIntervalNever,因此,如果您不能設置的值在啓動時,您的應用永遠不會被喚醒以執行後臺提取。您提供的值是喚醒之間的最短秒數;但請注意,該值僅僅是建議性的 - 您的應用程序可能會執行更少或更頻繁的提取操作。

設置UIApplicationBackgroundFetchIntervalMinimum將確保您的應用程序作爲定期地叫,但在現實中,系統將最終決定。


source

+0

john:我已經實現並完成了你在代碼中告訴我的任何內容,並在ios7設備上安裝應用程序,但看起來它不是調用webservices :(。任何建議都將是可觀的。 – jevo

+1

按照這個教程,(閱讀所有內容)http://code.tutsplus.com/tutorials/ios-7-sdk-working-with-background-fetch--mobile-20520 – Woodstock

+0

關鍵是 - ios將調用背景定期取回方法,但不是在特定的時間間隔:)謝謝約翰 – jevo

1

您可以在performFetchWithCompletionHandler使用的NSTimer:

var time = NSTimer.scheduledTimerWithTimeInterval(callTime , target: self, selector: #selector(self.notific), userInfo: nil, repeats: true) 

    completionHandler(.NewData) 

,並把這個在didFinishLaunchingWithOptions:

application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum) 

的NSTimer會打電話給你的FUNC每callTime你想