Cómo ejecutar servicios de fondo en iOS usando Swift

Déjame empezar con el modo de fondo

cuando el usuario no está usando activamente la app durante mucho tiempo el sistema pasa al estado de fondo.

Y el estado de fondo simplemente detiene el flujo y suspende la app. suspender la app es la forma de aumentar la vida de la batería.

background fetch permite que la app descargue y procese regularmente pequeñas cantidades de contenido de la red.

Vamos a pasar por xcode

Crea un nuevo proyecto de Single View App

Hotkey: shift + command + N

main-qimg-f83377d683bb848971dbd6158eaf3fd3

Añadir capacidad de modo de fondo

  • Elegir proyecto
  • Abrir capacidades del objetivo

main-qimg-5f287455b9748e9622ed66f4b89521ea

  • Activar modos de fondo
    • 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