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
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.");
}
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.
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")
}
Grazie, è stato utile. Tuttavia, puoi commentare la mia domanda dipendente a questo proposito - http://stackoverflow.com/questions/19235183/uiapplicationbackgroundrefreshstatusdidchangenotification-usage-without-correspo – Ashok
Salve, dovevo chiamare il loro metodo. In background non riesce a chiamare –
I ' m indovinare lo sfondo appRefresh non ha nulla a che fare con le notifiche silenziose, giusto? – Honey