Sto provando a consentire alla mia app di funzionare in background per più di 10 minuti, in base a questo e al mio bene di seguito. (Voglio utilizzare un lungo background in esecuzione per tenere traccia di una posizione, il mio codice qui semplicemente basta usare un contatore per scopi di test) Chiunque può aiutare a indicare qual è il problema?Applicazione iOS in background per più di 10 minuti
realizzazione di compiti di lungo corso sfondo
Per le attività che richiedono più tempo di esecuzione per attuare, è necessario richiesta autorizzazioni specifiche per farli funzionare in background senza loro essere sospesi. In iOS, tipi app solo specifici sono autorizzati a eseguire in background:
Apps che giocano contenuti udibile per l'utente, mentre sullo sfondo, come ad esempio un lettore musicale app
applicazioni che mantengono gli utenti informati la loro posizione in ogni momento, come ad esempio un'applicazione di navigazione
applicazioni che supportano Voice over Internet Protocol (VoIP)
app Edicola che hanno bisogno di scaricare ed elaborare nuove applicazioni di contenuti che ricevono aggiornamenti regolari da accessori esterni
Le app che implementano questi servizi devono dichiarare i servizi che supportano e utilizzare i framework di sistema per implementare gli aspetti rilevanti di tali servizi. La dichiarazione dei servizi consente al sistema di sapere quali servizi di si utilizzano, ma in alcuni casi sono le strutture di sistema che impediscono effettivamente la sospensione dell'applicazione.
- (void)viewDidLoad {
[super viewDidLoad];
counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
}];
count=0;
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
}
- (void)countUp {
{
count++;
NSString *currentCount;
currentCount=[[NSString alloc] initWithFormat:@"%ld",count];
theCount.text=currentCount;
[currentCount release];
}
}
un'altra domanda: posso avere un App iOS eseguito in background per sempre?
---- Codice modificato per aggiungere posizione, non funziona ancora per più di 10 minuti, qualsiasi aiuto a ciò che sto facendo male?
- (void)viewDidLoad {
[super viewDidLoad];
count=0;
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// If you're worried about exceeding 10 minutes, handle it here
[locationManager startUpdatingLocation];
}];
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
}
(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"OldLocation %f %f", oldLocation.coordinate.latitude, oldLocation.coordinate.longitude); NSLog(@"NewLocation %f %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
count++; NSString *currentCount;
currentCount=[[NSString alloc] initWithFormat:@"%ld",count];
theCount.text=currentCount; [currentCount release];
}
(void)countUp { [locationManager startUpdatingLocation];
{ count++; NSString *currentCount;
currentCount=[[NSString alloc] initWithFormat:@"%ld",count];
theCount.text=currentCount;
[currentCount release]; } }
Hai specificato quali applicazioni possono essere eseguite in background se l'app non rientra in una di queste categorie, quindi sei fuori se la fortuna. Non c'è modo di far sì che l'app venga eseguita in background per sempre. Apple non lo permetterà perché ucciderà la durata della batteria. Neanch'io, come utente, desidero mai un'applicazione come questa. Perché la tua app deve essere sempre in esecuzione ??? – rckoenes
appartiene specificamente alle categorie specificate (le app che tengono gli utenti sempre informati della loro posizione, come un'app di navigazione) quando eseguo il test delle attività in background del codice rimangono solo per 10 minuti, dovrei usare la posizione anche per test invece del solo contatore? – Ahmad
Se l'app utilizza la posizione in background, è necessario avviare 'CLLocationManager' per ricevere le principali modifiche alla posizione. Quindi la tua app verrà informata quando l'utente cambia posizione. – rckoenes