mia app ottenuto respinto da Apple per tre volte, tutte con la stessa lettera di rifiuto, che è:Come usare correttamente posizione in background - app ottenuto rifiutato 3 volte
Abbiamo scoperto che la vostra applicazione utilizza una modalità di sfondo ma non include la funzionalità che richiede che la modalità venga eseguita in modo persistente. Questo comportamento non è conforme alle Linee guida per la recensione di App Store.
Abbiamo notato che l'app dichiara il supporto per la posizione nella chiaveUIBackgroundModes nel file Info.plist ma non include le funzioni che richiedono la posizione permanente.
Sarebbe opportuno aggiungere funzionalità che richiedono aggiornamenti di posizione mentre l'app è in background o rimuovere l'impostazione "posizione" dalla chiave UIBackgroundModes.
Se si sceglie di aggiungere funzioni che utilizzano la modalità di posizione di sfondo, si prega di includere le seguenti batterie uso dichiarazione di non responsabilità nella vostra Applicazione Descrizione:
"L'uso prolungato del GPS in background può drasticamente diminuzione la durata della batteria ".
Per informazioni sulle modalità di background, fare riferimento alla sezione "Esecuzione del codice in background" nella libreria di riferimento iOS.
Ora, per quanto ne so io sono in esecuzione sullo sfondo e "fare qualcosa" ... Nel mio AppDelegate ho il seguente codice nel didFinishLaunchingWithOptions:
if ([[launchOptions allKeys] containsObject:UIApplicationLaunchOptionsLocationKey] &&
([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]))
{
id locationInBackground = [launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey];
if ([locationInBackground isKindOfClass:[CLLocation class]])
{
[self updateMyLocationToServer:locationInBackground];
}
else
{
//Keep updating location if significant changes
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
self.bgLocationManager = locationManager;
self.bgLocationManager.delegate = self;
self.bgLocationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[bgLocationManager startMonitoringSignificantLocationChanges];
}
}
L'AppDelegate inizia anche un responsabile della posizione e si fa delegato. Poi, ho il seguente codice per la gestione degli aggiornamenti sulla posizione sullo sfondo:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
[self updateMyLocationToServer:newLocation];
}
-(void)updateMyLocationToServer:(CLLocation*)myNewLocation
{
// NSLog(@"Updating Location from the background");
NSString *fbID = [NSString stringWithString:[facebookDetails objectForKey:@"fbID"]];
NSString *firstName = [NSString stringWithString:[facebookDetails objectForKey:@"firstName"]];
NSString *lastName = [NSString stringWithString:[facebookDetails objectForKey:@"lastName"]];
NSString *urlString = [NSString stringWithFormat:@"MY_SERVER_API", fbID, myNewLocation.coordinate.latitude, myNewLocation.coordinate.longitude, firstName, lastName];
NSURL *url = [NSURL URLWithString:urlString];
__block ASIHTTPRequest *newRequest = [ASIHTTPRequest requestWithURL:url];
[newRequest setCompletionBlock:^{
}];
[newRequest setFailedBlock:^{
}];
// [newRequest setDelegate:self];
[newRequest startAsynchronous];
}
ho anche messo un disclaimer nella mia descrizione dell'app pagina:
uso intensivo del GPS in background può ridurre drasticamente la durata della batteria. Per questo motivo, MY_APP_NAME viene eseguito sullo sfondo solo in attesa di modifiche significative alla posizione.
C'è qualcosa che mi manca qui?
Una "modalità di sfondo" non significa qualcosa che è ancora in esecuzione dopo che l'utente è uscito dall'app? – cgull
@thephpdeveloper Grazie per avermelo detto. Essendo abbastanza nuovo per StackOverflow, non ero a conoscenza di questo sistema. – Giovanni
@cgull Non sono sicuro. Voglio dire, non sta registrando abbastanza bene l'aggiornamento della posizione? Poi, quando c'è una nuova posizione, la mia app si risveglia in stato attivo in background e quindi ho la possibilità di fare qualcosa, come registrare la mia nuova posizione sul mio server. Questo è quello che pensavo ... – Giovanni