Come eseguire servizi in background in iOS usando Swift

Iniziamo con la modalità background

quando l'utente non usa attivamente l'app per molto tempo il sistema si sposta nello stato di background.

e lo stato di background ferma semplicemente il flusso e sospende l'app. Sospendere l'app è il modo per aumentare la durata della batteria.

background fetch permette all'app di scaricare ed elaborare regolarmente piccole quantità di contenuti dalla rete.

Passiamo attraverso xcode

Crea un nuovo progetto Single View App

Hotkey: shift + command + N

main-qimg-f83377d683bb848971dbd6158eaf3fd3

Aggiungi la capacità della modalità sfondo

  • Scegli il progetto
  • Apri le capacità dell'obiettivo

main-qimg-5f287455b9748e9622ed66f4b89521ea

  • Attiva le modalità sfondo

main-qimg-cb2a34d4dea11c45795d2bb25b947787

  • Check Background fetch

Open AppDelegate.swift file.

Modify code in file.

import UIKit

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

// Setup Fetch Interval

UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)

return true

}

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

// Create url which from we will get fresh data

if let url = URL(string: "Professionals developers in the IT sector") {

// Send request

URLSession.shared.dataTask(with: url, completionHandler: { (data, respone, error) in

// Check Data

guard let `data` = data else { completionHandler(.failed); return }

// Get result from data

let result = String(data: data, encoding: .utf8)

// Print result into console

print("performFetchWithCompletionHandler result: (String(describing: result))")

// Call background fetch completion with .newData result

completionHandler(.newData)

}).resume()

}

}

}

Run on simulator.

Yes. Now is nothing happened. We need to simulate bg fetch.

Simulate Background Fetch.

main-qimg-ae57646fc55ec5897f36e717a757cfcf

Test Background Fetch without App Starting

Setup application scheme

  • Open scheme settings
  • Open Options tab
  • Check Background Fetch

main-qimg-517db582515007922cb6157ebeaa8b39