2016-07-29 83 views
1

我在我的AppDelegate下面的代碼:迅速後臺取指不工作

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {   
     application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)) 

     application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum) 

     return true 
    } 

func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { 

    completionHandler(UIBackgroundFetchResult.NewData) 
    getData() 
} 

func getData(){ 

    // function that gets certain data from the server and notifies the 
    // user of the info fetched 
} 

我這裏面臨兩個問題:

  1. 的第一個問題是,後臺提取所從來沒有,除非執行我點擊「調試>模擬背景獲取」。我無限期地等待着它,它從來沒有被自己調用過。

  2. 第二個問題是,當我點擊模擬背景獲取,而我的應用程序仍然打開時,模擬器存在應用程序,然後執行後臺獲取,即使應用程序運行時後臺獲取仍應該工作並沒有關閉它。

我是否缺少任何與背景獲取相關的代碼?還是有任何錯誤的代碼?這是我編寫的唯一一個與後臺提取相關的代碼,而不是將背景提取添加到功能。

回答

1

Apple提供了一種算法,可以根據您自己對應用程序的使用情況來定義後臺提取應該觸發的頻率。如果你使用它很多,那麼它會盡可能頻繁地獲取,但如果你每天在下午四點使用,後臺提取應該在之前觸發,所以你的數據在啓動時會被更新。

檢查詳細的解答:Background fetch stops working after about 10 to 14 hours

+0

但如果用戶的手機系統決定觸發當用戶正在使用的應用程序在後臺讀取,完成這個關閉,他/她的應用程序,而他們在使用它? biz我想到了「模擬後臺獲取」類似於系統的執行情況,這就是當我運行「模擬後臺獲取」時發生的事情。 –

+0

如果用戶使用的應用程序,它不是後臺,所以永遠不會被觸發。 – Agreensh

0

有一個在iPhone設置的選項關閉後臺應用刷新,它負責調用後臺讀取,它也可以關閉全球範圍內爲所有的應用程序。

檢查設置>通用>後臺應用刷新

Background App Refresh Settings