2013-08-29 15 views
40

A partire da iOS 7, le API di multitasking di Apple consentono alle app di essere eseguite in tre nuove modalità in background: recupero in background, contenuto di notifica remota e servizio di trasferimento in background. Apple offre inoltre agli utenti iOS la possibilità di controllare se tutte le app possono essere eseguite in background o se le singole app possono essere eseguite in background (Impostazioni> Generali> Aggiornamento app in background). C'è un modo per la mia app di rilevare a livello di codice se l'utente ha disabilitato la capacità della mia app di aggiornare in background?Rilevamento delle impostazioni utente per Aggiornamento app in background in iOS 7

risposta

69

questo è quello che stai cercando.

if ([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusAvailable) { 

    NSLog(@"Background updates are available for the app."); 
}else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusDenied) 
{ 
    NSLog(@"The user explicitly disabled background behavior for this app or for the whole system."); 
}else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusRestricted) 
{ 
    NSLog(@"Background updates are unavailable and the user cannot enable them again. For example, this status can occur when parental controls are in effect for the current user."); 
} 
+2

Grazie, è stato utile. Tuttavia, puoi commentare la mia domanda dipendente a questo proposito - http://stackoverflow.com/questions/19235183/uiapplicationbackgroundrefreshstatusdidchangenotification-usage-without-correspo – Ashok

+0

Salve, dovevo chiamare il loro metodo. In background non riesce a chiamare –

+0

I ' m indovinare lo sfondo appRefresh non ha nulla a che fare con le notifiche silenziose, giusto? – Honey

8

Controllare la proprietà backgroundRefreshStatus di UIApplication. Quanto segue è riportato nel documento Apple.

Questa proprietà riflette se l'app può essere avviata in background per gestire i comportamenti in background, come l'elaborazione degli aggiornamenti di posizione in background e l'esecuzione di recuperi in background. Se la tua app si basa sul lancio in background per eseguire attività, puoi utilizzare il valore di questa proprietà per determinare se è possibile farlo e avvisare l'utente se non lo è. Non avvisare l'utente se il valore di questa proprietà è impostato su UIBackgroundRefreshStatusRestricted; un utente con restrizioni non ha la possibilità di abilitare il multitasking per l'app.

3

aggiornato per Swift 3 e iOS10:

switch UIApplication.shared.backgroundRefreshStatus { 
case .available: 
    print("Refresh available") 
case .denied: 
    print("Refresh denied") 
case .restricted: 
    print("Refresh restricted") 
} 
Problemi correlati