29

Sto lavorando a un gioco per dispositivi mobili che si interrompe in modo anomalo quando viene visualizzato l'avviso di batteria scarica. Funziona bene con poca memoria, chiamate in arrivo e altri messaggi.Simulazione della batteria scarica per iPhone

È un problema provare e eseguire il debug di questo, dal momento che non riesco a trovare simulatore di terminale o simulatore iPhone per simulare questa situazione, quindi devo caricare un po 'il mio telefono, avviare l'app, attendere che si svuoti potere, e ricominciare tutto da capo.

Qualcuno sa di un modo per produrre questo errore in modo realistico? Speriamo che qualcosa non sia troppo stressante sulla batteria del mio iPhone.

+0

buona domanda. Ho avuto un problema simile –

+0

Quando si blocca? Quando ricevi "avvisi di batteria scarica" ​​o qualcos'altro? –

+0

Proprio quando compare l'avviso blu, l'app si arresta in modo anomalo. L'avviso della batteria rimane acceso. –

risposta

10

Sfortunatamente, non esiste un buon modo per simulare un ambiente con batteria scarica. In realtà è molto probabile che tu debba caricare fisicamente la batteria del tuo dispositivo fino a quando non si trova appena sopra lo stato di "batteria scarica" ​​e quindi eseguire il debug dell'applicazione.

per affrontare quello che altri hanno detto:

  1. Non v'è alcun modo per simulare le notifiche di batteria scarica. Il progetto che @Bo. fornito non fa altro che programmare casualmente UILocalNotifications. Non è molto diverso dal semplice che mostra un UIAlertView nella tua app.
  2. Si potrebbe provare cosa ha detto @Andrew R. e utilizzare i metodi privati ​​disponibili nello UIDevice header. Ma è dubbio che si possa esattamente imitare gli effetti di un vero ambiente di batteria scarica .

Sebbene sia un problema dover aspettare che il dispositivo colpisca effettivamente lo stato di basso livello di carica della batteria, è possibile aggiungere un codice di batteria scarica alla tua app per aiutarti. Ad esempio, l'utilizzo del GPS potrebbe scaricare la batteria un po 'più rapidamente.

Buona fortuna.

1

Hai provato a simulare le notifiche di batteria scarica? Sembra che ci sia un progetto che lo fa: https://github.com/MegaEduX/LowBattery

+0

Purtroppo questo non sembra davvero produrre un risultato realistico per me ... Sembra solo che simuli l'avviso, e non fa crash della mia app, e questo si verifica ancora su un iphone "reale" in esecuzione basso potere. –

-2

assumendo questo è solo a scopo di test, si potrebbe dare i seguenti metodi privati ​​ una prova:

-(void)_setBatteryState:(int)state; 
-(void)_setBatteryLevel:(float)level; 

Dovrete sperimentare per vedere che cosa i parametri che si aspettano o se hanno un impatto.

+1

mentre la funzione '_setBatteryLevel' è disponibile per categoria, e mentre in quel cateogory, chiamando' [self performSelector: @selector (_setBatteryLevel :) withObject: [NSNumber numberWithFloat: 0.01]] 'causerà il valore restituito da' [[UIDevice currentDevice] batteryLevel] 'per restituire il valore inviato, non attiverà un avviso di memoria insufficiente. –

+0

@ john.k.doe hai provato a impostarlo su 25, 20? Ho sentito che l'avviso di batteria scarica viene attivato all'intervallo del 5% e l'avviso viene visualizzato solo quando raggiunge il limite di livello – onmyway133

0

In iOS c'è modo per simulare "Low Battery"

monitoraggio della batteria si attiva impostando su YES una proprietà del Singleton UIDevice:

UIDevice *device = [UIDevice currentDevice]; 
device.batteryMonitoringEnabled = YES; 

iOS fornisce due tipi di eventi di monitoraggio della batteria, uno per quando cambia lo stato (ad esempio, carica, scollegato, completamente carico) e uno che si aggiorna quando il livello di carica della batteria cambia. Come nel caso del monitoraggio di prossimità, si registrano i callback per ricevere notifiche:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryLevelDidChangeNotification" object:device]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryStateDidChangeNotification" object:device]; 
Problemi correlati