Comment exécuter des services d’arrière-plan dans iOS en utilisant Swift


Débutons avec le mode arrière-plan

lorsque l'utilisateur n'utilise pas activement l'app pendant une longue période, le système passe à l'état d'arrière-plan.


et l'état d'arrière-plan arrête simplement le flux et suspend l'app. Suspendre l'app est le moyen d'augmenter l'autonomie de la batterie.

L'état d'arrière-plan permet à l'app de télécharger et de traiter régulièrement de petites quantités de contenu à partir du réseau.

Passons par xcode

Créer un nouveau projet Single View App

Hotkey : shift + command + N

main-qimg-f83377d683bb848971dbd6158eaf3fd3

Ajouter une capacité de mode d'arrière-plan

  • Choisir le projet
  • Ouvrir les capacités de la cible

main-qimg-5f287455b9748e9622ed66f4b89521ea

  • Activer les modes d'arrière-plan

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